Ir al contenido

Quota and plans

Esta página aún no está disponible en tu idioma.

One completed analysis costs one session.

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.

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.

{
"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.

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.