Wan 2.7 Pro API, Wan 2.6 API, Wan 2.5 API, Wan 2.2 API - AI Video & Image Generation APIs

by Alibaba

Wan 2.7 Pro API, developers can access multiple Wan versions (2.2, 2.5, 2.6) for text-to-video, image-to-video, speech-to-video, and image generation. The API provides extensive capabilities including animation and flash video generation, making it one of the most versatile video AI solutions available.

Get API Key
Wan AI API
View in Playground

Models Version

LIMITED TIME OFFER

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

Wan 2.7 Text to Image API Documentation

https://gateway.pixazo.ai/wan-2-7-api/v1

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Wan 2.7 Text to Image Request - Wan 2.7 API

Request Code

POST https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27TextToImageRequest
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27TextToImageRequest"

headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}

payload = {
    "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers"
}

response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27TextToImageRequest", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
  },
  body: JSON.stringify({
    prompt: "A charming flower shop with beautiful window displays filled with colorful flowers"
  })
});

const data = await response.json();
console.log(data);
curl -X POST "https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27TextToImageRequest" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -d '{"prompt":"A charming flower shop with beautiful window displays filled with colorful flowers"}'

Output

{
  "status": "QUEUED",
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "message": "Request accepted and queued for processing"
}

Webhook (Optional)

You can optionally provide a webhook_url in your request body. When the request completes (success or failure), a POST request will be sent to your webhook URL with the result payload.

Webhook Payload (Success)

{
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184/output.png"
      }
    ],
    "description": ""
  }
}

Webhook Payload (Failure)

{
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Request Parameters - Wan 2.7 Text to Image Request

Field Type Required Default Description
promptstringYesText description of the image to generate. Supports Chinese and English, max 5000 characters.
sizestringNo"2K"Output resolution: "1K", "2K" (default). No 4K for standard model.
nintegerNo4Number of images to generate, 1-4.
thinking_modebooleanNotrueEnables thinking mode for better quality. Increases generation time.
watermarkbooleanNofalseAdds "AI Generated" watermark.
seedintegerNoRandom seed [0, 2147483647]. Same seed yields similar outputs.
enable_sequentialbooleanNofalseEnables image set output mode.
color_palettearrayNoCustom color theme. Array of objects with hex (string) and ratio (string, e.g. "25.00%"). 3-10 colors.
webhook_urlstringNoURL to receive a POST callback when the request completes. Must be a publicly accessible HTTPS endpoint.

Minimum Request

{
  "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers"
}

Full Request (all options)

{
  "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers",
  "size": "2K",
  "n": 2,
  "thinking_mode": true,
  "watermark": false,
  "seed": 12345
}

Response

{
  "status": "QUEUED",
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "message": "Request accepted and queued for processing"
}

Request Headers

Header Value
Content-Type application/json
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for Wan 2.7 Text to Image Request.

Code Meaning
202 Accepted - Request queued for processing
Bad Request - Invalid parameters or missing required fields
401 Unauthorized - Invalid or missing API key
402 Payment Required - Insufficient wallet balance
403 Forbidden - Access denied
Too Many Requests - Rate limit exceeded
500 Internal Server Error

Error Responses

Error responses from the queue system and status/webhook errors.

Queue System Errors

{
  "error": "Invalid request: prompt is required",
  "status": 400
}
{
  "error": "Unauthorized: invalid or missing API key",
  "status": 401
}
{
  "error": "Insufficient balance. Please top up your wallet.",
  "status": 402
}
{
  "error": "Rate limit exceeded. Please retry after some time.",
  "status": 429
}

Status / Webhook Errors

{
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}
{
  "error": "Request not found",
  "status": 404
}

Retrieving Results

After submitting a request, use the request_id from the queued response to check the status and retrieve results.

GET /v2/requests/status/{request_id}

GET https://gateway.pixazo.ai/v2/requests/status/wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184
Ocp-Apim-Subscription-Key: YOUR_API_KEY

Response (Queued / Processing)

{
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "status": "PROCESSING",
  "message": "Request is being processed"
}

Response (Completed)

{
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184/output.png"
      }
    ],
    "description": ""
  }
}

Response (Failed)

{
  "request_id": "wan-2-7-api_019d4e3f-83c5-719c-dbba-039df43078184",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Response Fields - Wan 2.7 Text to Image Request

Field Type Description
request_idstringUnique identifier for the request. Use this to poll for status.
statusstringCurrent status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).
messagestringHuman-readable status message.
resultobjectThe result payload (present when status is COMPLETED).
imagesarrayArray of generated image objects.
images[].file_namestringName of the output file.
images[].content_typestringMIME type of the output file (image/png).
images[].urlstringPublicly accessible URL to download the generated image.
descriptionstringOptional description returned with the response.
errorstringError message (present when status is FAILED).

Status Values

Status Description
Request has been accepted and is waiting in the queue.
Request is currently being processed by the AI model.
COMPLETED Request finished successfully. Results are available.
FAILED Request failed during processing. Check the error field for details.

Status Flow

QUEUED  -->  PROCESSING  -->  COMPLETED
                          \-->  FAILED

Typical Workflow

  1. Submit a POST request to https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27TextToImageRequest with your parameters.
  2. Receive a 202 Accepted response with a request_id and status QUEUED.
  3. Poll the status endpoint GET /v2/requests/status/{request_id} periodically (e.g. every 5-10 seconds).
  4. Retrieve the result once status is COMPLETED. The result object contains image URLs.
  5. (Optional) Use a webhook_url to receive results automatically without polling.

Wan 2.7 Text to Image API Pricing

ResolutionPrice (USD)
default$0.03

Wan 2.7 Image to Image (Image Editing) API Documentation

https://gateway.pixazo.ai/wan-2-7-api/v1

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Wan 2.7 Edit Image Request - Wan 2.7 API

Request Code

POST https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27EditImageRequest
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],
  "prompt": "Transform the tree into a lush green tree with vibrant flowers"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27EditImageRequest"

headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}

payload = {
    "images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],
    "prompt": "Transform the tree into a lush green tree with vibrant flowers"
}

response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27EditImageRequest", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
  },
  body: JSON.stringify({
    images: ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],
    prompt: "Transform the tree into a lush green tree with vibrant flowers"
  })
});

const data = await response.json();
console.log(data);
curl -X POST "https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27EditImageRequest" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -d '{"images":["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],"prompt":"Transform the tree into a lush green tree with vibrant flowers"}'

Output

{
  "status": "QUEUED",
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "message": "Request accepted and queued for processing"
}

Webhook (Optional)

You can optionally provide a webhook_url in your request body. When the request completes (success or failure), a POST request will be sent to your webhook URL with the result payload.

Webhook Payload (Success)

{
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293/output.png"
      }
    ],
    "description": ""
  }
}

Webhook Payload (Failure)

{
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Request Parameters - Wan 2.7 Edit Image Request

Field Type Required Default Description
imagesarrayYesArray of image URLs to edit. Supports 1-9 images. URLs must be publicly accessible. Supported formats: JPEG, JPG, PNG, BMP, WEBP. Max 20MB per image. Resolution: 240-8000px, aspect ratio 1:8 to 8:1.
promptstringYesText description of the desired edit. Max 5000 characters.
sizestringNo"2K"Output resolution: "1K", "2K" (default).
nintegerNo4Number of images to generate, 1-4.
watermarkbooleanNofalseAdds "AI Generated" watermark.
seedintegerNoRandom seed [0, 2147483647].
bbox_listarrayNoSelected areas for interactive editing. Array of arrays matching input image count. Each image supports up to 2 bounding boxes as [x1, y1, x2, y2] pixel coordinates.
enable_sequentialbooleanNofalseEnables image set output mode.
webhook_urlstringNoURL to receive a POST callback when the request completes. Must be a publicly accessible HTTPS endpoint.

Minimum Request

{
  "images": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
  ],
  "prompt": "Transform the tree into a lush green tree with vibrant flowers"
}

Full Request (all options)

{
  "images": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
  ],
  "prompt": "Transform the tree into a lush green tree with vibrant flowers",
  "size": "2K",
  "n": 1,
  "watermark": false,
  "seed": 42
}

Response

{
  "status": "QUEUED",
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "message": "Request accepted and queued for processing"
}

Request Headers

Header Value
Content-Type application/json
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for Wan 2.7 Edit Image Request.

Code Meaning
202 Accepted - Request queued for processing
Bad Request - Invalid parameters or missing required fields
401 Unauthorized - Invalid or missing API key
402 Payment Required - Insufficient wallet balance
403 Forbidden - Access denied
Too Many Requests - Rate limit exceeded
500 Internal Server Error

Error Responses

Error responses from the queue system and status/webhook errors.

Queue System Errors

{
  "error": "Invalid request: prompt is required",
  "status": 400
}
{
  "error": "Unauthorized: invalid or missing API key",
  "status": 401
}
{
  "error": "Insufficient balance. Please top up your wallet.",
  "status": 402
}
{
  "error": "Rate limit exceeded. Please retry after some time.",
  "status": 429
}

Status / Webhook Errors

{
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}
{
  "error": "Request not found",
  "status": 404
}

Retrieving Results

After submitting a request, use the request_id from the queued response to check the status and retrieve results.

GET /v2/requests/status/{request_id}

GET https://gateway.pixazo.ai/v2/requests/status/wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293
Ocp-Apim-Subscription-Key: YOUR_API_KEY

Response (Queued / Processing)

{
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "status": "PROCESSING",
  "message": "Request is being processed"
}

Response (Completed)

{
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293/output.png"
      }
    ],
    "description": ""
  }
}

Response (Failed)

{
  "request_id": "wan-2-7-api_019d4e44-7a8e-7df1-fad0-926fa428ca293",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Response Fields - Wan 2.7 Edit Image Request

Field Type Description
request_idstringUnique identifier for the request. Use this to poll for status.
statusstringCurrent status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).
messagestringHuman-readable status message.
resultobjectThe result payload (present when status is COMPLETED).
imagesarrayArray of generated image objects.
images[].file_namestringName of the output file.
images[].content_typestringMIME type of the output file (image/png).
images[].urlstringPublicly accessible URL to download the generated image.
descriptionstringOptional description returned with the response.
errorstringError message (present when status is FAILED).

Status Values

