Quota and plans
Esta página aún no está disponible en tu idioma.
One completed analysis costs one session.
What debits
Section titled “What debits”Creating a session. Not requesting an upload intent, not PUTting the video, not polling. The debit happens inside the same transaction that creates the row, so if creation fails, nothing was spent.
What refunds
Section titled “What refunds”A failed session, automatically. The slot returns to the plan as soon as the analysis fails. Deleting the failed row afterwards refunds nothing extra — a debit is refunded at most once.
Re-analysing with POST /api/sessions/{id}/reanalyze/ is free while the
session still holds its original debit. A session that already failed gave its
slot back, so a re-run re-takes one — and can return 402 if it was spent
elsewhere in the meantime.
Running out
Section titled “Running out”{ "detail": "quota_exhausted", "reset_at": "2026-10-01T00:00:00Z", "current_plan": "organization", "current_role": "organization"}Nothing was created. Queue the work and retry after reset_at, or have the
customer upgrade.
reset_at can be null, meaning the plan does not renew on a schedule —
waiting will not help. Handle the null.
Which plan the quota belongs to
Section titled “Which plan the quota belongs to”Quota is per team, not per user or per key. Every key on a team draws from the same pool, and so does every coach using the web app. An integration that burns the allowance leaves the customer’s coaches unable to upload — worth rate-limiting your own batch jobs accordingly.
GET /api/plans/ is public and lists what each tier includes.
GET /api/subscriptions/current/ returns the team’s live subscription; a key
can read it, but not change it — plan changes are an owner action in the app.