Authentication

Keys, projects, rate limits and safe retries. Every request carries a bearer token; everything else on this page exists to stop you being billed twice.

Bearer tokens

Every request needs an Authorization header:

Authorization: Bearer sv_live_…

The secret is shown once when the key is created and never again — we store only a SHA-256 hash, so support cannot recover it for you either. Lost keys get revoked and replaced, not recovered.

Never put a key in a URL. Query strings end up in proxy logs, browser history and Referer headers. It belongs in the header.

Projects

Keys belong to a project, and usage is recorded against that project. A new account starts with one called Default, which is all most people ever need. Separate projects are useful when you want per-client or per-environment usage broken out — the reporting follows the key.

Rate limits

Limits are per project and scale with your plan:

Plan Requests / minute
Free 30
Builder 120
Growth 240
Higher volume Set per account

Every response carries the current state:

X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
X-RateLimit-Reset: 1756290000

Exceeding the limit returns 429 with a Retry-After header. A 429 is never billed.

Rate limits and credits are separate things. Running out of credits does not stop your requests — they bill as overage. Running out of rate does.

Idempotency

Send an Idempotency-Key header on any request you might retry:

Idempotency-Key: 3f9a2c81-b4e0-7d15-9c2a-0e4482118893

Behaviour is exact, so you can rely on it:

Situation Result
Same key, same request The original response, replayed. No second charge.
Same key, different request 409 Conflict
Key older than 24 hours Treated as new

The 409 is deliberate. Reusing one key for two different requests is a client bug, and quietly returning the first response would hide it from you.

Keeping keys safe

Last updated 27 August 2026