Errors
Error format, API error codes and asset failure codes.
Error format
Section titled “Error format”Every error response has the same shape:
{ "code": "invalid_title", "error": "invalid_title", "message": "Title must be at most 200 characters"}| Field | Description |
|---|---|
code | Stable, machine-readable identifier. Branch on this |
error | Same as code, kept for compatibility |
message | Human-readable explanation. It may change, so don’t parse it |
details | Optional extra data, e.g. { "retry_after": 60 } |
Retrying: retry 429, 502 and 503 responses with exponential backoff (honour
Retry-After when present). Other 4xx errors need a change to the request first.
API error codes
Section titled “API error codes”| Status | Code | When |
|---|---|---|
| 400 | invalid_json | The body isn’t a JSON object |
| 400 | invalid_request | A required field is missing |
| 400 | invalid_email, weak_password | Sign-up or password change validation (passwords: 8–200 characters) |
| 400 | invalid_name, invalid_scopes | API key name (1–64 characters) or scopes |
| 400 | invalid_title, invalid_drm | Title longer than 200 characters, or drm isn’t a boolean |
| 400 | invalid_limit, invalid_cursor, invalid_status | List parameters |
| 400 | invalid_size, invalid_sha256 | Upload size (1 byte – 100 GiB) or checksum format |
| 400 | invalid_parts, upload_incomplete, part_size_mismatch, part_etag_mismatch | Upload completion checks |
| 400 | invalid_ttl | Playback session lifetime outside 60–86,400 seconds |
| 401 | unauthorized | Missing, expired or invalid credentials |
| 401 | invalid_credentials, invalid_password, email_not_verified | Sign-in failures |
| 403 | forbidden | The credential’s scope or role doesn’t allow this |
| 404 | not_found | The resource doesn’t exist in your workspace |
| 409 | email_taken, account_conflict | Sign-up conflicts |
| 409 | asset_not_uploadable, upload_in_progress, upload_not_pending | Upload state conflicts |
| 409 | asset_not_ready | Playback requested before the asset is ready |
| 429 | rate_limited | Too many requests; see Limits |
| 500 | internal_error | Unexpected error; retry with backoff |
| 502 | storage_error, storage_integrity | Temporary storage problem; retry, or start a new upload for storage_integrity |
| 503 | playback_unavailable | Playback temporarily unavailable; retry |
Playback and protection errors are listed in Playback & access and Content protection.
Asset failure codes
Section titled “Asset failure codes”When an asset can’t be prepared, its status becomes failed and failure_code explains why.
A failed asset accepts a new upload.
failure_code | Meaning | What to do |
|---|---|---|
invalid_media | The file isn’t a readable video, or has no video track | Upload a valid video file |
invalid_source | The video has no usable picture dimensions | Re-export the source and upload it again |
unsupported_codec | The video or audio format can’t be prepared for streaming | Re-export with a mainstream format (e.g. MP4) and upload again |
size_mismatch | The stored file doesn’t match the size you declared | Upload the file again |
Any other failure_code means the lesson couldn’t be prepared on our side. Upload it again; if
it fails twice, contact support@wirevod.online with the asset id.