Search & Discovery
These endpoints power package discovery. They are public β no authentication required. The search engine uses SQLite FTS5 by default, with an optional Meilisearch backend for larger deployments.
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 | "" | Search query (supports tag filters, see below) |
page | integer | 1 | Page number (1-indexed) |
sort | string | relevance | One of relevance, updated, created, likes |
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
Plain text is matched across name, description, and README. Filters can be combined in any order:
http client # free-textsdk:dart # SDK filtersdk:flutter # SDK filterplatform:android # platform: android|ios|web|linux|macos|windowsis:discontinued # status filterhttp sdk:flutter platform:web # combinedList All Packages
GET /api/packages?page=<n>&compact=1Returns a paginated list of packages without a search query. Pass compact=1 for a reduced payload (names and the latest version only).
Response: 200 OK
{ "packages": [ { "name": "my_package", "latest": { "version": "2.1.0", "archive_url": "https://club.example.com/api/archives/my_package-2.1.0.tar.gz", "archive_sha256": "a1b2c3d4...", "pubspec": { "name": "my_package", "version": "2.1.0" }, "published": "2026-04-01T10:00:00.000Z" } } ], "totalCount": 2, "page": 1, "pageSize": 20}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" ]}