Authentication
All API requests require authentication using an API key passed in theAuthorization header.
API Keys
API keys are created in your dashboard settings. Each key is associated with your team and has access to all team resources.Creating an API Key
- Navigate to Settings > API Keys in the dashboard
- Click Create API Key
- Give your key a descriptive name (e.g., “Production Server”, “Development”)
- Copy the key immediately - it won’t be shown again
Using Your API Key
Include your API key in theAuthorization header as a Bearer token:
SDK Configuration
Key Format
An API key is a single 64-character hex string — there are no key prefixes, key types, or sandbox keys. Every key is a live key: requests made with it render real assets and count against your plan’s monthly credits. To test without spending credits, use the free tier’s included credits or the API Playground, which shows the exact request and response for every endpoint.Security Best Practices
Environment Variables
Never hardcode API keys. Use environment variables:Server-Side Only
API keys should only be used in server-side code. Never include them in:- Client-side JavaScript
- Mobile apps
- Public repositories
- Browser localStorage/cookies
Key Rotation
If you suspect a key has been compromised:- Create a new API key in the dashboard
- Update your application to use the new key
- Delete the compromised key
Least Privilege
Create separate API keys for different environments and services:- Production server
- Staging server
- CI/CD pipeline
- Local development
Rate Limits and Quotas
Two separate limits apply, and — for historical reasons — they surface under different status codes per endpoint family:- Monthly credits — every render (image, GIF, PDF, video) consumes render credits; see Credits below for what each operation costs. When they run out, the image, GIF, HTML-template and batch endpoints return
429withcode: "quota_exceeded", while the video and workflow endpoints return402with the same code. Treatquota_exceededas “wait for the monthly reset or upgrade” — never as “retry with backoff”: no amount of retrying refills a monthly quota. - Per-endpoint rate limits — a few endpoints (unauthenticated public rendering, template previews) carry fixed per-minute limits. These return
429without aquota_exceededcode and DO send standardx-ratelimit-*headers andretry-after— those are genuinely retryable after backing off.
429 is: check the code field first. quota_exceeded means credits, not rate.
A quota rejection carries a plain message:
402 (quota) and 429 (rate) by backing off and surfacing the message to your logs — there is no machine-readable retry hint.
Credits
Your plan carries two separate monthly pools. They never mix: renders spend our own rendering compute, while AI operations spend metered third-party AI services, so each is budgeted in its own currency.Render credits
Every render costs 1 render credit — one image, one GIF, one PDF, one video render, one workflow (CSV row or webhook) render, one item in a batch. The single exception is GIF capture from a live URL (POST /gif/capture), which costs 1.5 render credits because it records a headless browser session.
Monthly render allowances per plan are listed on the pricing page. Paid plans can enable overage billing to keep rendering past the allowance.
AI credits
All AI operations draw from one AI credit pool — there are no separate per-feature AI allowances:
Monthly AI credit allowances per plan:
Billing rules, in your favor:
- Charged per user intention, not per internal step. One copilot instruction is 1 credit even if it runs many model rounds internally.
- Failures are never billed. Credits are checked before an operation starts and spent only after it succeeds.
- Silence is never billed. Transcribing a clip in which no speech is found costs nothing (the request returns
422withcode: "no_speech"). When speech is found, minutes are counted up to the last spoken word, not the full clip length. - Renders inside AI operations are included. Review frames and posters generated during an AI operation are part of its AI price — they do not also consume render credits.
402 with code: "ai_quota_exceeded":
aiCredits: { used, limit } field of the plan details endpoint.
Team API Keys
API keys are scoped to your team. All team members share access to the same API keys and resources. To manage team members:- Go to Settings > Team
- Invite members by email
- Assign roles (Admin, Editor, Viewer)
Troubleshooting
Invalid API Key
- Verify the key is copied correctly (no extra spaces)
- Check if the key has been deleted in the dashboard
- Ensure you’re using the correct environment (test vs production)
Missing Authorization Header
- Add the
Authorization: Bearer {api_key}header - Check for typos in the header name