AVIF to MP4 API - Convert AVIF to MP4 API: Pricing, Documentation
by Pixazo
The AVIF to MP4 API wraps a still AVIF in a standards-compliant MP4 container. It is deterministic, not generative: the image is held on screen, unchanged, for as long as you ask, and the result is a silent H.264 video. Use it when a destination insists on a video file — a feed that will not take an image, a timeline that needs a hold, a signage player driven by a video playlist. Send an image_url and a duration, poll the job, download the MP4. Prefer a no-code option? The same conversion is available free in your browser as the AVIF to MP4 Converter.

Models Version
Get 10% Cashback on Your First Payment (up to $500)
Add funds and get 10% cashback on your first payment (up to $500).
AVIF to MP4 API Documentation
Authentication
Every request is authenticated with your Pixazo API key in the Ocp-Apim-Subscription-Key header — the same key across every Pixazo endpoint.
| Header | Required | Value |
|---|---|---|
Ocp-Apim-Subscription-Key | Yes | Your Pixazo API key |
AVIF to MP4 generate request
AVIF gives excellent compression for the web but has thin support outside the browser, and almost none in video tooling. The AVIF to MP4 API sidesteps that: it decodes your AVIF, holds it for the duration you choose, and encodes a silent H.264/yuv420p MP4 with even dimensions that opens anywhere, downscaled to fit within 1920x1920 if larger and never upscaled if smaller. Transparency is flattened, since H.264 4:2:0 has no alpha channel. There is no motion, no prompt and no model behind it — it is a container change, priced flat at $0.002 per clip.
Endpoint: POST https://gateway.pixazo.ai/media-tools/v1/image-to-video
Request Code
curl -X POST 'https://gateway.pixazo.ai/media-tools/v1/image-to-video' \
-H 'Ocp-Apim-Subscription-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"image_url":"https://example.com/input.avif","duration_seconds":5}'Output
{
"request_id": "req_9f3c1a7b2e",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/req_9f3c1a7b2e"
}Webhook (Optional)
Instead of polling, include a webhook_url in the request body and Pixazo will POST the completed job payload to that URL when the conversion finishes. The webhook body is identical to the completed-status response shown under Retrieving Results.
Request Parameters
| Parameter | Required | Type | Default | Allowed | Description |
|---|---|---|---|---|---|
image_url | Required | string | — | HTTP(S) URL | Publicly reachable URL of the source still. jpg, png, webp, avif, heic, tiff, bmp, gif and SVG are accepted; the source must be under 50 megapixels. |
duration_seconds | Optional | number | 5 | 1 – 60 | How long the still is held on screen, in seconds. Does not affect the price. |
webhook_url | Optional | string | — | HTTP(S) URL | Receive the completed job via webhook instead of polling. |
Example Request
curl -X POST 'https://gateway.pixazo.ai/media-tools/v1/image-to-video' \
-H 'Ocp-Apim-Subscription-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"image_url":"https://example.com/input.avif","duration_seconds":5}'Response
Every request returns a request_id immediately with a QUEUED status. Use the polling_url (or a webhook) to retrieve the finished file.
{
"request_id": "req_9f3c1a7b2e",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/req_9f3c1a7b2e"
}Request Headers
| Header | Required | Value |
|---|---|---|
Ocp-Apim-Subscription-Key | Yes | Your Pixazo API key |
Content-Type | Yes | application/json |
Response Handling
The submit call returns one of the HTTP status codes below. A 202 means the job was accepted — everything else is an error you should handle.
| Code | Meaning |
|---|---|
| 202 | Accepted — the job was queued; poll the status URL. |
| 400 | Bad request — a parameter is missing or invalid. |
| 401 | Unauthorized — missing or wrong API key. |
| 402 | Payment required — insufficient balance. |
| 429 | Too many requests — you are being rate-limited. |
| 500 | Server error — transient; retry with backoff. |
Error Responses
Errors return a JSON body with a machine-readable code and a human-readable message.
{
"request_id": "req_9f3c1a7b2e",
"status": "FAILED",
"error": {
"code": "INSUFFICIENT_BALANCE",
"message": "Your account balance is too low to process this request."
}
}Retrieving Results
Poll the status endpoint until the job reaches COMPLETED (or FAILED).
curl 'https://gateway.pixazo.ai/v2/requests/status/req_9f3c1a7b2e' \
-H 'Ocp-Apim-Subscription-Key: YOUR_API_KEY'Response (Completed)
{
"request_id": "req_9f3c1a7b2e",
"status": "COMPLETED",
"model_id": "image-to-video",
"output": {
"media_url": "https://api-assets.pixazo.ai/out/result.mp4",
"media_type": "MP4"
},
"error": null,
"created_at": "2026-01-01T00:00:00Z",
"completed_at": "2026-01-01T00:00:04Z"
}Response Fields
| Field | Type | Description |
|---|---|---|
request_id | string | Unique id for this job. |
status | string | One of the job status values below. |
output.media_url | string | URL of the converted file (when completed). |
output.media_type | string | Output format (MP4). |
error | object | null | Populated only when status is FAILED. |
Status Values
| Status | Meaning |
|---|---|
| QUEUED | Job accepted, waiting for a worker. |
| PROCESSING | Conversion in progress. |
| COMPLETED | Done — the output URL is in the response. |
| FAILED | The job could not be completed; see error. |
AVIF to MP4 API Pricing
⚡ Performance
Live usage measured on Pixazo's gateway, split by model version. Generation time is how long a generation takes end-to-end (lower is better). Success rate is the percent of generations that complete (higher is better).
〰 Uptime
Percent of generations that succeeded over the selected period, per model version.