Status Description
Request has been accepted and is waiting in the queue.
Request is currently being processed by the AI model.
COMPLETED Request finished successfully. Results are available.
FAILED Request failed during processing. Check the error field for details.

Status Flow

QUEUED  -->  PROCESSING  -->  COMPLETED
                          \-->  FAILED

Typical Workflow

  1. Submit a POST request to https://gateway.pixazo.ai/wan-2-7-api/v1/generateWan27EditImageRequest with your parameters.
  2. Receive a 202 Accepted response with a request_id and status QUEUED.
  3. Poll the status endpoint GET /v2/requests/status/{request_id} periodically (e.g. every 5-10 seconds).
  4. Retrieve the result once status is COMPLETED. The result object contains image URLs.
  5. (Optional) Use a webhook_url to receive results automatically without polling.

Wan 2.7 Image to Image (Image Editing) API Pricing

ResolutionPrice (USD)
default$0.03

Wan 2.7 Video to Video (Video Editing) API Documentation

https://gateway.pixazo.ai/wan-2-7-video-api/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Wan 2.7 Video Style Transfer Request - Wan 2.7 Video API

Request Code

POST https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoStyleRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2v/wan-t2v-6421dc79-417c-445c-96e3-65c333aeafb9.mp4",
  "prompt": "Convert to claymation style"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoStyleRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2v/wan-t2v-6421dc79-417c-445c-96e3-65c333aeafb9.mp4",
    "prompt": "Convert to claymation style"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoStyleRequest';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  video_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2v/wan-t2v-6421dc79-417c-445c-96e3-65c333aeafb9.mp4',
  prompt: 'Convert to claymation style'
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoStyleRequest" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2v/wan-t2v-6421dc79-417c-445c-96e3-65c333aeafb9.mp4",
    "prompt": "Convert to claymation style"
  }'

Output

{
  "request_id": "wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Wan 2.7 Video Style Transfer Request

Parameter Required Type Description
video_urlYesstringURL of the video to edit. Format: MP4, MOV. Duration: 2-10s. Max 100MB.
reference_imagesYesarrayArray of reference image URLs (1-3 images). Format: JPEG, JPG, PNG, BMP, WEBP. Max 20MB each.
promptYesstringText description of the desired edit. Max 5,000 characters.
negative_promptNostringDescribes content you do not want in the video. Max 500 characters.
resolutionNostringResolution of the output video. Supported: "720P", "1080P". Default: "1080P".
ratioNostringAspect ratio. Supported: "16:9", "9:16", "1:1", "4:3", "3:4".
durationNointegerDuration in seconds. Set only to truncate. Range: 2-10.
audio_settingNostring"auto" (model decides) or "origin" (retains original audio). Default: "auto".
prompt_extendNobooleanEnables prompt rewriting using LLM. Default: true.
watermarkNobooleanWhether to add "AI-generated" watermark. Default: false.
seedNointegerRandom seed for reproducible results. Range: 0-2147483647.

Example Request

{
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2v/wan-t2v-6421dc79-417c-445c-96e3-65c333aeafb9.mp4",
  "prompt": "Convert to claymation style",
  "negative_prompt": "low quality, blurry",
  "resolution": "1080P",
  "ratio": "16:9",
  "duration": 5,
  "audio_setting": "origin",
  "prompt_extend": false,
  "watermark": true,
  "seed": 12345
}

Response

{
  "request_id": "wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance. Required: $0.01"
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-7-video-api' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-7-video-api",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-7-video-api_019d52bf-9ae0-7faf-594a-08e2d4e7281b0"

Response (Completed)

{
  "request_id": "wan-2-7-video-api_019d52bf-9ae0-7faf-594a-08e2d4e7281b0",
  "status": "COMPLETED",
  "model_id": "wan-2-7-video-api",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-video-api_019d52bf-9ae0-7faf-594a-08e2d4e7281b0/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T07:32:03.749Z",
  "updated_at": "2026-03-31T07:32:20.000Z",
  "completed_at": "2026-03-31T07:32:20.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type (video/mp4)
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.7 Video to Video (Video Editing) API Pricing

ResolutionDurationPrice (USD)
720P1s$0.1
1080P1s$0.15

Wan 2.7 Reference to Video (Ref Image + Ref Video to Video) API Documentation

https://gateway.pixazo.ai/wan-2-7-video-api/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Wan 2.7 Video Edit By Reference Request - Wan 2.7 Video API

Request Code

POST https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoEditRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-video.mp4",
  "reference_images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-videoedit-change-clothes.png"],
  "prompt": "Replace the clothes with the ones from the image"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoEditRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-video.mp4",
    "reference_images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-videoedit-change-clothes.png"],
    "prompt": "Replace the clothes with the ones from the image"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoEditRequest';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  video_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-video.mp4',
  reference_images: ['https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-videoedit-change-clothes.png'],
  prompt: 'Replace the clothes with the ones from the image'
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/wan-2-7-video-api/v1/generateWan27VideoEditRequest" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-video.mp4",
    "reference_images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-videoedit-change-clothes.png"],
    "prompt": "Replace the clothes with the ones from the image"
  }'

Output

{
  "request_id": "wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Wan 2.7 Video Edit By Reference Request

Parameter Required Type Description
video_urlYesstringURL of the video to edit. Format: MP4, MOV. Duration: 2-10s. Max 100MB.
reference_imagesYesarrayArray of reference image URLs (1-3 images). Format: JPEG, JPG, PNG, BMP, WEBP. Max 20MB each.
promptYesstringText description of the desired edit. Max 5,000 characters.
negative_promptNostringDescribes content you do not want in the video. Max 500 characters.
resolutionNostringResolution of the output video. Supported: "720P", "1080P". Default: "1080P".
ratioNostringAspect ratio. Supported: "16:9", "9:16", "1:1", "4:3", "3:4".
durationNointegerDuration in seconds. Set only to truncate. Range: 2-10.
audio_settingNostring"auto" (model decides) or "origin" (retains original audio). Default: "auto".
prompt_extendNobooleanEnables prompt rewriting using LLM. Default: true.
watermarkNobooleanWhether to add "AI-generated" watermark. Default: false.
seedNointegerRandom seed for reproducible results. Range: 0-2147483647.

Example Request

{
  "video_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-video.mp4",
  "reference_images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan2.7-videoedit-change-clothes.png"],
  "prompt": "Replace the clothes with the ones from the image",
  "negative_prompt": "low quality, blurry",
  "resolution": "1080P",
  "ratio": "16:9",
  "duration": 5,
  "audio_setting": "origin",
  "prompt_extend": false,
  "watermark": true,
  "seed": 12345
}

Response

{
  "request_id": "wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance. Required: $0.01"
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-7-video-api' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-7-video-api_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-7-video-api",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-7-video-api_019d52bf-9ae0-7faf-594a-08e2d4e7281b0"

Response (Completed)

{
  "request_id": "wan-2-7-video-api_019d52bf-9ae0-7faf-594a-08e2d4e7281b0",
  "status": "COMPLETED",
  "model_id": "wan-2-7-video-api",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-video-api_019d52bf-9ae0-7faf-594a-08e2d4e7281b0/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T07:32:03.749Z",
  "updated_at": "2026-03-31T07:32:20.000Z",
  "completed_at": "2026-03-31T07:32:20.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type (video/mp4)
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.7 Reference to Video (Ref Image + Ref Video to Video) API Pricing

ResolutionDurationPrice (USD)
720P1s$0.1
1080P1s$0.15
2. Wan 2.7 Pro

Wan 2.7 Pro Text to Image API Documentation

https://gateway.pixazo.ai/wan-2-7-pro-api/v1

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Wan 2.7 Pro Text to Image Request - Wan 2.7 Pro API

Request Code

POST https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProTextToImageRequest
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProTextToImageRequest"

headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}

payload = {
    "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers"
}

response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProTextToImageRequest", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
  },
  body: JSON.stringify({
    prompt: "A charming flower shop with beautiful window displays filled with colorful flowers"
  })
});

const data = await response.json();
console.log(data);
curl -X POST "https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProTextToImageRequest" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -d '{"prompt":"A charming flower shop with beautiful window displays filled with colorful flowers"}'

Output

{
  "status": "QUEUED",
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "message": "Request accepted and queued for processing"
}

Webhook (Optional)

You can optionally provide a webhook_url in your request body. When the request completes (success or failure), a POST request will be sent to your webhook URL with the result payload.

Webhook Payload (Success)

{
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6/output.png"
      }
    ],
    "description": ""
  }
}

Webhook Payload (Failure)

{
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Request Parameters - Wan 2.7 Pro Text to Image Request

Field Type Required Default Description
promptstringYesText description of the image to generate. Supports Chinese and English, max 5000 characters.
sizestringNo"2K"Output resolution: "1K", "2K" (default), "4K".
nintegerNo4Number of images to generate, 1-4.
thinking_modebooleanNotrueEnables thinking mode for better quality. Increases generation time.
watermarkbooleanNofalseAdds "AI Generated" watermark.
seedintegerNoRandom seed [0, 2147483647]. Same seed yields similar outputs.
enable_sequentialbooleanNofalseEnables image set output mode.
color_palettearrayNoCustom color theme. Array of objects with hex (string) and ratio (string, e.g. "25.00%"). 3-10 colors.
webhook_urlstringNoURL to receive a POST callback when the request completes. Must be a publicly accessible HTTPS endpoint.

Minimum Request

{
  "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers"
}

Full Request (all options)

{
  "prompt": "A charming flower shop with beautiful window displays filled with colorful flowers",
  "size": "2K",
  "n": 2,
  "thinking_mode": true,
  "watermark": false,
  "seed": 12345
}

Response

{
  "status": "QUEUED",
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "message": "Request accepted and queued for processing"
}

Request Headers

Header Value
Content-Type application/json
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for Wan 2.7 Pro Text to Image Request.

Code Meaning
202 Accepted - Request queued for processing
Bad Request - Invalid parameters or missing required fields
401 Unauthorized - Invalid or missing API key
402 Payment Required - Insufficient wallet balance
403 Forbidden - Access denied
Too Many Requests - Rate limit exceeded
500 Internal Server Error

Error Responses

Error responses from the queue system and status/webhook errors.

Queue System Errors

{
  "error": "Invalid request: prompt is required",
  "status": 400
}
{
  "error": "Unauthorized: invalid or missing API key",
  "status": 401
}
{
  "error": "Insufficient balance. Please top up your wallet.",
  "status": 402
}
{
  "error": "Rate limit exceeded. Please retry after some time.",
  "status": 429
}

Status / Webhook Errors

{
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}
{
  "error": "Request not found",
  "status": 404
}

Retrieving Results

After submitting a request, use the request_id from the queued response to check the status and retrieve results.

GET /v2/requests/status/{request_id}

GET https://gateway.pixazo.ai/v2/requests/status/wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6
Ocp-Apim-Subscription-Key: YOUR_API_KEY

Response (Queued / Processing)

{
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "status": "PROCESSING",
  "message": "Request is being processed"
}

Response (Completed)

{
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6/output.png"
      }
    ],
    "description": ""
  }
}

