Documentation Index
Fetch the complete documentation index at: https://apixo.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Hailuo 2.3 generates videos from text prompts or a single first-frame image. Use this page when you are ready to call the API after trying the model in the APIXO playground.| Capability | Value |
|---|---|
| Model ID | hailuo-2-3 |
| Modes | standard-text-to-video, standard-image-to-video, pro-text-to-video, pro-image-to-video |
| Prompt | Non-empty string |
| Reference images | Exactly 1 URL for image-to-video modes |
| Output resolution | Standard modes: 768p; pro modes: 1080p |
| Output duration | Standard modes: 6 or 10 seconds; pro modes: fixed 5 seconds |
| Result format | MP4 URL array in resultJson.resultUrls |
Endpoint and authentication
Base URL:| Method | Endpoint | Purpose |
|---|---|---|
POST | /generateTask/hailuo-2-3 | Submit a generation task |
GET | /statusTask/hailuo-2-3?taskId={taskId} | Poll task status and retrieve results |
Copy-paste async quickstart
This minimal request submits a standard text-to-video task and returns ataskId.
taskId; you need it to poll for the final result.
Poll for result
resultJson after state becomes success:
Request body
Standard text-to-video
Standard image-to-video
Pro text-to-video
Pro image-to-video
Parameters
Result delivery mode. Use
async for polling with statusTask, or callback for webhook delivery.Required when
request_type is callback. Must be a public HTTPS URL that can receive the final task payload. See Webhooks.Hailuo 2.3 input parameters.
| Mode | Required media | duration behavior | Output |
|---|---|---|---|
standard-text-to-video | None | Required: 6 or 10 seconds | 768p video |
standard-image-to-video | Exactly 1 image URL | Required: 6 or 10 seconds | 768p video |
pro-text-to-video | None | Ignored | Fixed 5-second 1080p video |
pro-image-to-video | Exactly 1 image URL | Ignored | Fixed 5-second 1080p video |
Response format
Submit task response
POST /generateTask/hailuo-2-3 returns a task ID when the task is accepted:
API status code.
200 means the task was accepted.Human-readable status message.
Unique task identifier used with the status endpoint.
Status response fields
Unique task identifier.
Current task state:
processing, success, or failed.JSON string containing generated video URLs in
resultUrls. Present when state is success.Machine-readable failure code. Present when
state is failed.Human-readable failure message. Present when
state is failed.Task creation timestamp in Unix milliseconds.
Task completion timestamp in Unix milliseconds. Present after completion.
Processing duration in milliseconds. Present after completion when timing data is available.
Webhook callback mode
Use callback mode when your backend should receive the final result automatically instead of polling.code, message, and data. See Webhooks for delivery requirements and retry behavior.
Billing
Hailuo 2.3 billing depends on the selected mode family.| Mode family | APIXO price | Billing rule | Example charge |
|---|---|---|---|
| Standard modes | $0.056 / second | duration * $0.056 | 6s: $0.336; 10s: $0.56 |
| Pro modes | $0.49 / use | Fixed price per generation | Fixed 5-second output: $0.49 |
Latency and polling
Actual latency may vary by prompt complexity, image accessibility, mode, provider queue load, and upstream processing time. The status response reportscostTime in milliseconds after completion when timing data is available.
| Mode family | Output duration | Recommended first poll | Poll interval |
|---|---|---|---|
| Standard modes | 6s or 10s | 30s after task creation | 10s-15s |
| Pro modes | Fixed 5s | 45s-60s after task creation | 10s-15s |
429, slow down requests and retry with backoff. For account-level details, see System APIs.
Errors and troubleshooting
HTTP errors
| Code | Meaning | What to do |
|---|---|---|
400 | Invalid request body, missing input, unsupported mode, invalid duration, or invalid image URL shape | Fix the request before retrying |
401 | Missing or invalid API key | Check the Authorization header |
402 | Insufficient balance or quota | Add balance or switch account/key |
403 | Key or route cannot access the model | Check permissions and route strategy |
429 | Rate limit or concurrency limit reached | Retry with exponential backoff |
500 | Server error or unknown upstream failure | Retry with backoff |
502 | Upstream provider error | Retry with backoff |
504 | Upstream timeout | Retry or use callback mode for long-running jobs |
Validation notes
| Condition | Backend behavior |
|---|---|
Missing input | Request fails before task creation |
Missing or empty prompt | Request fails before task creation |
Unsupported mode | Request fails before task creation |
Image mode without image_urls | Request fails before task creation |
image_urls contains 0 or more than 1 item | Request fails before task creation |
Standard mode without duration | Request fails before task creation |
Standard mode with duration other than 6 or 10 | Request fails before task creation |
Pro mode with duration | duration is ignored |
Task failure codes
| Fail code | Meaning | What to do |
|---|---|---|
PromptInvalid | Prompt was rejected or malformed | Adjust the prompt and retry |
SensitiveContent / InputOutputSensitiveContentDetected | Prompt, input image, or output failed content checks | Change the prompt or input image |
ImageFormatIncorrect / InvalidImageSize | Input image failed upstream image validation | Use a public JPG/JPEG/PNG URL within the documented size and aspect-ratio limits |
RateLimited | Provider-side rate limit | Retry with exponential backoff |
Timeout | Provider-side timeout | Retry, simplify the request, or use callback mode |
Unknown error | Provider returned an unmapped failure | Retry with backoff or contact support with the taskId |