| Scheme | Used by | Header |
|---|---|---|
API key (sk_live_*) | All generation, run, and file endpoints | X-API-Key: sk_live_... (or Authorization: Bearer sk_live_...) |
| Firebase ID token | /signup and key-management endpoints | Authorization: Bearer <firebase_token> |
Key format
API keys have the formatsk_live_<28 alphanumeric chars> and bill against
your org.
We only ever store sha256(key). The raw secret is returned once at
creation time and cannot be retrieved later. If you lose a key, revoke it
and mint a new one.
Signing up
A docs-only developer can go from zero to a usable API key with one POST.Get a Firebase ID token
Sign in via the Overten dashboard or with Firebase’s web SDK. See
the Quickstart for both flows.
Call POST /signup
org_id, secret (the sk_live_* key), and
webhook_secret. Store the secret somewhere safe — it is shown once.existing_org_id instead of org_name and the signup will light up API
access on that org instead of creating a second one.
Creating additional keys
You probably want separate keys per service or deployment environment:/signup — the secret field is present exactly once.
Listing keys
prefix is shown; the raw secret
is never re-exposed, even to the key’s creator.
Revoking keys
Revocation takes effect immediately; subsequent requests with that key return401 invalid_api_key.
204 No Content.
Rotating keys
- Mint a new key via
POST /.../api-keys. - Deploy the new key to your services.
- Once all traffic uses the new key, revoke the old one.
Security hygiene
Never commit live keys to source control
Never commit live keys to source control
Treat
sk_live_* like a database password. Use a secret manager (AWS
Secrets Manager, Doppler, 1Password, Vault, etc.) in production.Report leaks immediately
Report leaks immediately
If you think a key has leaked, revoke it via the dashboard or DELETE
endpoint, and then email [email protected] — we can audit the
affected key’s usage for anomalies.
Use separate keys per environment
Use separate keys per environment
One key per environment (prod / staging / CI) limits the blast radius
of a leak. Rotate independently.
Scope is per-org, not per-key
Scope is per-org, not per-key
Any key belonging to an org has the same permissions on that org. We
don’t (yet) support scoped keys that only touch specific formats. If
you need that, email us and tell us the use case.
Verifying a key works
Before shipping, confirm end-to-end with:/verify is the cheapest call in the API — use it in health checks.
Continue to Runs and tasks for how we model work, or jump straight to Format guides for end-to-end examples.