Response (Failed)

{
  "request_id": "wan-2-7-pro-api_019d4e4b-b2da-7a82-ecae-994db4acea2c6",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Response Fields - Wan 2.7 Pro Text to Image Request

Field Type Description
request_idstringUnique identifier for the request. Use this to poll for status.
statusstringCurrent status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).
messagestringHuman-readable status message.
resultobjectThe result payload (present when status is COMPLETED).
imagesarrayArray of generated image objects.
images[].file_namestringName of the output file.
images[].content_typestringMIME type of the output file (image/png).
images[].urlstringPublicly accessible URL to download the generated image.
descriptionstringOptional description returned with the response.
errorstringError message (present when status is FAILED).

Status Values

Status Description
Request has been accepted and is waiting in the queue.
Request is currently being processed by the AI model.
COMPLETED Request finished successfully. Results are available.
FAILED Request failed during processing. Check the error field for details.

Status Flow

QUEUED  -->  PROCESSING  -->  COMPLETED
                          \-->  FAILED

Typical Workflow

  1. Submit a POST request to https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProTextToImageRequest with your parameters.
  2. Receive a 202 Accepted response with a request_id and status QUEUED.
  3. Poll the status endpoint GET /v2/requests/status/{request_id} periodically (e.g. every 5-10 seconds).
  4. Retrieve the result once status is COMPLETED. The result object contains image URLs.
  5. (Optional) Use a webhook_url to receive results automatically without polling.

Wan 2.7 Pro Text to Image API Pricing

ResolutionPrice (USD)
default$0.075

Wan 2.7 Pro Image to Image (Image Editing) API Documentation

https://gateway.pixazo.ai/wan-2-7-pro-api/v1

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Wan 2.7 Pro Edit Image Request - Wan 2.7 Pro API

Request Code

POST https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProEditImageRequest
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_API_KEY

{
  "images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],
  "prompt": "Transform the tree into a lush green tree with vibrant flowers"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProEditImageRequest"

headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
}

payload = {
    "images": ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],
    "prompt": "Transform the tree into a lush green tree with vibrant flowers"
}

response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProEditImageRequest", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "YOUR_API_KEY"
  },
  body: JSON.stringify({
    images: ["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],
    prompt: "Transform the tree into a lush green tree with vibrant flowers"
  })
});

const data = await response.json();
console.log(data);
curl -X POST "https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProEditImageRequest" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  -d '{"images":["https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"],"prompt":"Transform the tree into a lush green tree with vibrant flowers"}'

Output

{
  "status": "QUEUED",
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "message": "Request accepted and queued for processing"
}

Webhook (Optional)

You can optionally provide a webhook_url in your request body. When the request completes (success or failure), a POST request will be sent to your webhook URL with the result payload.

Webhook Payload (Success)

{
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13/output.png"
      }
    ],
    "description": ""
  }
}

Webhook Payload (Failure)

{
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Request Parameters - Wan 2.7 Pro Edit Image Request

Field Type Required Default Description
imagesarrayYesArray of image URLs to edit. Supports 1-9 images. URLs must be publicly accessible. Supported formats: JPEG, JPG, PNG, BMP, WEBP. Max 20MB per image. Resolution: 240-8000px, aspect ratio 1:8 to 8:1.
promptstringYesText description of the desired edit. Max 5000 characters.
sizestringNo"2K"Output resolution: "1K", "2K" (default). Note: 4K is only available for text-to-image.
nintegerNo4Number of images to generate, 1-4.
watermarkbooleanNofalseAdds "AI Generated" watermark.
seedintegerNoRandom seed [0, 2147483647].
bbox_listarrayNoSelected areas for interactive editing. Array of arrays matching input image count. Each image supports up to 2 bounding boxes as [x1, y1, x2, y2] pixel coordinates.
enable_sequentialbooleanNofalseEnables image set output mode.
webhook_urlstringNoURL to receive a POST callback when the request completes. Must be a publicly accessible HTTPS endpoint.

Minimum Request

{
  "images": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
  ],
  "prompt": "Transform the tree into a lush green tree with vibrant flowers"
}

Full Request (all options)

{
  "images": [
    "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png"
  ],
  "prompt": "Transform the tree into a lush green tree with vibrant flowers",
  "size": "2K",
  "n": 1,
  "watermark": false,
  "seed": 42
}

Response

{
  "status": "QUEUED",
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "message": "Request accepted and queued for processing"
}

Request Headers

Header Value
Content-Type application/json
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for Wan 2.7 Pro Edit Image Request.

Code Meaning
202 Accepted - Request queued for processing
Bad Request - Invalid parameters or missing required fields
401 Unauthorized - Invalid or missing API key
402 Payment Required - Insufficient wallet balance
403 Forbidden - Access denied
Too Many Requests - Rate limit exceeded
500 Internal Server Error

Error Responses

Error responses from the queue system and status/webhook errors.

Queue System Errors

{
  "error": "Invalid request: prompt is required",
  "status": 400
}
{
  "error": "Unauthorized: invalid or missing API key",
  "status": 401
}
{
  "error": "Insufficient balance. Please top up your wallet.",
  "status": 402
}
{
  "error": "Rate limit exceeded. Please retry after some time.",
  "status": 429
}

Status / Webhook Errors

{
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}
{
  "error": "Request not found",
  "status": 404
}

Retrieving Results

After submitting a request, use the request_id from the queued response to check the status and retrieve results.

GET /v2/requests/status/{request_id}

GET https://gateway.pixazo.ai/v2/requests/status/wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13
Ocp-Apim-Subscription-Key: YOUR_API_KEY

Response (Queued / Processing)

{
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "status": "PROCESSING",
  "message": "Request is being processed"
}

Response (Completed)

{
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "status": "COMPLETED",
  "result": {
    "images": [
      {
        "file_name": "output.png",
        "content_type": "image/png",
        "url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13/output.png"
      }
    ],
    "description": ""
  }
}

Response (Failed)

{
  "request_id": "wan-2-7-pro-api_019d4e48-893e-7582-850a-9be6943bebe13",
  "status": "FAILED",
  "error": "Processing failed: upstream provider returned an error"
}

Response Fields - Wan 2.7 Pro Edit Image Request

Field Type Description
request_idstringUnique identifier for the request. Use this to poll for status.
statusstringCurrent status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).
messagestringHuman-readable status message.
resultobjectThe result payload (present when status is COMPLETED).
imagesarrayArray of generated image objects.
images[].file_namestringName of the output file.
images[].content_typestringMIME type of the output file (image/png).
images[].urlstringPublicly accessible URL to download the generated image.
descriptionstringOptional description returned with the response.
errorstringError message (present when status is FAILED).

Status Values

Status Description
Request has been accepted and is waiting in the queue.
Request is currently being processed by the AI model.
COMPLETED Request finished successfully. Results are available.
FAILED Request failed during processing. Check the error field for details.

Status Flow

QUEUED  -->  PROCESSING  -->  COMPLETED
                          \-->  FAILED

Typical Workflow

  1. Submit a POST request to https://gateway.pixazo.ai/wan-2-7-pro-api/v1/generateWan27ProEditImageRequest with your parameters.
  2. Receive a 202 Accepted response with a request_id and status QUEUED.
  3. Poll the status endpoint GET /v2/requests/status/{request_id} periodically (e.g. every 5-10 seconds).
  4. Retrieve the result once status is COMPLETED. The result object contains image URLs.
  5. (Optional) Use a webhook_url to receive results automatically without polling.

Wan 2.7 Pro Image to Image (Image Editing) API Pricing

ResolutionPrice (USD)
default$0.075
3. Wan 2.6

Wan 2.6 Image to Video API Documentation

https://gateway.pixazo.ai/wan-2-6-image-to-video-477/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Wan 2.6 Image to Video generate request - Wan 2.6 Image to Video API

Request Code

POST https://gateway.pixazo.ai/wan-2-6-image-to-video-477/v1/wan-2-6-image-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A serene mountain lake at sunrise, with gently flowing water and birds flying overhead",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "duration": "10",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/gemini-music/lyria-1771923124229-veu9ens.wav",
  "enable_prompt_expansion": true,
  "multi_shots": true,
  "enable_safety_checker": true
}
import requests

url = "https://gateway.pixazo.ai/wan-2-6-image-to-video-477/v1/wan-2-6-image-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A serene mountain lake at sunrise, with gently flowing water and birds flying overhead",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "duration": "10",
    "enable_prompt_expansion": True,
    "multi_shots": True,
    "enable_safety_checker": True
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-2-6-image-to-video-477/v1/wan-2-6-image-to-video-request';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  prompt: 'A serene mountain lake at sunrise, with gently flowing water and birds flying overhead',
  image_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png',
  aspect_ratio: '16:9',
  resolution: '1080p',
  duration: '10',
  enable_prompt_expansion: true,
  multi_shots: true,
  enable_safety_checker: true
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/wan-2-6-image-to-video-477/v1/wan-2-6-image-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A serene mountain lake at sunrise, with gently flowing water and birds flying overhead",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "duration": "10",
    "enable_prompt_expansion": true,
    "multi_shots": true,
    "enable_safety_checker": true
  }'

Output

