Search & Discovery
These endpoints power package discovery. club is a private repository, so they require authentication (a Bearer PAT or a session cookie). The search engine uses SQLite FTS5 by default, with an optional Meilisearch backend for larger deployments.
When public packages are enabled, these endpoints also answer anonymous callers, with results filtered to packages marked public. An authenticated caller sees everything they have access to, as before. Either way, discontinued and unlisted packages are excluded for every caller.
Search Packages
GET /api/search?q=<query>&page=<n>&sort=<field>Full-text search across package names, descriptions, and README content.
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | (none) | Free-text search query |
page | integer | 1 | Page number (1-indexed) |
sort | string | relevance | One of relevance, updated, created, likes. Any other value falls back to relevance |
Response: 200 OK
{ "packages": [ { "package": "http", "score": 0.95 }, { "package": "http_parser", "score": 0.82 }, { "package": "dio", "score": 0.71 } ], "totalCount": 42, "page": 1, "pageSize": 20}Query Syntax
The q value is a free-text query matched across the package name,
description, README excerpt, tags, and topics via SQLite FTS5. When q
is empty or omitted, the endpoint returns the full package list ordered
by sort. Discontinued packages are excluded from search results.
List All Packages
GET /api/packages?page=<pageToken>&compact=1Returns a paginated list of package names without a search query. page
is an opaque cursor token (the nextPageToken returned by a previous
call), not a numeric page index. The page size is 100.
Passing compact=1 returns the same payload as
/api/package-name-completion-data: every
package name, up to 10,000, with no totalCount.
Response: 200 OK
{ "packages": [ "crypto", "dio", "http", "my_package" ], "totalCount": 4}Package Name Completion
GET /api/package-name-completion-dataReturns an array of every package name on the server, up to a maximum of 10,000 names. Used by the web UI for autocomplete.
{ "packages": [ "crypto", "dio", "http", "http_parser", "json_annotation", "shelf" ]}