Skip to content

Authentication

Every request to /v1 except GET /v1/formats needs an API key, sent as a bearer token:

bash
curl https://api.cinevva.com/v1/account \
  -H "Authorization: Bearer ck_live_a1b2c3d4..."

There is no query-parameter form. Keys in URLs end up in server logs, browser history, and referrer headers, so the header is the only way to send one.

You also need a subscription

A key proves who you are; a Standard or Pro subscription is what grants access. On a free account a key authenticates correctly and then every call returns 402 with code subscription_required. This applies to all /v1 routes, including the free ones.

Check with GET /v1/account; manage plans at cinevva.com/pricing.

Creating and revoking keys

Manage keys on the API keys page. You can hold up to 10 active keys at a time, which is enough to give each environment or service its own.

A key's secret is displayed exactly once, when you create it. We store only a SHA-256 hash, so we cannot show it to you again or recover it on request. If a key is lost or exposed, revoke it and create a replacement.

Revocation takes effect immediately. Any request using a revoked key gets a 401 with code unauthorized, so revoke first and rotate second if you suspect a leak.

Key format

ck_live_a1b2c3d4e5f6...

The ck_live_ prefix marks a live key that spends real credits. The dashboard shows the first 8 characters after the prefix so you can identify which key is which without holding the secret.

What a key can do

A key acts as your account for rigging: it can create rigs, read the rigs it created, list animations, and read your account status. It draws on the same credit balance as the web tool.

A key deliberately cannot manage other keys. Key creation and revocation require a signed-in browser session, so a leaked key cannot be used to mint more keys or lock you out of your own account.

Keeping keys safe

Treat a key like a password. Concretely:

Keep keys server-side. A key shipped in a web page, a mobile binary, or a game build is public the moment it ships, and anyone who extracts it can spend your credits. If you need to rig from a client application, proxy the call through your own backend.

Use a separate key per environment and per service, so revoking a compromised one doesn't take down everything else. The last_used_at timestamp on the keys page tells you which keys are actually live and which you can safely retire.

Keep keys out of source control. Environment variables or a secrets manager are the right home; a committed key stays in git history even after you delete the line.

Errors

StatusCodeMeaning
401unauthorizedMissing, malformed, revoked, or unknown key
402subscription_requiredValid key, no active Standard or Pro plan
402insufficient_creditsKey is valid, balance will not cover the work
429rate_limitedValid key, over the per-minute request limit

A 401 is deliberately identical whether the key never existed or was revoked, so the endpoint cannot be used to probe for valid keys.