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
InfiniteTalk turns a source portrait plus an audio track into a talking or singing avatar video with lip synchronization. Use this page when you are ready to call the API after trying the model in the APIXO playground.| Capability | Value |
|---|---|
| Model ID | infinitetalk |
| Mode | image-to-video |
| Source images | 1 required image URL, plus 1 optional mask image URL |
| Audio input | Exactly 1 public HTTP(S) MP3, WAV, or M4A URL |
| Audio limits | Up to 128 MB and 600 seconds |
| Resolutions | 480p, 720p |
| Billing | Per probed audio second, minimum 5 seconds |
Endpoint and authentication
Base URL:| Method | Endpoint | Purpose |
|---|---|---|
POST | /generateTask/infinitetalk | Submit a generation task |
GET | /statusTask/infinitetalk?taskId={taskId} | Poll task status and retrieve results |
Copy-paste async quickstart
This minimal request submits an InfiniteTalk task and returns ataskId.
taskId; you need it to poll for the final result.
Poll for result
resultJson after state becomes success:
Request body
Image-to-video
With an optional mask image
image_urls[0] is sent as the source image. image_urls[1], when provided, is sent as the mask image.
Parameters
Result delivery mode. Use
async for polling with statusTask, or callback for webhook delivery.Required when
request_type is callback. Use a public endpoint that can receive the final task payload. See Webhooks.InfiniteTalk input parameters.
Response format
Submit task response
POST /generateTask/infinitetalk 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:
pending, processing, success, or failed.JSON string containing the generated video URLs as
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 time in milliseconds. Present after successful completion when available.
Webhook callback mode
Use callback mode when your backend should receive the final result automatically instead of polling.code, message, and data shape as the status response. See Webhooks for delivery requirements and retry behavior.
Billing
InfiniteTalk is billed per probed audio second. The backend downloads the audio, probes its real audio length, then bills:| Resolution | APIXO price |
|---|---|
480p | $0.03 / second |
720p | $0.06 / second |
Latency and polling
Actual latency varies by audio length, selected resolution, upstream queue load, and final result storage. Longer audio generally takes longer to complete.| Audio length | Recommended first poll | Poll interval |
|---|---|---|
| Up to 30s | 30s after task creation | 10s-15s |
| 30s-120s | 60s after task creation | 15s-30s |
| 120s-600s | 120s after task creation | 30s |
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, unsupported mode, invalid parameter type or value, unreachable URL, or audio probe failure | 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 unmapped upstream failure | Retry with backoff |
502 | Upstream service error | Retry with backoff |
504 | Upstream timeout | Retry or use callback mode for long-running jobs |
Common validation issues
| Issue | What happened | What to do |
|---|---|---|
Missing input.mode | InfiniteTalk requires image-to-video mode | Set input.mode to image-to-video |
Invalid image_urls length | The backend accepts 1 or 2 image URLs | Send the portrait URL first, then the optional mask URL |
Invalid audio_urls length | The backend accepts exactly 1 audio URL | Send a single MP3, WAV, or M4A URL |
| Audio cannot be fetched | The backend must fetch the audio before billing | Use a public HTTP(S) direct URL |
| Audio is too large or too long | Audio is limited to 128 MB and 600 seconds | Shorten or compress the audio |
| Empty prompt | prompt is optional, but cannot be blank if present | Remove the field or send a non-empty string |
| Invalid seed | seed must be an integer from -1 to 2147483647 | Use -1 or a valid integer |
Task failure codes
| Fail code | Meaning | What to do |
|---|---|---|
SensitiveContent | Upstream rejected the prompt or media for safety reasons | Change the prompt, source image, or audio |
PromptInvalid | Upstream rejected or could not use the prompt | Simplify the prompt and retry |
RateLimited | Upstream rate limited the task | Retry with backoff |
Timeout | Upstream timed out | Retry, reduce input complexity, or use callback mode |
MissingParameter or BadRequest | Upstream reported a malformed request | Recheck the request body |
Unknown error | Failure could not be mapped to a known code | Retry with backoff or contact support with the taskId |