{
  "request_id": "wan-2-6-image-to-video-477_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-6-image-to-video-477_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Wan 2.6 Image to Video generate request

Parameter Required Type Description
promptYesstringText prompt describing the desired motion, mood, or style for the generated video. Enhances visual storytelling.
image_urlYesstringPublicly accessible URL of the source image to convert into video. Must be reachable by the API server.
aspect_ratioNostringAspect ratio of the output video. Supported values: "16:9", "9:16", "1:1", "4:3", "3:4".
resolutionNostringResolution of the output video. Supported values: "720p", "1080p".
durationNostringDuration of the generated video in seconds. Supported values: "5", "10", "15".
audio_urlNostringURL of an audio file to use as background music. Must be publicly accessible. Format: WAV or MP3. Duration: 3-30 seconds. Max file size: 15 MB. If the audio is longer than the video duration, it is truncated to the first N seconds; if shorter than the video, the remaining video time is silent.
enable_prompt_expansionNobooleanWhen true, the API will enhance and expand the provided prompt for richer, more descriptive video generation.
multi_shotsNobooleanWhen true, enables multiple camera shots and transitions within the video for dynamic, cinematic output.
enable_safety_checkerNobooleanWhen true, activates content safety filtering to block inappropriate or harmful outputs.

Example Request

{
  "prompt": "A serene mountain lake at sunrise, with gently flowing water and birds flying overhead",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "duration": "10",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/gemini-music/lyria-1771923124229-veu9ens.wav",
  "enable_prompt_expansion": true,
  "multi_shots": true,
  "enable_safety_checker": true
}

Response

{
  "request_id": "wan-2-6-image-to-video-477_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-6-image-to-video-477_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance. Required: $0.01"
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-6-image-to-video-477' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-6-image-to-video-477_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-6-image-to-video-477",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-6-image-to-video-477_019d42ce-ae71-7999-24c9-5d76447ecafb4"

Response (Completed)

{
  "request_id": "wan-2-6-image-to-video-477_019d42ce-ae71-7999-24c9-5d76447ecafb4",
  "status": "COMPLETED",
  "model_id": "wan-2-6-image-to-video-477",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-6-image-to-video-477_019d42ce-ae71-7999-24c9-5d76447ecafb4/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T07:32:03.749Z",
  "updated_at": "2026-03-31T07:32:20.000Z",
  "completed_at": "2026-03-31T07:32:20.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type (video/mp4)
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.6 Image to Video API Pricing

ResolutionDurationPrice (USD)
Image/Text to Video5s$0.75
Image/Text to Video10s$1.5
Image/Text to Video15s$2.25

Wan 2.6 Text to Video API Documentation

https://gateway.pixazo.ai/wan-2-6-text-to-video-569/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Wan 2.6 Text to Video generate request - Wan 2.6 Text to Video API

Request Code

POST https://gateway.pixazo.ai/wan-2-6-text-to-video-569/v1/wan-2-6-text-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Create a cinematic video with multiple scenes showing a fox director making a movie, transitioning between different environments.",
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "duration": "10",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/gemini-music/lyria-1771923124229-veu9ens.wav",
  "negative_prompt": "low resolution, error, worst quality, low quality, defects",
  "enable_prompt_expansion": true,
  "multi_shots": true,
  "enable_safety_checker": true
}
import requests

url = "https://gateway.pixazo.ai/wan-2-6-text-to-video-569/v1/wan-2-6-text-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "Create a cinematic video with multiple scenes showing a fox director making a movie, transitioning between different environments.",
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "duration": "10",
    "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/gemini-music/lyria-1771923124229-veu9ens.wav",
    "negative_prompt": "low resolution, error, worst quality, low quality, defects",
    "enable_prompt_expansion": True,
    "multi_shots": True,
    "enable_safety_checker": True
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-2-6-text-to-video-569/v1/wan-2-6-text-to-video-request';

const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};

const data = {
  prompt: 'Create a cinematic video with multiple scenes showing a fox director making a movie, transitioning between different environments.',
  aspect_ratio: '16:9',
  resolution: '1080p',
  duration: '10',
  negative_prompt: 'low resolution, error, worst quality, low quality, defects',
  enable_prompt_expansion: true,
  multi_shots: true,
  enable_safety_checker: true
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/wan-2-6-text-to-video-569/v1/wan-2-6-text-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "Create a cinematic video with multiple scenes showing a fox director making a movie, transitioning between different environments.",
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "duration": "10",
    "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/gemini-music/lyria-1771923124229-veu9ens.wav",
    "negative_prompt": "low resolution, error, worst quality, low quality, defects",
    "enable_prompt_expansion": true,
    "multi_shots": true,
    "enable_safety_checker": true
  }'

Output

{
  "request_id": "wan-2-6-text-to-video-569_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-6-text-to-video-569_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Wan 2.6 Text to Video generate request

Parameter Required Type Description
promptYesstringA detailed text description of the desired video content. Include scenes, actions, lighting, and mood for optimal results.
aspect_ratioNostringThe aspect ratio of the output video. Supported values: "16:9", "9:16", "1:1", "4:3", "3:4".
resolutionNostringThe output video resolution. Supported values: "720p", "1080p".
durationNostringThe length of the generated video in seconds. Supported values: "5", "10", "15".
audio_urlNostringURL of an audio file to use as background music. Must be publicly accessible. Format: WAV or MP3. Duration: 3-30 seconds. Max file size: 15 MB. If the audio is longer than the video duration, it is truncated to the first N seconds; if shorter than the video, the remaining video time is silent.
negative_promptNostringDescription of elements to avoid in the video. Helps improve output quality by excluding undesired visuals.
enable_prompt_expansionNobooleanEnables intelligent prompting expansion to enhance scene richness and detail. When enabled, the model may augment your prompt with contextual enhancements.
multi_shotsNobooleanEnables multi-shot generation, allowing the model to segment the video into multiple cohesive scenes based on the prompt.
enable_safety_checkerNobooleanActivates content safety filtering to block inappropriate or harmful outputs.

Example Request

{
  "prompt": "Create a cinematic video with multiple scenes showing a fox director making a movie, transitioning between different environments.",
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "duration": "10",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/gemini-music/lyria-1771923124229-veu9ens.wav",
  "negative_prompt": "low resolution, error, worst quality, low quality, defects",
  "enable_prompt_expansion": true,
  "multi_shots": true,
  "enable_safety_checker": true
}

Response

{
  "status": "IN_QUEUE",
  "request_id": "a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8",
  "response_url": "[RESPONSE_URL]"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-6-text-to-video-569' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-6-text-to-video-569_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-6-text-to-video-569",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-6-text-to-video-569_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-2-6-text-to-video-569_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-2-6-text-to-video-569",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-6-text-to-video-569_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.6 Text to Video API Pricing

ResolutionDurationPrice (USD)
Image/Text to Video5s$0.75
Image/Text to Video10s$1.5
Image/Text to Video15s$2.25

Wan 2.6 Image to Video (Flash) API Documentation

https://gateway.pixazo.ai/wan-2-6-image-to-video-flash-api-353/v1

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Wan 2.6 Image-to-Video Flash API generate request - Wan 2.6 Image-to-Video Flash API

Request Code

POST https://gateway.pixazo.ai/wan-2-6-image-to-video-flash-api-353/v1/wan-2-6-image-to-video-flash-api-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A cinematic beach portrait that evolves into an energy-charged scene. Photorealistic, stable identity matching the reference image, natural lighting, smooth cinematic motion, no subtitles.\n\nShot 1 [0-4s] Continue from the first frame of the reference image. The man stands on a sunny beach wearing a black t-shirt with glowing blue flame graphics. Gentle ocean waves move behind him and wind lightly moves his hair and shirt. The blue flame design on the shirt begins to softly glow and flicker like living energy.\n\nShot 2 [4-8s] Slow cinematic push-in toward the subject. The glowing blue flames on the shirt animate and flow upward like magical energy. Subtle particles and light streaks appear around the flame pattern. The ocean sparkles in the sunlight while waves roll naturally in the background.\n\nShot 3 [8-12s] Hard cinematic cut to a slightly closer angle. The blue flames briefly expand outward as luminous energy patterns around the torso before settling back onto the shirt. The wind becomes slightly stronger, moving the shirt fabric and hair while the beach environment remains realistic.\n\nShot 4 [12-15s] Final cinematic close shot. The flames stabilize into a calm glowing pattern on the shirt while the subject stands confidently against the horizon. The camera slowly drifts sideways with warm sunlight reflecting off the ocean, ending in a clean photorealistic frame.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-6-image-to-video-flash-api-353/v1/wan-2-6-image-to-video-flash-api-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A cinematic beach portrait that evolves into an energy-charged scene. Photorealistic, stable identity matching the reference image, natural lighting, smooth cinematic motion, no subtitles.\n\nShot 1 [0-4s] Continue from the first frame of the reference image. The man stands on a sunny beach wearing a black t-shirt with glowing blue flame graphics. Gentle ocean waves move behind him and wind lightly moves his hair and shirt. The blue flame design on the shirt begins to softly glow and flicker like living energy.\n\nShot 2 [4-8s] Slow cinematic push-in toward the subject. The glowing blue flames on the shirt animate and flow upward like magical energy. Subtle particles and light streaks appear around the flame pattern. The ocean sparkles in the sunlight while waves roll naturally in the background.\n\nShot 3 [8-12s] Hard cinematic cut to a slightly closer angle. The blue flames briefly expand outward as luminous energy patterns around the torso before settling back onto the shirt. The wind becomes slightly stronger, moving the shirt fabric and hair while the beach environment remains realistic.\n\nShot 4 [12-15s] Final cinematic close shot. The flames stabilize into a calm glowing pattern on the shirt while the subject stands confidently against the horizon. The camera slowly drifts sideways with warm sunlight reflecting off the ocean, ending in a clean photorealistic frame.",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-2-6-image-to-video-flash-api-353/v1/wan-2-6-image-to-video-flash-api-request';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  prompt: "A cinematic beach portrait that evolves into an energy-charged scene. Photorealistic, stable identity matching the reference image, natural lighting, smooth cinematic motion, no subtitles.\n\nShot 1 [0-4s] Continue from the first frame of the reference image. The man stands on a sunny beach wearing a black t-shirt with glowing blue flame graphics. Gentle ocean waves move behind him and wind lightly moves his hair and shirt. The blue flame design on the shirt begins to softly glow and flicker like living energy.\n\nShot 2 [4-8s] Slow cinematic push-in toward the subject. The glowing blue flames on the shirt animate and flow upward like magical energy. Subtle particles and light streaks appear around the flame pattern. The ocean sparkles in the sunlight while waves roll naturally in the background.\n\nShot 3 [8-12s] Hard cinematic cut to a slightly closer angle. The blue flames briefly expand outward as luminous energy patterns around the torso before settling back onto the shirt. The wind becomes slightly stronger, moving the shirt fabric and hair while the beach environment remains realistic.\n\nShot 4 [12-15s] Final cinematic close shot. The flames stabilize into a calm glowing pattern on the shirt while the subject stands confidently against the horizon. The camera slowly drifts sideways with warm sunlight reflecting off the ocean, ending in a clean photorealistic frame.",
  image_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png'
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/wan-2-6-image-to-video-flash-api-353/v1/wan-2-6-image-to-video-flash-api-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A cinematic beach portrait that evolves into an energy-charged scene. Photorealistic, stable identity matching the reference image, natural lighting, smooth cinematic motion, no subtitles.\\n\\nShot 1 [0-4s] Continue from the first frame of the reference image. The man stands on a sunny beach wearing a black t-shirt with glowing blue flame graphics. Gentle ocean waves move behind him and wind lightly moves his hair and shirt. The blue flame design on the shirt begins to softly glow and flicker like living energy.\\n\\nShot 2 [4-8s] Slow cinematic push-in toward the subject. The glowing blue flames on the shirt animate and flow upward like magical energy. Subtle particles and light streaks appear around the flame pattern. The ocean sparkles in the sunlight while waves roll naturally in the background.\\n\\nShot 3 [8-12s] Hard cinematic cut to a slightly closer angle. The blue flames briefly expand outward as luminous energy patterns around the torso before settling back onto the shirt. The wind becomes slightly stronger, moving the shirt fabric and hair while the beach environment remains realistic.\\n\\nShot 4 [12-15s] Final cinematic close shot. The flames stabilize into a calm glowing pattern on the shirt while the subject stands confidently against the horizon. The camera slowly drifts sideways with warm sunlight reflecting off the ocean, ending in a clean photorealistic frame.",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
  }'

Output

{
  "request_id": "wan-2-6-image-to-video-flash-api-353_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-6-image-to-video-flash-api-353_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Wan 2.6 Image-to-Video Flash API generate request

Field Type Required Default Description
prompt string Yes A detailed narrative describing the desired video sequence, including shot-by-shot instructions, timing cues, and emotional tone. Must specify transitions, camera movement, and scene changes for best results.
image_url string Yes Publicly accessible URL of the input image to animate. Must be a stable, direct link (e.g., PNG, JPG). Supports HTTPS.
resolution string No 1080p Output video resolution. Supported values: "720p", "1080p", "2160p".
duration string No 5 Desired video duration in seconds. Accepts integer values from 5 to 15. Longer durations may incur higher processing time.
audio_url string No "" URL of an audio file to use as background music. Must be publicly accessible. Format: WAV or MP3. Duration: 3-30 seconds. Max file size: 15 MB. If the audio is longer than the video duration, it is truncated to the first N seconds; if shorter than the video, the remaining video time is silent.
negative_prompt string No "" A description of elements to avoid in the generated video. Helps exclude artifacts, distortions, or unwanted visual elements.
enable_prompt_expansion boolean No true When true, the model enhances the provided prompt with contextual details for richer output. Disable if you require strict prompt adherence.
enable_safety_checker boolean No true When true, enables content safety filtering to block inappropriate or harmful output. Disable only in controlled environments.

Minimum Request

{
  "prompt": "A cinematic beach portrait that evolves into an energy-charged scene. Photorealistic, stable identity matching the reference image, natural lighting, smooth cinematic motion, no subtitles.\n\nShot 1 [0-4s] Continue from the first frame of the reference image. The man stands on a sunny beach wearing a black t-shirt with glowing blue flame graphics. Gentle ocean waves move behind him and wind lightly moves his hair and shirt. The blue flame design on the shirt begins to softly glow and flicker like living energy.\n\nShot 2 [4-8s] Slow cinematic push-in toward the subject. The glowing blue flames on the shirt animate and flow upward like magical energy. Subtle particles and light streaks appear around the flame pattern. The ocean sparkles in the sunlight while waves roll naturally in the background.\n\nShot 3 [8-12s] Hard cinematic cut to a slightly closer angle. The blue flames briefly expand outward as luminous energy patterns around the torso before settling back onto the shirt. The wind becomes slightly stronger, moving the shirt fabric and hair while the beach environment remains realistic.\n\nShot 4 [12-15s] Final cinematic close shot. The flames stabilize into a calm glowing pattern on the shirt while the subject stands confidently against the horizon. The camera slowly drifts sideways with warm sunlight reflecting off the ocean, ending in a clean photorealistic frame.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
}

Full Request (all options)

{
  "prompt": "A cinematic beach portrait that evolves into an energy-charged scene. Photorealistic, stable identity matching the reference image, natural lighting, smooth cinematic motion, no subtitles.\n\nShot 1 [0-4s] Continue from the first frame of the reference image. The man stands on a sunny beach wearing a black t-shirt with glowing blue flame graphics. Gentle ocean waves move behind him and wind lightly moves his hair and shirt. The blue flame design on the shirt begins to softly glow and flicker like living energy.\n\nShot 2 [4-8s] Slow cinematic push-in toward the subject. The glowing blue flames on the shirt animate and flow upward like magical energy. Subtle particles and light streaks appear around the flame pattern. The ocean sparkles in the sunlight while waves roll naturally in the background.\n\nShot 3 [8-12s] Hard cinematic cut to a slightly closer angle. The blue flames briefly expand outward as luminous energy patterns around the torso before settling back onto the shirt. The wind becomes slightly stronger, moving the shirt fabric and hair while the beach environment remains realistic.\n\nShot 4 [12-15s] Final cinematic close shot. The flames stabilize into a calm glowing pattern on the shirt while the subject stands confidently against the horizon. The camera slowly drifts sideways with warm sunlight reflecting off the ocean, ending in a clean photorealistic frame.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png",
  "resolution": "1080p",
  "duration": "15",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/gemini-music/lyria-1771923124229-veu9ens.wav",
  "negative_prompt": "low resolution, error, worst quality, low quality, defects, distorted face, extra limbs, flickering, unstable identity",
  "enable_prompt_expansion": true,
  "enable_safety_checker": true
}

Response

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-6-image-to-video-flash-api-353' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-6-image-to-video-flash-api-353_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-6-image-to-video-flash-api-353",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-6-image-to-video-flash-api-353_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-2-6-image-to-video-flash-api-353_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-2-6-image-to-video-flash-api-353",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-6-image-to-video-flash-api-353_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.6 Image to Video (Flash) API Pricing

ResolutionDurationPrice (USD)
Image/Text to Video5s$0.75
Image/Text to Video10s$1.5
Image/Text to Video15s$2.25
4. Wan 2.5

Wan 2.5 Image to Image (Image Editing) API Documentation

https://gateway.pixazo.ai/wan-image-2-5/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Generate Image to Image - Wan 2.5 Image Generation

Request Code

POST https://gateway.pixazo.ai/wan-image-2-5/v1/generateEditImage2-5Request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Replace the floral dress with a vintage-style lace gown that has delicate embroidery on the collar and cuffs",
  "images": [
    "https://example.com/images/woman-in-dress.jpg"
  ],
  "size": "1280*1280"
}
import requests
import json

url = "https://gateway.pixazo.ai/wan-image-2-5/v1/generateEditImage2-5Request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "Replace the floral dress with a vintage-style lace gown that has delicate embroidery on the collar and cuffs",
    "images": ["https://example.com/images/woman-in-dress.jpg"],
    "size": "1280*1280"
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-image-2-5/v1/generateEditImage2-5Request';

const data = {
  prompt: 'Replace the floral dress with a vintage-style lace gown that has delicate embroidery on the collar and cuffs',
  images: ['https://example.com/images/woman-in-dress.jpg'],
  size: '1280*1280'
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan-image-2-5/v1/generateEditImage2-5Request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: XXXXXXXXXXXXXXXXXXXXXXX" \
  --data-raw '{
    "prompt": "Replace the floral dress with a vintage-style lace gown that has delicate embroidery on the collar and cuffs",
    "images": [
      "https://example.com/images/woman-in-dress.jpg"
    ],
    "size": "1280*1280"
}'

Output

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Generate Image to Image

Parameter Required Type Description
promptYesstringText description of the editing operation to perform.
imagesYesarrayArray of image URLs. Single image for editing, multiple images for fusion.
negative_promptNostringDefault: null. Elements to exclude from the edited image.
sizeNostringDefault: "1280*1280". Output image dimensions in width*height format.
nNointegerDefault: 1. Number of images to generate. Currently only 1 is supported.
seedNointegerRandom seed for reproducible results

Example Request

{
  "prompt": "Replace the floral dress with a vintage-style lace gown that has delicate embroidery on the collar and cuffs",
  "images": [
    "https://example.com/images/woman-in-dress.jpg"
  ],
  "size": "1280*1280"
}

Response

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-5-image-generation' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-5-image-generation",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-2-5-image-generation",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-5-image-generation_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.5 Image to Image (Image Editing) API Pricing

ResolutionPrice (USD)
All Resolution$0.05

Wan 2.5 Text to Image API Documentation

https://gateway.pixazo.ai/wan-image-2-5/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Generate Text to Image - Wan 2.5 Image Generation

Request Code

POST https://gateway.pixazo.ai/wan-image-2-5/v1/generateTextToImage2-5Request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A beautiful flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
  "size": "1024*1024",
  "prompt_extend": true,
  "watermark": false
}
import requests
import json

url = "https://gateway.pixazo.ai/wan-image-2-5/v1/generateTextToImage2-5Request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A beautiful flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
    "size": "1024*1024",
    "prompt_extend": True,
    "watermark": False
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-image-2-5/v1/generateTextToImage2-5Request';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};

const data = {
  prompt: 'A beautiful flower shop with exquisite windows, a beautiful wooden door, and flowers on display',
  size: '1024*1024',
  prompt_extend: true,
  watermark: false
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan-image-2-5/v1/generateTextToImage2-5Request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A beautiful flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
    "size": "1024*1024",
    "prompt_extend": true,
    "watermark": false
}'

Output

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Generate Text to Image

Parameter Required Type Description
promptYesstringText description of the image to generate. Supports English and Chinese.
negative_promptNostringDefault: null. Elements to exclude from the image.
sizeNostringDefault: "1024*1024". Image dimensions in width*height format.
nNointegerDefault: 1. Number of images to generate. Currently only 1 is supported.
prompt_extendNobooleanDefault: false. Enable intelligent prompt rewriting
watermarkNobooleanDefault: false. Add watermark to image
seedNointegerRandom seed for reproducible results

Example Request

{
  "prompt": "A majestic mountain landscape at sunset, snow-capped peaks, golden light, photorealistic",
  "size": "1440*960",
  "prompt_extend": true,
  "watermark": false
}

Response

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-5-image-generation' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-5-image-generation",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-2-5-image-generation_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-2-5-image-generation",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-5-image-generation_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.5 Text to Image API Pricing

ResolutionPrice (USD)
All Resolution$0.05

Wan 2.5 Image to Video API Documentation

https://gateway.pixazo.ai/wan-video-2-5/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Generate Image To Video - Wan 2.5 Video Generation API

Request Code

POST https://gateway.pixazo.ai/wan-video-2-5/v1/generateImageToVideo2-5Request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "img_url": "https://example.com/images/cat.png",
  "prompt": "A cat running on the grass",
  "resolution": "480P",
  "duration": 5,
  "audio": false,
  "prompt_extend": true,
  "watermark": false
}
import requests

