Onboarding

Claim an API Key

Authentication: none from the caller — claims go through the form on the Get an API Key page, whose gateway checks for a human (Turnstile) and confirms the email with a 6-digit code, then forwards the claim here with a gate header. Called directly, this endpoint answers 403 ONBOARDING_GATE_REQUIRED. A Telegram handle is optional and not verified. 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

403

Not forwarded by the claim form's gateway (ONBOARDING_GATE_REQUIRED)

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