Onboarding

Claim an API Key

Authentication: none — leaving a reachable contact email is the gate (a Telegram handle is optional). Returns a working API Key immediately; there is no review step. Rate limits and expiry are set by the server, and only read-only scopes can be requested. Throttled per source IP, and the limiter fails closed. One live key per contact (not per person — contacts are unverified, so several addresses mean several keys): while an active key is issued to the same email or Telegram handle the claim is refused with 409; revoke that key with DELETE /tokens (authenticated with it) or wait for it to lapse to claim again; a lost key can only be revoked by an operator. The full key is shown once and cannot be recovered. Callers holding a signed payment token should use POST /tokens instead, which lets them choose their own limits.

post /onboarding/claim

Bodyapplication/json

email string required

Contact email. Required, recorded, not verified.

scopes string[] required

Bare scope names (tools:read), without limits — the server sets those.

telegram string | null

Optional Telegram handle, with or without a leading @.

201application/json

API Key issued

expires_at string | null
key_id string required
scopes string[] required

Scopes as issued, including the server-assigned limits.

token string required

The full key. Returned once and never recoverable.

400

Invalid contact details or scope payload

409

A key is already issued to this email or Telegram handle and is still active. Not an error to retry: keep using the existing key, or have it revoked, or wait for it to expire.

429

Too many requests from this IP

500

Internal server error