url = "https://gateway.pixazo.ai/wan-video-2-5/v1/generateImageToVideo2-5Request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "img_url": "https://example.com/images/cat.png",
    "prompt": "A cat running on the grass",
    "resolution": "480P",
    "duration": 5,
    "audio": False,
    "prompt_extend": True,
    "watermark": False
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-video-2-5/v1/generateImageToVideo2-5Request';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  img_url: 'https://example.com/images/cat.png',
  prompt: 'A cat running on the grass',
  resolution: '480P',
  duration: 5,
  audio: false,
  prompt_extend: true,
  watermark: false
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan-video-2-5/v1/generateImageToVideo2-5Request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "img_url": "https://example.com/images/cat.png",
    "prompt": "A cat running on the grass",
    "resolution": "480P",
    "duration": 5,
    "audio": false,
    "prompt_extend": true,
    "watermark": false
}'

Output

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Generate Image To Video

Parameter Required Type Description
img_urlYesstringURL to the first-frame image. Supports public URLs, Base64 encoding, or local file paths.
promptNostringText description of the video to generate. Supports English and Chinese.
negative_promptNostringDefault: null. Elements to exclude from the video.
audio_urlNostringURL to custom audio file (overrides audio parameter). Takes priority over `audio` setting.
resolutionNostringDefault: "480P". Available resolutions: "480P", "720P", "1080P". Internally converted to size format.
durationNointegerDefault: 5. Video length in seconds. Available values: 5, 10
audioNobooleanDefault: false. Audio behavior: false (silent), true (auto-generate audio)
prompt_extendNobooleanDefault: true. Enable intelligent prompt rewriting
watermarkNobooleanDefault: false. Add watermark to video
seedNointegerRandom seed for reproducible results

