OpenSEP
ERROR REFERENCE

Every error.
A clearer next step.

Stable codes. Useful context. All OpenSEP API errors
follow application/problem+json.

A RESPONSE YOU CAN WORK WITH

Know what happened.
Know what to do.

Use code to handle the error, retryable to decide your next step, and request_id when contacting support.

{
  "code": "file.too_long",
  "status": 413,
  "retryable": false,
  "title": "Audio is too long",
  "request_id": "req_example"
}
46 codes
Code & next stepHTTPRetryable
auth.unauthenticated

No valid session or token was presented. Sign in and retry.

401No
auth.ambiguous_credential

Both a session cookie and a bearer token were sent. Send exactly one.

401No
auth.csrf_origin

The request did not carry an acceptable Origin. Browser calls must come from opensep.com itself.

403No
auth.principal_forbidden

The credential is valid but this account or principal type may not perform the action.

403No
auth.fresh_session_required

The action needs a recent sign-in. Sign in again and retry.

403No
demo.turnstile_failed

The human-verification token was missing, expired, or invalid.

403No
demo.quota_exhausted

A demo limit is spent: the grant’s one separation, today’s allowance, or the hourly burst cap. Sign up for a free account, or retry after the Retry-After interval when one is sent.

429Yes
wallet.too_many_active_jobs

The account already has the maximum number of jobs queued or running (waiting jobs count). Finish or cancel one and retry.

429Yes
wallet.blocked

The account is on hold (for example after a payment dispute). Contact support.

402No
file.not_found

No such file for this account. Files are never visible across accounts.

404No
file.expired

The file passed its retention horizon and is gone. Uploads are deleted after 1 day. Results stay available for 3 days.

410No
file.too_large

The declared size exceeds the upload limit for your plan. `detail` names the plan and the limit.

413No
file.too_long

The audio is longer than the per-file limit for your plan. `detail` names the plan and the limit.

413No
file.not_uploaded

The upload was declared but the bytes never arrived, or the file is not ready yet.

409No
file.unsupported

The declared content type is not an audio or video type.

422No
file.probe_failed

The file could not be decoded as audio, or its length could not be read from its header; `probe_error` on the file says which.

422No
file.too_many_pending

Too many declared uploads are still pending for this account.

429Yes
file.storage_full

The account holds as many uploaded bytes as its plan allows at once (10× the per-file limit); results do not count. Delete an upload or wait for one to expire; `detail` names the number. Uploads are deleted after 1 day. Results stay available for 3 days.

429Yes
file.in_use

A job that is still running references this file.

409No
job.not_found

No such job for this account.

404No
job.invalid_state

The job is in a state where the requested transition is not allowed (for example cancelling a finished job).

409No
legal.acceptance_required

The account has not accepted the current Terms and Privacy Policy. Open the app and accept them, then retry.

403No
queue.timeout

The job waited in the queue longer than the limit and was not started. Try again, or move to a plan with a faster queue.

503Yes
runpod.queue_timeout

RunPod kept the job in its own queue past the queue budget (one hour after submit), so it was cancelled there and never started. Nothing was charged; retry.

503Yes
runpod.lost

RunPod answered five status polls in a row that it had no such run, so the job was failed and its run cancelled there. Nothing was charged; retry.

503Yes
idempotency.key_required

This mutating request must carry an Idempotency-Key header.

422No
idempotency.key_mismatch

The Idempotency-Key was reused with a different request body.

409No
idempotency.in_flight

An identical request is still being processed. Retry after the Retry-After interval.

409Yes
idempotency.key_spent

This Idempotency-Key's earlier attempt was refused or released its reservation, and nothing was created. Retry with a new Idempotency-Key; that is a fresh attempt.

409No
billing.no_subscription

The account has no active paid subscription for this action.

409No
billing.provider_error

The payment provider did not respond correctly. Safe to retry.

502Yes
billing.plan_change_unavailable

The subscription is cancelling at the end of its period (resume it first, then change plan), or its period has already ended and the scheduled change is due.

409No
billing.no_pending_change

The subscription has no scheduled plan change to withdraw; it already renews on its current plan.

409No
billing.subscription_exists

The account already holds a live subscription (active or past due, cancelling or not). Checkout is refused before the payment provider is called, so a second subscription is never opened; manage or resume the existing one instead.

409No
ops.stale_intent

An operator approval was recorded against a gate the intent has since moved past. Re-read the intent and decide again.

409No
ops.revision_exhausted

Three revisions have already been recorded for this gate of this intent. Approve it or drop it instead.

409No
ops.unfreeze_refused

The account is not frozen by a chargeback (it is not frozen, or frozen for another reason such as deletion), so the operator unfreeze has nothing to lift.

409No
ops.access_not_recorded

An operator lookup or a play of a customer file could not write its access record, so nothing was returned and no link was made. Safe to retry; the retry writes its own record.

503Yes
storage.unavailable

Object storage did not answer twice. Nothing was stored; safe to retry.

503Yes
range.not_satisfiable

The `Range` asks for bytes the file does not have; `Content-Range: bytes */<size>` gives its length.

416No
validation.failed

The request body or query failed validation; `errors[]` lists the fields.

422No
feature.disabled

The feature is switched off right now; `feature` names which one.

403No
rate_limit.exceeded

Too many requests. Slow down and retry after Retry-After.

429Yes
payload.unsupported_media_type

Request bodies must be application/json.

415No
not_found

No such route or resource.

404No
internal

Something failed on our side. The `request_id` lets support find it.

500Yes