Authentication and limits
Sending your key
Every call to /graphql and /mcp needs an API key. Send it as a bearer token:
Authorization: Bearer rdb_…
Clients that can only set a custom header can use X-Api-Key: rdb_… instead. Create, name and revoke keys on your account page. We store only a SHA-256 hash of each key, so a lost key can't be recovered; revoke it and create another.
The docs, /schema.graphql and /llms.txt are public and need no key.
Limits
| Plan | Requests per day | Requests per minute | Photo checks per day |
|---|---|---|---|
| Free | 1,000 | 60 | 25 |
- Limits apply to your account: all your keys share them.
- One GraphQL HTTP request counts as one request, however many fields it asks for. Over MCP, each
tools/callcounts as one;initialize,tools/listand reading the schema resource are free. - Photo checks (
identifyCard,identifyCards(one per card identified),assessCondition,checkAuthenticity, and their MCP, CLI and Studio equivalents) have their own daily allowance, because each runs a vision model. One counts only when it returns a result; a rejected photo or an outage costs nothing.viewer { visionRemaining }andraritydb whoamishow what's left. - The daily count resets at midnight UTC. Your account page shows today's usage and the last 30 days.
- Queries are also limited in size: depth 15, complexity 5,000, and at most 100 items per page.
Every successful response carries:
X-RateLimit-Limit: 1000 # your daily limit
X-RateLimit-Remaining: 987 # left today
Errors
A missing, wrong or revoked key gets 401:
{ "errors": [ { "message": "Send your API key as `Authorization: Bearer rdb_…` …", "extensions": { "code": "UNAUTHENTICATED" } } ] }
Going over a limit gets 429 with a Retry-After header (seconds) and one of these codes:
RATE_LIMITED: more than 60 requests in a minute. Wait and retry.QUOTA_EXCEEDED: the day's requests are used up. Retry after midnight UTC.
See Errors, terms and attribution for GraphQL-level errors.
This page as Markdown: /docs/authentication.md