Example Request

{
  "img_url": "https://example.com/images/battle-scene.png",
  "prompt": "An epic battle scene with dramatic music and sound effects",
  "negative_prompt": "blurry, low quality, distorted",
  "resolution": "1080P",
  "duration": 10,
  "audio": true,
  "prompt_extend": true,
  "watermark": false,
  "seed": 98765
}

Response

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-image-to-video-2-5' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-image-to-video-2-5",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-image-to-video-2-5",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-image-to-video-2-5_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.5 Image to Video API Pricing

ResolutionPrice (USD)
All Resolution$0.05

Wan 2.5 Text to Video API Documentation

https://gateway.pixazo.ai/wan-video-2-5/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Generate Text To Video Request - Wan 2.5 Video Generation API

Request Code

POST https://gateway.pixazo.ai/wan-video-2-5/v1/generateTextToVideo2-5Request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A beautiful sunset over a calm ocean with gentle waves",
  "size": "832*480",
  "duration": 5,
  "audio": false,
  "prompt_extend": true,
  "watermark": false
}
import requests

url = "https://gateway.pixazo.ai/wan-video-2-5/v1/generateTextToVideo2-5Request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A beautiful sunset over a calm ocean with gentle waves",
    "size": "832*480",
    "duration": 5,
    "audio": False,
    "prompt_extend": True,
    "watermark": False
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-video-2-5/v1/generateTextToVideo2-5Request';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const body = {
  prompt: 'A beautiful sunset over a calm ocean with gentle waves',
  size: '832*480',
  duration: 5,
  audio: false,
  prompt_extend: true,
  watermark: false
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(body)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan-video-2-5/v1/generateTextToVideo2-5Request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A beautiful sunset over a calm ocean with gentle waves",
    "size": "832*480",
    "duration": 5,
    "audio": false,
    "prompt_extend": true,
    "watermark": false
}'

Output

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Generate Text To Video Request

Parameter Required Type Description
promptYesstringText description of the video to generate. Supports English and Chinese.
negative_promptNostringDefault: null. Elements to exclude from the video.
audio_urlNostringURL to custom audio file (overrides audio parameter). Takes priority over `audio` setting.
sizeNostringDefault: "832*480". Available resolutions: "832*480", "1280*720", "1920*1080"
durationNointegerDefault: 5. Video length in seconds. Available values: 5, 10
audioNobooleanDefault: false. Audio behavior: false (silent), true (auto-generate audio)
prompt_extendNobooleanDefault: true. Enable intelligent prompt rewriting
watermarkNobooleanDefault: false. Add watermark to video
seedNointegerRandom seed for reproducible results

Example Request

{
  "prompt": "A beautiful sunset over a calm ocean with gentle waves",
  "size": "832*480",
  "duration": 5,
  "audio": false,
  "prompt_extend": true,
  "watermark": false
}

Response

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-image-to-video-2-5' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-image-to-video-2-5",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-image-to-video-2-5_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-image-to-video-2-5",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-image-to-video-2-5_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.5 Text to Video API Pricing

ResolutionPrice (USD)
All Resolution$0.05

Wan 2.5 Image to Video API Documentation

https://gateway.pixazo.ai/pixazo-wan-image-to-video-1763709522/v1

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Generate Request - Pixazo Wan Image to Video API

Request Code

POST https://gateway.pixazo.ai/pixazo-wan-image-to-video-1763709522/v1/pixazo-wan-image-to-video-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A stylish man walks down a sea side",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
}
import requests

url = "https://gateway.pixazo.ai/pixazo-wan-image-to-video-1763709522/v1/pixazo-wan-image-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A stylish man walks down a sea side",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/pixazo-wan-image-to-video-1763709522/v1/pixazo-wan-image-to-video-request';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const body = {
  prompt: 'A stylish man walks down a sea side',
  image_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png'
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(body)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/pixazo-wan-image-to-video-1763709522/v1/pixazo-wan-image-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A stylish man walks down a sea side",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
  }'

Output

{
  "request_id": "pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Generate Request

Field Type Required Default Description
prompt string Yes A detailed text description of the desired motion and scene context. The model uses this to animate the image.
image_url string Yes Publicly accessible HTTPS URL pointing to a static image (JPEG, PNG, WebP). The image will be animated according to the prompt.

Minimum Request

{
  "prompt": "A stylish man walks down a sea side",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
}

Full Request (all options)

{
  "prompt": "A stylish man walks down a sea side",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png"
}

Response

{
  "request_id": "pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your subscription key

Response Handling

Common status codes for Generate Request.

Code Meaning
202 Accepted — Request queued
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Response Fields - Check Status

<

Response Handling

Common status codes.

Field Type Description
video object Object containing video metadata and download URL
video.file_size integer Size of the video file in bytes
video.file_name string Name of the generated video file
video.content_type string MIME type of the video file
CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'pixazo-wan-image-to-video-1763709522' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "pixazo-wan-image-to-video-1763709522",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "pixazo-wan-image-to-video-1763709522",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/pixazo-wan-image-to-video-1763709522_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.5 Image to Video API Pricing

ResolutionPrice (USD)
All Resolution$0.05
5. Wan 2.2

Wan 2.2 Audio to Video (Ref Audio to Video) API Documentation

https://gateway.pixazo.ai/wan2.2-s2v/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Speech to Video Request - Wan 2.2 14B Speech to Video

Request Code

POST https://gateway.pixazo.ai/wan2.2-s2v/v1/generateSpeechToVideoRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "Summer beach vacation style, a man wearing sunglasses Blue Tshirt.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_music.mp3"
}
import requests
import json

url = "https://gateway.pixazo.ai/wan2.2-s2v/v1/generateSpeechToVideoRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "Summer beach vacation style, a man wearing sunglasses Blue Tshirt.",
    "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png",
    "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_music.mp3"
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
const url = 'https://gateway.pixazo.ai/wan2.2-s2v/v1/generateSpeechToVideoRequest';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  prompt: 'Summer beach vacation style, a man wearing sunglasses Blue Tshirt.',
  image_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png',
  audio_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_music.mp3'
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan2.2-s2v/v1/generateSpeechToVideoRequest" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
--data-raw '{
  "prompt": "Summer beach vacation style, a man wearing sunglasses Blue Tshirt.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_music.mp3"
}'

Output

