~/docs cat credits-and-limits.md
Credits and limits
Every detection is paid in prepaid credits. credits_used in the response is the real charge for that run; prefer it over any estimate.
Cost per media type
| Media | Credits |
|---|---|
| Image | 1 credit per image. |
| Video | 1 credit per scored frame: about one a second for the first 20 seconds, 20 sampled for anything longer. A frame with a null score is not charged. At most 20 per clip. |
| Audio | 1 credit per minute, rounded up, minimum 1. |
| Link | The same as the media it resolves to. |
When a run is not charged
The same file, byte for byte, from the same account within 30 days is not charged: the run still happens and is still saved, credits_used is 0 and zero_charge_reason is "duplicate". A request that is refused before a detector runs, and a 422 the platform could not judge, are never charged.
A sandbox key runs the same detection and charges nothing; the response says zero_charge_reason: "sandbox". Sandbox is a property of the key, not a flag on the request. A sandbox key is set up on your account by us; ask your account contact.
Size caps
image ≤ 10 MB, video ≤ 100 MB, document ≤ 50 MB, audio ≤ 50 MB. A file over its cap answers 413. The dashboard uploader applies its own ceilings (video and audio ≤ 25 MB), so a file that uploads there uploads here.
Rate limits
Requests are limited per API key by tier: 60 per minute by default, 80 or 100 on higher tiers. Every response reports the state in X-RateLimit-* and RateLimit-* headers. Over the limit the call answers 429 with Retry-After; back off and honour it. A retried detection is a second run and a second charge, so retry only what was refused.
Usage ceilings
Accounts carry a daily and a monthly usage ceiling. A run that would pass either is refused before it starts with 429 and the code DAILY_LIMIT or MONTHLY_LIMIT. A gate that cannot be read at all is a 503 BILLING_UNAVAILABLE, never a silent pass. Contact sales to raise yours.
Balance, usage and the credit ledger live in the dashboard. Plans and per-credit prices are on the pricing page.