Skip to content

OmnAPI Error Codes

Every error follows the same envelope:

{
"success": false,
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Not enough credits to start this task.",
"details": { /* optional, context-specific */ }
}
}

Every response — error or success — carries X-Request-Id in the headers. Always include this in support tickets; it’s the single fastest way for us to trace the problem.

Errors come in two flavors:

WhereWhat it means
HTTP status 4xx / 5xx on the original POSTSubmission was rejected; no task was created
status: "FAILED" on a polled task descriptorSubmission accepted but generation failed downstream

The first kind does not charge credits. The second usually refunds eligible credits automatically; partial-output cases may keep a smaller final charge.

This is the curated, human-readable view of the platform error codes. Module-specific codes, such as the MV_* family for the Music Video API, are documented in their module guide rather than repeated here. For request and response schemas, see the Interactive API Reference.

CodeHTTPRecovery
INVALID_API_KEY401Include x-api-key; confirm the value is active and unexpired, or rotate it.
FORBIDDEN403Add the required scope or call from an allowed IP. Inspect details.requiredScope / details.clientIp when present.
CodeHTTPRecovery
BAD_REQUEST400Fix malformed JSON or a structurally missing required field.
VALIDATION_ERROR400Field present but invalid (range, length, enum). Read structured entries from details.issues[]; details.errors is a legacy serialized summary.
MISSING_REQUIRED_FIELD400The named field is required.
INVALID_MODEL400Use a documented model path or omit the model override.
INVALID_FEATURE400Use a feature supported by the selected model and endpoint.
FEATURE_NOT_SUPPORTED400Upgrade plan access or remove the unsupported feature.
CodeHTTPRecovery
INSUFFICIENT_CREDITS402Add credits from the dashboard. For MV or Vidu, increase maxCredits only when the error details show that your submitted budget cap was exceeded. Suno and Producer do not accept maxCredits.
BALANCE_NOT_INITIALIZED402Account balance is not ready yet. Open the dashboard once, then retry.
CREDIT_DEDUCTION_FAILED500Credits were not actually charged. Safe to retry.
CREDIT_REFUND_FAILED500File a ticket with X-Request-Id.
CodeHTTPRecovery
TASK_NOT_FOUND404Confirm the task id and that the task is still available.
TASK_ALREADY_EXISTS409Idempotency collision (rare). Re-poll the original id.
CONFLICT409Generic state/idempotency conflict (e.g. competing edit). Re-poll or reconcile, then retry.
TASK_CREATION_FAILED500Transient — retry.
TASK_EXECUTION_FAILED500 / (task status)Generation failed after the task was accepted. Inspect errorMessage; eligible credits are refunded unless partial output was billable.
EXPIREDtask statusThe feature-specific task deadline passed after a final status read. Inspect retryable and refunded, then submit a fresh task when retryable.
PROVIDER_PROCESSING_TIMEOUTtask statusAn accepted generation operation remained non-terminal through its processing deadline. Inspect retryable and refunded, then submit a fresh task when retryable.
TASK_CANCELLED409 / (task status)Cancelled before completion. Contact support if unexpected.
CodeHTTPRecovery
PROVIDER_ERROR502The selected generation service rejected the call. Inspect errorMessage; eligible credits are refunded if surfaced on a task.
PROVIDER_NOT_FOUND404Use a documented model path or omit the model override.
PROVIDER_TIMEOUT504The selected generation service did not respond in time. Retry with backoff.
PROVIDER_RATE_LIMITED429Temporary capacity or rate limit at the selected generation service. Retry after exponential backoff.
NO_AVAILABLE_ACCOUNT503No generation capacity is currently available. Transient — retry.
SERVICE_UNAVAILABLE503Gateway in maintenance / shedding load. Retry with backoff.
SUNO_INPUT_INVALIDtask statusFix the unsupported Suno value or resource combination.
SUNO_RESOURCE_ACCESS_DENIEDtask statusUse a resource compatible with the requested operation; do not blind-retry.
SUNO_FINALIZATION_FAILEDtask statusInspect refunded, then retry later with a new idempotency key.
SUNO_TEMPORARILY_UNAVAILABLEtask statusBack off and retry a new attempt after the temporary service condition clears.
SUNO_OPERATION_FAILEDtask statusNon-retryable Suno failure; inspect the request and contact support with X-Request-Id.
CodeHTTPRecovery
RATE_LIMITED429Respect the Retry-After header. See Rate Limits.
CodeHTTPRecovery
INTERNAL_SERVER_ERROR500Unexpected platform error. Capture X-Request-Id and file a ticket.
NOT_FOUND404Confirm the HTTP method and URL.
ClassRetry?Notes
Auth / validation (4xx, VALIDATION_ERROR)NoFix the request and re-submit.
INSUFFICIENT_CREDITSNoTop up first, or raise an intentionally low MV/Vidu maxCredits spend cap.
RATE_LIMITEDYes, after Retry-AfterHonor the header.
Generation-service transient (PROVIDER_TIMEOUT, PROVIDER_RATE_LIMITED, NO_AVAILABLE_ACCOUNT)Yes, with backoff1s → 2s → 4s → 8s → cap 30s, max 5 tries.
Server error (INTERNAL_SERVER_ERROR, CREDIT_DEDUCTION_FAILED)Yes, with backoffSame schedule.
EXPIRED / PROVIDER_PROCESSING_TIMEOUT (on task)Resubmit when retryableThe previous task is already final; also inspect refunded before reconciliation.