{
  "request_id": "wan-2-2-14b-speech-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-2-14b-speech-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Speech to Video Request

Parameter Required Type Description
promptYesstringThe text prompt used for video generation. Describes the style and content for the generated video.
image_urlYesstringURL of the input image. If the input image does not match the chosen aspect ratio, it is resized and center cropped.
audio_urlYesstringThe URL of the audio file that will be used to generate lip-sync and facial expressions in the video.
negative_promptNostringNegative prompt for video generation. Default: "". Used to steer the generation away from unwanted features.
seedNointegerRandom seed for reproducibility. If not provided, a random seed is chosen.
resolutionNostringResolution of the generated video. Default: "480p". Available values: "480p", "580p", "720p".
num_inference_stepsNointegerNumber of inference steps for sampling. Higher values give better quality but take longer. Default: 27.
enable_safety_checkerNobooleanIf set to true, input data will be checked for safety before processing.
guidance_scaleNofloatClassifier-free guidance scale. Higher values give better adherence to the prompt but may decrease quality. Default: 3.5.
shiftNofloatShift value for the video. Must be between 1.0 and 10.0. Default: 5.
video_qualityNostringThe quality of the output video. Higher quality means better visual quality but larger file size. Default: "high". Values: "low", "medium", "high", "maximum".
video_write_modeNostringThe write mode of the output video. Default: "balanced". Values: "fast" (faster results, larger file), "balanced" (compromise), "small" (slowest, smallest file).

Example Request

{
  "prompt": "Summer beach vacation style, a man wearing sunglasses Blue Tshirt.",
  "image_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_model.png",
  "audio_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/input_music.mp3"
}

Response

{
  "request_id": "wan-2-2-14b-speech-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-2-14b-speech-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-2-14b-speech-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-2-14b-speech-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-2-14b-speech-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-2-14b-speech-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-2-2-14b-speech-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-2-2-14b-speech-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-2-14b-speech-to-video_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.2 Audio to Video (Ref Audio to Video) API Pricing

No data available

Could not load current pricing

Wan 2.2 Audio to Video (Ref Image + Ref Audio to Video — Animate) API Documentation

https://gateway.pixazo.ai/wan-2-2-animate-api-524/v1

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Generate Request - Wan 2.2 Animate

Request Code

POST /wan-2-2-animate-api-request HTTP/1.1
Host: gateway.pixazo.ai
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "video_url": "https://example.com/motion-source.mp4",
  "image_url": "https://example.com/target-image.png"
}
import requests

url = "https://gateway.pixazo.ai/wan-2-2-animate-api-524/v1/wan-2-2-animate-api-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "video_url": "https://example.com/motion-source.mp4",
    "image_url": "https://example.com/target-image.png"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/wan-2-2-animate-api-524/v1/wan-2-2-animate-api-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
};
const data = {
  video_url: "https://example.com/motion-source.mp4",
  image_url: "https://example.com/target-image.png"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
curl -X POST "https://gateway.pixazo.ai/wan-2-2-animate-api-524/v1/wan-2-2-animate-api-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "video_url": "https://example.com/motion-source.mp4",
    "image_url": "https://example.com/target-image.png"
  }'

Output

{
  "request_id": "wan-2-2-animate-api-524_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-2-animate-api-524_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Generate Request

Field Type Required Default Description
video_url string Yes URL pointing to a video file that will serve as the motion source. The API extracts motion patterns from this video to animate the target image.
image_url string Yes URL pointing to a static image that will be animated using the motion from the video. Must be a valid, publicly accessible image (PNG, JPEG, etc.).

Minimum Request

{
  "video_url": "https://example.com/motion-source.mp4",
  "image_url": "https://example.com/target-image.png"
}

Full Request (all options)

{
  "video_url": "https://example.com/motion-source.mp4",
  "image_url": "https://example.com/target-image.png"
}

Response

{
  "request_id": "wan-2-2-animate-api-524_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-2-2-animate-api-524_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for Generate Request.

Code Meaning
202 Accepted — Request queued
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Status Flow

Polling status values for async processing.

Status Description
IN_QUEUE Request is queued and waiting to be processed
IN_PROGRESS Request is currently being processed, animation rendering in progress
COMPLETED Request completed successfully, animation output is ready
FAILED Request failed due to invalid input, resource timeout, or system error

Status Flow

IN_QUEUE → IN_PROGRESS → [COMPLETED or FAILED]

Typical Workflow

  1. Submit request to /wan-2-2-animate-api-request with video_url and image_url
  2. Receive response containing request_id
  3. Poll /wan-2-2-animate-api-request-result every 2-5 seconds using request_id
  4. When status is COMPLETED, extract animation URL from response
  5. Use the animation URL to display or download the generated video

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-2-2-animate-api-524' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-2-2-animate-api-524_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-2-2-animate-api-524",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-2-2-animate-api-524_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-2-2-animate-api-524_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-2-2-animate-api-524",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-2-2-animate-api-524_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.2 Audio to Video (Ref Image + Ref Audio to Video — Animate) API Pricing

ResolutionPrice (USD)
All Resolution$0.4

Wan 2.2 Image to Video (First Frame to Video) API Documentation

https://gateway.pixazo.ai/wan-i2v/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Wan Image to Video First Frame - Wan Image to Video API

Request Code

POST https://gateway.pixazo.ai/wan-i2v/v1/generateImageToVideoRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model": "wan2.2-i2v-plus",
  "input": {
    "prompt": "Banana dancing in a traditional dress",
    "negative_prompt": "flowers, blur",
    "img_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg"
  },
  "parameters": {
    "resolution": "1080P",
    "duration": 5,
    "prompt_extend": true,
    "watermark": false,
    "seed": 12345
  }
}
import requests

url = "https://gateway.pixazo.ai/wan-i2v/v1/generateImageToVideoRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model": "wan2.2-i2v-plus",
    "input": {
        "prompt": "Banana dancing in a traditional dress",
        "negative_prompt": "flowers, blur",
        "img_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg"
    },
    "parameters": {
        "resolution": "1080P",
        "duration": 5,
        "prompt_extend": true,
        "watermark": false,
        "seed": 12345
    }
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-i2v/v1/generateImageToVideoRequest';

const data = {
  model: 'wan2.2-i2v-plus',
  input: {
    prompt: 'Banana dancing in a traditional dress',
    negative_prompt: 'flowers, blur',
    img_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg'
  },
  parameters: {
    resolution: '1080P',
    duration: 5,
    prompt_extend: true,
    watermark: false,
    seed: 12345
  }
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan-i2v/v1/generateImageToVideoRequest" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
--data-raw '{
  "model": "wan2.2-i2v-plus",
  "input": {
    "prompt": "Banana dancing in a traditional dress",
    "negative_prompt": "flowers, blur",
    "img_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg"
  },
  "parameters": {
    "resolution": "1080P",
    "duration": 5,
    "prompt_extend": true,
    "watermark": false,
    "seed": 12345
  }
}'

Output

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Wan Image to Video First Frame

Parameter Required Type Description
modelYesstringModel to use. Available values: "wan2.2-i2v-flash", "wan2.2-i2v-plus" (recommended), "wan2.1-i2v-plus", "wan2.1-i2v-turbo".
input.img_urlYesstringURL of the first frame image. Must be publicly accessible HTTP/HTTPS URL. Supports JPEG, JPG, PNG, BMP, WEBP. Max size: 10MB. Image resolution: 360-2000 pixels.
input.promptNostringDefault: null. Text description to guide video generation. Supports English and Chinese, up to 800 characters.
input.negative_promptNostringDefault: null. Elements to exclude from the video. Up to 500 characters.
parameters.resolutionNostringDefault varies by model:
- wan2.2-i2v-plus: "480P" or "1080P" (default: "1080P")
- wan2.2-i2v-flash: "480P" or "720P" (default: "720P")
- wan2.1-i2v-plus: only "720P"
- wan2.1-i2v-turbo: "480P" or "720P" (default: "720P")
parameters.durationNointegerDefault: 5. Video duration in seconds. For wan2.1-i2v-turbo: 3, 4, or 5. Other models fixed at 5.
parameters.prompt_extendNobooleanDefault: true. When enabled, uses LLM to enhance the prompt. Improves quality but adds processing time.
parameters.watermarkNobooleanDefault: false. When true, adds "Generated by AI" watermark at bottom-right.
parameters.seedNointegerDefault: null. Random seed for reproducible results. Range: 0-2147483647.

Example Request

{
  "model": "wan2.2-i2v-plus",
  "input": {
    "prompt": "Banana dancing in a traditional dress",
    "negative_prompt": "flowers, blur",
    "img_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/nano-banana.jpeg"
  },
  "parameters": {
    "resolution": "1080p",
    "duration": 5,
    "prompt_extend": true,
    "watermark": false,
    "seed": 12345
  }
}

Response

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-image-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-image-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-image-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-image-to-video_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.2 Image to Video (First Frame to Video) API Pricing

ResolutionDurationPrice (USD)
720P5s$0.6
480P-$0.085
720P5s$0.2
480P-$0.125
1080P-$0.75
480P5s$0.2
720P-$0.2
720P-$0.75

Wan 2.2 Image to Video (Keyframe to Video) API Documentation

https://gateway.pixazo.ai/wan-image-to-video/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Wan Keyframe to Video - Wan Image to Video API

Request Code

POST https://gateway.appypie.com/wan-i2v/v1/generateImageToVideoFrameRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
    "model": "wan2.1-kf2v-plus",
    "input": {
        "first_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-75d44f7d-a954-46b0-a603-10c09cb5df84-0.png",
        "last_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-47c06b16-ce7f-4977-8f7c-a04384409934-0.png",
        "prompt": "Realistic style. Aeroplane from takeoff to fly captured in camera",
        "negative_prompt": "person, text"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true,
        "watermark": false,
        "seed": 12345
    }
}
import requests

url = "https://gateway.appypie.com/wan-i2v/v1/generateImageToVideoFrameRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model": "wan2.1-kf2v-plus",
    "input": {
        "first_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-75d44f7d-a954-46b0-a603-10c09cb5df84-0.png",
        "last_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-47c06b16-ce7f-4977-8f7c-a04384409934-0.png",
        "prompt": "Realistic style. Aeroplane from takeoff to fly captured in camera",
        "negative_prompt": "person, text"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true,
        "watermark": false,
        "seed": 12345
    }
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.appypie.com/wan-i2v/v1/generateImageToVideoFrameRequest';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};

const data = {
  model: 'wan2.1-kf2v-plus',
  input: {
    first_frame_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-75d44f7d-a954-46b0-a603-10c09cb5df84-0.png',
    last_frame_url: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-47c06b16-ce7f-4977-8f7c-a04384409934-0.png',
    prompt: 'Realistic style. Aeroplane from takeoff to fly captured in camera',
    negative_prompt: 'person, text'
  },
  parameters: {
    resolution: '720P',
    prompt_extend: true,
    watermark: false,
    seed: 12345
  }
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.appypie.com/wan-i2v/v1/generateImageToVideoFrameRequest" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" --data-raw '{
    "model": "wan2.1-kf2v-plus",
    "input": {
        "first_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-75d44f7d-a954-46b0-a603-10c09cb5df84-0.png",
        "last_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-47c06b16-ce7f-4977-8f7c-a04384409934-0.png",
        "prompt": "Realistic style. Aeroplane from takeoff to fly captured in camera",
        "negative_prompt": "person, text"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true,
        "watermark": false,
        "seed": 12345
    }
}'

