Error Handling
The VibePeak API uses standard HTTP status codes and returns detailed error information to help you diagnose and resolve issues.Error Response Format
All errors follow a consistent structure:| Field | Description |
|---|---|
code | Machine-readable error code for programmatic handling |
message | Human-readable description of the error |
request_id | Unique identifier for support reference |
details | Additional context about the error (when available) |
HTTP Status Codes
| Status Code | Description |
|---|---|
200 | Success |
202 | Accepted - Task created successfully |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - Plan doesn’t include API access |
404 | Not Found - Resource doesn’t exist |
429 | Too Many Requests - Rate limit exceeded |
500 | Internal Server Error - Something went wrong |
Error Codes Reference
Authentication Errors
INVALID_API_KEY
INVALID_API_KEY
Status: 401 UnauthorizedThe provided API key is invalid or doesn’t exist.Solution: Check that your API key is correct and properly formatted (
vpk_live_xxxxx or vpk_test_xxxxx).MISSING_API_KEY
MISSING_API_KEY
Status: 401 UnauthorizedNo API key was provided in the request.Solution: Add the
Authorization: Bearer vpk_live_xxxxx header to your request.Authorization Errors
PLAN_NOT_ALLOWED
PLAN_NOT_ALLOWED
Status: 403 ForbiddenYour subscription plan doesn’t include API access. Only Plus, Pro and Max plans have API access.Solution: Upgrade your plan to Plus, Pro or Max.
INSUFFICIENT_CREDITS
INSUFFICIENT_CREDITS
Status: 403 ForbiddenYour account doesn’t have enough credits for this operation.Solution: Purchase more credits or wait for your monthly credit refresh.
AVATAR_ACCESS_DENIED
AVATAR_ACCESS_DENIED
Status: 403 ForbiddenYou don’t have permission to use this avatar.Solution: Use a public avatar or one of your custom avatars. Custom avatars can only be accessed by their owner.
VOICE_ACCESS_DENIED
VOICE_ACCESS_DENIED
Status: 403 ForbiddenYou don’t have permission to use this voice.Solution: Use a public voice or one of your cloned voices. Cloned voices can only be accessed by their owner.
VOICE_EXPIRED
VOICE_EXPIRED
Status: 403 ForbiddenThe cloned voice has expired.Solution: Create a new cloned voice or use a public voice.
Internal Service Errors
AVATAR_URL_ERROR
AVATAR_URL_ERROR
Status: 500 Internal Server ErrorFailed to generate a secure URL for the avatar image.Solution: This is a server-side issue. Retry your request. If the issue persists, contact support with the request_id.
Rate Limiting Errors
CONCURRENCY_LIMIT_EXCEEDED
CONCURRENCY_LIMIT_EXCEEDED
Status: 429 Too Many RequestsYou’ve reached your concurrent task limit.Solution: Wait for existing tasks to complete, or upgrade your plan for higher limits.
Validation Errors
INVALID_JSON
INVALID_JSON
Status: 400 Bad RequestThe request body contains invalid JSON that cannot be parsed.Solution: Validate your JSON before sending. Common issues include:
- Missing or extra commas
- Unquoted property names
- Single quotes instead of double quotes
- Trailing commas in arrays or objects
- Unescaped special characters in strings
VALIDATION_ERROR
VALIDATION_ERROR
Status: 400 Bad RequestThe request parameters are invalid.Solution: Review the error message and fix the invalid parameters. This also covers invalid enum values such as an unsupported
orientation.INVALID_AVATAR_ID
INVALID_AVATAR_ID
Status: 400 Bad RequestThe avatar ID format is invalid.Solution: Ensure the avatar ID is a valid UUID format (e.g.,
a1b2c3d4-e5f6-7890-abcd-ef1234567890).INVALID_VOICE_ID
INVALID_VOICE_ID
Status: 400 Bad RequestThe voice ID format is invalid.Solution: Use a valid voice ID from the List Voices endpoint or a cloned voice ID.
IMAGE_INACCESSIBLE
IMAGE_INACCESSIBLE
Status: 400 Bad RequestOne or more image URLs are not accessible.Solution: Ensure all image URLs are publicly accessible HTTPS URLs.
IMAGE_TIMEOUT
IMAGE_TIMEOUT
Status: 400 Bad RequestImage validation timed out.Solution: Use images hosted on fast, reliable servers.
Narrated slideshow requests no longer return
MIXED_ORIENTATIONS. Use the optional orientation field to request portrait or landscape output explicitly, or omit it and let the API auto-detect from the first image.SSRF_BLOCKED
SSRF_BLOCKED
Status: 400 Bad RequestImage URL points to a private network.Solution: Use publicly accessible image URLs. Private/internal network URLs (localhost, 192.168.x.x, etc.) are not allowed.
Script Length Errors
Thescript field must fit a per-scene budget that scales with the number of images. Each image becomes a scene of roughly 3 seconds, so the script needs 65–85 characters per image to produce a video where the narration neither cuts off early nor leaves silence at the end.
| Images | Min characters | Max characters |
|---|---|---|
| 1 | 65 | 85 |
| 3 | 195 | 255 |
| 5 | 325 | 425 |
| 9 | 585 | 765 |
generate_script instead — the budget check is skipped and the generated script is sized correctly automatically.
SCRIPT_TOO_SHORT
SCRIPT_TOO_SHORT
Status: 400 Bad RequestThe script is shorter than Solution: Either expand the script up to at least
image_count × 65 characters. The narration would end before the video does, leaving silent frames.min_length characters, or remove images until image_count × 65 ≤ your script length.SCRIPT_TOO_LONG
SCRIPT_TOO_LONG
Status: 400 Bad RequestThe script is longer than Solution: Either trim the script down to at most
image_count × 85 characters. The narration would be rushed to fit within the video, harming TTS quality.max_length characters, or add more images until image_count × 85 ≥ your script length.SCRIPT_INVALID_CHARACTERS
SCRIPT_INVALID_CHARACTERS
Status: 400 Bad RequestThe script contains characters that the TTS engine cannot process. Only letters, spaces, and basic punctuation (Solution: Replace numbers with their word form and remove unsupported symbols.
. , ! ? ¿ ¡ ; : ' " -) are allowed. Numbers must be written as words (e.g. “three” instead of “3”), and symbols like @, #, $, %, & are not permitted.Not Found Errors
USER_NOT_FOUND
USER_NOT_FOUND
Status: 404 Not FoundThe user account was not found.Solution: Ensure your API key is associated with a valid user account.
AVATAR_NOT_FOUND
AVATAR_NOT_FOUND
Status: 404 Not FoundThe specified avatar was not found.Solution: Use a valid avatar ID from the public avatars list or your custom avatars.
VOICE_NOT_FOUND
VOICE_NOT_FOUND
Status: 404 Not FoundThe specified voice was not found.Solution: Use a valid voice ID from the List Voices endpoint or a cloned voice ID.
TASK_NOT_FOUND
TASK_NOT_FOUND
Status: 404 Not FoundThe requested task doesn’t exist.Solution: Verify the task ID is correct.
Task Errors
IMAGE_PROCESSING_FAILED
IMAGE_PROCESSING_FAILED
Status: Returned in task status (not HTTP error)One or more images couldn’t be processed.Solution: Ensure all images are accessible URLs with supported formats (JPEG, PNG, WebP).
TEST_MODE_SIMULATED_FAILURE
TEST_MODE_SIMULATED_FAILURE
Status: Returned in task status (not HTTP error). Sandbox only.A deliberately-failed sandbox task, returned when a request from a Solution: This is the expected response for the
vpk_test_ key includes "test_scenario": "fail". It lets you exercise your error-handling code without spending credits. The same livemode: false field that appears on every sandbox response is also set on the task status.fail test scenario — not a real failure. Treat it as a hand-rolled fixture for your error-handling path. Do not retry: the same test_scenario will keep returning the same error. See Test Mode → The test_scenario parameter for the other scenarios.INVALID_IMAGE_URL
INVALID_IMAGE_URL
Status: 400 Bad RequestOne or more image URLs are inaccessible, invalid, or point to private networks.Solution: Verify all image URLs are publicly accessible HTTPS URLs.
IMAGE_RESOLUTION_TOO_LOW
IMAGE_RESOLUTION_TOO_LOW
Status: 400 Bad RequestOne or more source images are below the minimum resolution. VibePeak requires an HD floor on every source image: the long side must be at least 1280 px and the short side at least 720 px. Anything smaller produces visibly upscaled or blurry output.Solution: Re-upload the offending images at HD or higher. If your source (e.g. a CRM export) only exposes thumbnails, check whether the full-resolution variant is available at a different URL.
Service Errors
SERVICE_UNAVAILABLE
SERVICE_UNAVAILABLE
SERVICE_TIMEOUT
SERVICE_TIMEOUT
Status: 504 Gateway TimeoutThe service request timed out.Solution: Retry your request. If the issue persists, contact support.
SERVICE_ERROR
SERVICE_ERROR
Status: 503 Service UnavailableAn internal service error occurred.Solution: Retry your request. If the issue persists, contact support with the request_id.
TTS_ERROR
TTS_ERROR
Status: 503 Service UnavailableText-to-speech generation failed.Solution: Retry your request. The TTS service uses a circuit breaker that may temporarily block requests after repeated failures.
QUEUE_ERROR
QUEUE_ERROR
Status: 503 Service UnavailableFailed to queue the video generation job.Solution: Retry your request after a few seconds.
Handling Errors
Retry Strategy
For transient errors, implement exponential backoff:Getting Support
When contacting support, include:- Request ID - Found in every error response
- Error code - The machine-readable error code
- Timestamp - When the error occurred
- Request details - The endpoint and parameters used

