Authorization header:
Method 1 — API key (Bearer)
API keys live in Settings → API Keys. Each key has:Send the key
Rotate a key
- In the dashboard, click Rotate on the key you want to replace.
- The new key is shown once. Update your secrets store immediately.
- The old key keeps working for a 24-hour grace window. After that it returns
UNAUTHORIZED.
Store keys safely
- Backend: load from your secret manager (AWS Secrets Manager, GCP Secret Manager, Doppler, 1Password Connect). Never commit to git.
- Local dev: use a
.envfile ignored by git, or your shell’s keychain. - CI: provision as a masked secret in GitHub Actions / GitLab CI / etc.
Method 2 — JWT (end-user, short-lived)
If your product makes Kynva calls on behalf of an end user (e.g., a browser app where the user pays per render), use JWTs instead of API keys.How it works
- Configure your JWT issuer in Settings → Auth — issuer URL + JWKS endpoint.
- Your backend mints a JWT for the requesting user. Include:
sub— the user’s stable ID in your systemaud: "kynva"exp— short. 5–15 minutes is typical.
- Pass the JWT as the bearer token.
Send the JWT
JWT requirements
Tokens with missing or invalid claims are rejected with
UNAUTHORIZED.
Verifying a request succeeded
A successful authenticated request includes:Frequently asked
My legacy rf_live_ key — do I need to migrate?
My legacy rf_live_ key — do I need to migrate?
No. Legacy
rf_* keys keep working indefinitely. New keys are issued with the kyn_ prefix. Nothing about the wire protocol changed.Can I scope a key to a single brand?
Can I scope a key to a single brand?
Yes. In the dashboard, edit a key and add
brand:brand_abc to its scope. The key will return FORBIDDEN if used against any other brand.Do test keys (kyn_test_) talk to the same backend?
Do test keys (kyn_test_) talk to the same backend?
Yes. Same backend, same code, but renders made with a test key are watermarked and don’t consume credits.
What's the rate limit per key vs per workspace?
What's the rate limit per key vs per workspace?
Limits apply per workspace, not per key. See Rate limits for the per-category caps.