API plans
A key raises limits. It is never required.
Every public endpoint — the exports, the change feed, Preflight, the router, the registry search, MCP — answers callers with no key at all, at the limits in the Free column. A key does two things: it raises those limits, and it puts your name on your usage instead of an anonymous user-agent. Nothing behind a key today was free yesterday.
| Limit | FreeEverything the site serves today, with no key and no account. | ProFor one team's CI and agents: bigger manifests, more live checks, more watches. | TeamFor a platform serving many repos: room to run the whole dependency graph. |
|---|---|---|---|
| Requests per day (per surface) | Uncounted | 20,000 | 200,000 |
| Preflight batch targets | 50 | 500 | 2,000 |
| Live checks per batch | 10 | 50 | 200 |
| Open Preflight watches | 5 | 100 | 1,000 |
| Priority preflight lane | — | Yes | Yes |
| Paid depth endpoint | — | Included | Included |
| Price | Free, no account | $99 / monthChoose Pro | $299 / monthChoose Team |
Using a key
Create one at your keys, then send it on either header. It is shown once and stored only as a hash — we cannot read it back to you.
curl -H "Authorization: Bearer sk_sato_…" \ https://satohub.ai/api/export/index.json # or curl -H "X-Sato-Key: sk_sato_…" …
Full reference: the OpenAPI document.