Output

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Wan Keyframe to Video

Parameter Required Type Description
modelYesstringModel to use. Available value: "wan2.1-kf2v-plus" (keyframe-to-video model).
input.first_frame_urlYesstringURL of the first frame image. Must be a publicly accessible HTTP/HTTPS URL. Supports JPEG, JPG, PNG, BMP, WEBP. Max size: 10MB. Resolution: 360–2000 pixels.
input.last_frame_urlYesstringURL of the last frame image. Must be a publicly accessible HTTP/HTTPS URL. Supports JPEG, JPG, PNG, BMP, WEBP. Max size: 10MB. Resolution: 360–2000 pixels.
input.promptNostringDefault: null. Text description to guide video transition between frames. Supports English and Chinese, up to 800 characters. Useful for camera/subject changes.
input.negative_promptNostringDefault: null. Elements to exclude from the video. Up to 500 characters.
parameters.resolutionNostringDefault: "720P". Currently only "720P" is supported. Typical resolution is 1280×720 with 16:9 aspect ratio.
parameters.durationNointegerDefault: 5. Video duration in seconds. Fixed at 5 seconds and cannot be changed.
parameters.prompt_extendNobooleanDefault: true. When enabled, uses LLM to enhance the prompt. Improves quality but adds processing time.
parameters.watermarkNobooleanDefault: false. When true, adds an "AI-generated" watermark at the bottom-right corner.
parameters.seedNointegerDefault: null. Random seed for reproducible results. Range: 0–2147483647.

Example Request

{
    "model": "wan2.1-kf2v-plus",
    "input": {
        "first_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-75d44f7d-a954-46b0-a603-10c09cb5df84-0.png",
        "last_frame_url": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/wan-t2i/wan-t2i-47c06b16-ce7f-4977-8f7c-a04384409934-0.png",
        "prompt": "Realistic style. Aeroplane from takeoff to fly captured in camera",
        "negative_prompt": "person, text"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true,
        "watermark": false,
        "seed": 12345
    }
}

Response

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-image-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-image-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-image-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-image-to-video_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.2 Image to Video (Keyframe to Video) API Pricing

ResolutionDurationPrice (USD)
720P5s$0.6
480P-$0.085
720P5s$0.2
480P-$0.125
1080P-$0.75
480P5s$0.2
720P-$0.2
720P-$0.75

Wan 2.2 Image to Image (Image Editing) API Documentation

https://gateway.pixazo.ai/wan-t2i/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Edit Image Request - Wan Text to Image API

Request Code

POST https://gateway.pixazo.ai/wan-t2i/v1/generateEditImageRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_all",
    "prompt": "A dreamy watercolor style",
    "base_image_url": "https://example.com/image.jpg"
  },
  "parameters": {
    "n": 1
  }
}
import requests

url = "https://gateway.pixazo.ai/wan-t2i/v1/generateEditImageRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model": "wanx2.1-imageedit",
    "input": {
        "function": "stylization_all",
        "prompt": "A dreamy watercolor style",
        "base_image_url": "https://example.com/image.jpg"
    },
    "parameters": {
        "n": 1
    }
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
fetch('https://gateway.pixazo.ai/wan-t2i/v1/generateEditImageRequest', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify({
    model: 'wanx2.1-imageedit',
    input: {
      function: 'stylization_all',
      prompt: 'A dreamy watercolor style',
      base_image_url: 'https://example.com/image.jpg'
    },
    parameters: {
      n: 1
    }
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST \"https://gateway.pixazo.ai/wan-t2i/v1/generateEditImageRequest\" \\
  -H \"Content-Type: application/json\" \\
  -H \"Cache-Control: no-cache\" \\
  -H \"Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY\" \\
  --data-raw '{
    \"model\": \"wanx2.1-imageedit\",
    \"input\": {
      \"function\": \"stylization_all\",
      \"prompt\": \"A dreamy watercolor style\",
      \"base_image_url\": \"https://example.com/image.jpg\"
    },
    \"parameters\": {
      \"n\": 1
    }
  }'

Output

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Edit Image Request

Parameter Required Type Description
modelYesstringModel to use. Available value: "wanx2.1-imageedit".
input.functionYesstringFunction to apply. Example: "stylization_all".
input.promptYesstringText prompt describing the desired edit. Supports English and Chinese.
input.base_image_urlYesstringURL of the base image to edit.
parameters.nNointegerNumber of images to generate (default: 1).

Example Request

{
  "model": "wanx2.1-imageedit",
  "input": {
    "function": "stylization_all",
    "prompt": "A dreamy watercolor style",
    "base_image_url": "https://example.com/image.jpg"
  },
  "parameters": {
    "n": 1
  }
}

Response

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-text-to-image' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-text-to-image",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-text-to-image",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-text-to-image_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.2 Image to Image (Image Editing) API Pricing

ResolutionPrice (USD)
1080*1920$0.6
1280*720$0.3
1280*720$0.6

Wan 2.2 Text to Image API Documentation

https://gateway.pixazo.ai/wan-t2i/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Text To Image Request - Wan Text to Image API

Request Code

POST https://gateway.pixazo.ai/wan-t2i/v1/generateTextToImageRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model": "wan2.2-t2i-flash",
  "input": {
    "prompt": "A beautiful mountain landscape at sunset"
  }
}
import requests

url = "https://gateway.pixazo.ai/wan-t2i/v1/generateTextToImageRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model": "wan2.2-t2i-flash",
    "input": {
        "prompt": "A beautiful mountain landscape at sunset"
    }
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-t2i/v1/generateTextToImageRequest';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  model: 'wan2.2-t2i-flash',
  input: {
    prompt: 'A beautiful mountain landscape at sunset'
  }
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan-t2i/v1/generateTextToImageRequest" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "model": "wan2.2-t2i-flash",
    "input": {
      "prompt": "A beautiful mountain landscape at sunset"
    }
  }'

Output

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Text To Image Request

Parameter Required Type Description
modelYesstringModel to use. Available values: "wan2.2-t2i-flash", "wan2.2-t2i-plus", "wan2.1-t2i-turbo", "wan2.1-t2i-plus".
input.promptYesstringPositive prompt describing the image. Supports English and Chinese, up to 800 characters.
input.negative_promptNostringDefault: null. Elements to exclude from the image (up to 500 characters).
parameters.sizeNostringDefault: "1024x1024". Resolution in widthxheight, range 512–1440, max 2M pixels.
parameters.nNointegerDefault: 1. Number of images (1–4).
parameters.seedNointegerDefault: null. Random seed for reproducible results (0–2147483647).
parameters.prompt_extendNobooleanDefault: false. Enhances the prompt using LLM. Adds 3–4s processing time.
parameters.watermarkNobooleanDefault: false. Adds "AI Generated" watermark at bottom-right.

Example Request

{
  "model": "wan2.2-t2i-flash",
  "input": {
    "prompt": "A beautiful mountain landscape at sunset",
    "negative_prompt": "people, buildings, text, watermark, signature"
  },
  "parameters": {
    "size": "1024*1024",
    "n": 1,
    "seed": 42,
    "prompt_extend": false,
    "watermark": false
  }
}

Response

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-text-to-image' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-text-to-image",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-text-to-image_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-text-to-image",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-text-to-image_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.2 Text to Image API Pricing

ResolutionPrice (USD)
1080*1920$0.6
1280*720$0.3
1280*720$0.6

Wan 2.2 Text to Video API Documentation

https://gateway.pixazo.ai/wan-video/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Generate Text To Video Request - Wan Text to Video API

Request Code

POST https://gateway.pixazo.ai/wan-video/v1/generateTextToVideoRequest
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model": "wan2.2-t2v-plus",
  "input": {
    "prompt": "A kitten running in the moonlight",
    "negative_prompt": "flowers, people, text"
  },
  "parameters": {
    "size": "1920*1080"
  }
}
import requests
import json

url = "https://gateway.pixazo.ai/wan-video/v1/generateTextToVideoRequest"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model": "wan2.2-t2v-plus",
    "input": {
        "prompt": "A kitten running in the moonlight",
        "negative_prompt": "flowers, people, text"
    },
    "parameters": {
        "size": "1920*1080"
    }
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const url = 'https://gateway.pixazo.ai/wan-video/v1/generateTextToVideoRequest';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  model: 'wan2.2-t2v-plus',
  input: {
    prompt: 'A kitten running in the moonlight',
    negative_prompt: 'flowers, people, text'
  },
  parameters: {
    size: '1920*1080'
  }
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -v -X POST "https://gateway.pixazo.ai/wan-video/v1/generateTextToVideoRequest" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
--data-raw '{
  "model": "wan2.2-t2v-plus",
  "input": {
    "prompt": "A kitten running in the moonlight",
    "negative_prompt": "flowers, people, text"
  },
  "parameters": {
    "size": "1920*1080"
  }
}'

Output

{
  "request_id": "wan-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Generate Text To Video Request

Parameter Required Type Description
modelYesstringModel to use. Available values: "wan2.2-t2v-plus" (recommended), "wanx2.1-t2v-turbo", "wanx2.1-t2v-plus".
input.promptYesstringText description of the video to generate. Supports English and Chinese.
input.negative_promptNostringDefault: null. Elements to exclude from the video.
parameters.sizeNostringDefault: "1280*720". Available resolutions vary by model.
parameters.nNointegerDefault: 1. Number of videos to generate. Currently only 1 is supported.

Example Request

{
  "model": "wan2.2-t2v-plus",
  "input": {
    "prompt": "A kitten running in the moonlight",
    "negative_prompt": "flowers, people, text"
  },
  "parameters": {
    "size": "1920*1080"
  }
}

Response

{
  "request_id": "wan-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'wan-text-to-video' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "wan-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "wan-text-to-video",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/wan-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "wan-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "wan-text-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/wan-text-to-video_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Wan 2.2 Text to Video API Pricing

ResolutionDurationPrice (USD)
1080*19205s$0.6
1280*7205s$0.3
1280*7205s$0.6