# Wan AI API

> Provider: **Alibaba**
> Source: https://www.pixazo.ai/models/wan

Comprehensive video and image generation by Alibaba.

## Wan 2.2

### Audio to Video (Ref Audio to Video)

## Base URL

```
https://gateway.pixazo.ai/wan2.2-s2v/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

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

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-2-14b-speech-to-video&operation=speech-to-video-request)

## 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

prompt

Yes

string

The text prompt used for video generation. Describes the style and content for the generated video.

image\_url

Yes

string

URL of the input image. If the input image does not match the chosen aspect ratio, it is resized and center cropped.

audio\_url

Yes

string

The URL of the audio file that will be used to generate lip-sync and facial expressions in the video.

negative\_prompt

No

string

Negative prompt for video generation. Default: "". Used to steer the generation away from unwanted features.

seed

No

integer

Random seed for reproducibility. If not provided, a random seed is chosen.

resolution

No

string

Resolution of the generated video. Default: "480p". Available values: "480p", "580p", "720p".

num\_inference\_steps

No

integer

Number of inference steps for sampling. Higher values give better quality but take longer. Default: 27.

enable\_safety\_checker

No

boolean

If set to true, input data will be checked for safety before processing.

guidance\_scale

No

float

Classifier-free guidance scale. Higher values give better adherence to the prompt but may decrease quality. Default: 3.5.

shift

No

float

Shift value for the video. Must be between 1.0 and 10.0. Default: 5.

video\_quality

No

string

The quality of the output video. Higher quality means better visual quality but larger file size. Default: "high". Values: "low", "medium", "high", "maximum".

video\_write\_mode

No

string

The 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Audio to Video (Ref Image + Ref Audio to Video — Animate)

## Base URL

```
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

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-2-animate-api-524&operation=wan-2-2-animate-api-request)

## 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

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

429

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.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Image to Video (First Frame to Video)

## Base URL

```
https://gateway.pixazo.ai/wan-i2v/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 Image to Video First Frame - Wan Image to Video API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-image-to-video&operation=wan-image-to-video-first-frame)

## 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

model

Yes

string

Model to use. Available values: "wan2.2-i2v-flash", "wan2.2-i2v-plus" (recommended), "wan2.1-i2v-plus", "wan2.1-i2v-turbo".

input.img\_url

Yes

string

URL 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.prompt

No

string

Default: null. Text description to guide video generation. Supports English and Chinese, up to 800 characters.

input.negative\_prompt

No

string

Default: null. Elements to exclude from the video. Up to 500 characters.

parameters.resolution

No

string

Default 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.duration

No

integer

Default: 5. Video duration in seconds. For wan2.1-i2v-turbo: 3, 4, or 5. Other models fixed at 5.

parameters.prompt\_extend

No

boolean

Default: true. When enabled, uses LLM to enhance the prompt. Improves quality but adds processing time.

parameters.watermark

No

boolean

Default: false. When true, adds "Generated by AI" watermark at bottom-right.

parameters.seed

No

integer

Default: 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Image to Video (Keyframe to Video)

## Base URL

```
https://gateway.pixazo.ai/wan-image-to-video/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 Keyframe to Video - Wan Image to Video API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-image-to-video&operation=wan-keyframe-to-video)

## 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

model

Yes

string

Model to use. Available value: "wan2.1-kf2v-plus" (keyframe-to-video model).

input.first\_frame\_url

Yes

string

URL 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\_url

Yes

string

URL 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.prompt

No

string

Default: null. Text description to guide video transition between frames. Supports English and Chinese, up to 800 characters. Useful for camera/subject changes.

input.negative\_prompt

No

string

Default: null. Elements to exclude from the video. Up to 500 characters.

parameters.resolution

No

string

Default: "720P". Currently only "720P" is supported. Typical resolution is 1280×720 with 16:9 aspect ratio.

parameters.duration

No

integer

Default: 5. Video duration in seconds. Fixed at 5 seconds and cannot be changed.

parameters.prompt\_extend

No

boolean

Default: true. When enabled, uses LLM to enhance the prompt. Improves quality but adds processing time.

parameters.watermark

No

boolean

Default: false. When true, adds an "AI-generated" watermark at the bottom-right corner.

parameters.seed

No

integer

Default: 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Image to Image (Image Editing)

## Base URL

```
https://gateway.pixazo.ai/wan-t2i/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

## Edit Image Request - Wan Text to Image API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-text-to-image&operation=edit-image-request)

## 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

model

Yes

string

Model to use. Available value: "wanx2.1-imageedit".

input.function

Yes

string

Function to apply. Example: "stylization\_all".

input.prompt

Yes

string

Text prompt describing the desired edit. Supports English and Chinese.

input.base\_image\_url

Yes

string

URL of the base image to edit.

parameters.n

No

integer

Number 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Text to Image

## Base URL

```
https://gateway.pixazo.ai/wan-t2i/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

## Text To Image Request - Wan Text to Image API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-text-to-image&operation=text-to-image-request)

## 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

model

Yes

string

Model to use. Available values: "wan2.2-t2i-flash", "wan2.2-t2i-plus", "wan2.1-t2i-turbo", "wan2.1-t2i-plus".

input.prompt

Yes

string

Positive prompt describing the image. Supports English and Chinese, up to 800 characters.

input.negative\_prompt

No

string

Default: null. Elements to exclude from the image (up to 500 characters).

parameters.size

No

string

Default: "1024x1024". Resolution in widthxheight, range 512–1440, max 2M pixels.

parameters.n

No

integer

Default: 1. Number of images (1–4).

parameters.seed

No

integer

Default: null. Random seed for reproducible results (0–2147483647).

parameters.prompt\_extend

No

boolean

Default: false. Enhances the prompt using LLM. Adds 3–4s processing time.

parameters.watermark

No

boolean

Default: 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Text to Video

## Base URL

```
https://gateway.pixazo.ai/wan-video/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 Text To Video Request - Wan Text to Video API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-text-to-video&operation=generate-text-to-viedo-request)

## 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

model

Yes

string

Model to use. Available values: "wan2.2-t2v-plus" (recommended), "wanx2.1-t2v-turbo", "wanx2.1-t2v-plus".

input.prompt

Yes

string

Text description of the video to generate. Supports English and Chinese.

input.negative\_prompt

No

string

Default: null. Elements to exclude from the video.

parameters.size

No

string

Default: "1280\*720". Available resolutions vary by model.

parameters.n

No

integer

Default: 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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)

## Base URL

```
https://gateway.pixazo.ai/wan-image-2-5/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 Image to Image - Wan 2.5 Image Generation

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-5-image-generation&operation=generate-image-to-image)

## 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

prompt

Yes

string

Text description of the editing operation to perform.

images

Yes

array

Array of image URLs. Single image for editing, multiple images for fusion.

negative\_prompt

No

string

Default: null. Elements to exclude from the edited image.

size

No

string

Default: "1280\*1280". Output image dimensions in width\*height format.

n

No

integer

Default: 1. Number of images to generate. Currently only 1 is supported.

seed

No

integer

Random 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Text to Image

## Base URL

```
https://gateway.pixazo.ai/wan-image-2-5/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 Text to Image - Wan 2.5 Image Generation

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-5-image-generation&operation=generate-text-to-image)

## 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

prompt

Yes

string

Text description of the image to generate. Supports English and Chinese.

negative\_prompt

No

string

Default: null. Elements to exclude from the image.

size

No

string

Default: "1024\*1024". Image dimensions in width\*height format.

n

No

integer

Default: 1. Number of images to generate. Currently only 1 is supported.

prompt\_extend

No

boolean

Default: false. Enable intelligent prompt rewriting

watermark

No

boolean

Default: false. Add watermark to image

seed

No

integer

Random 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Image to Video

## Base URL

```
https://gateway.pixazo.ai/wan-video-2-5/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 Image To Video - Wan 2.5 Video Generation API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-image-to-video-2-5&operation=generate-image-to-video)

## 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\_url

Yes

string

URL to the first-frame image. Supports public URLs, Base64 encoding, or local file paths.

prompt

No

string

Text description of the video to generate. Supports English and Chinese.

negative\_prompt

No

string

Default: null. Elements to exclude from the video.

audio\_url

No

string

URL to custom audio file (overrides audio parameter). Takes priority over \`audio\` setting.

resolution

No

string

Default: "480P". Available resolutions: "480P", "720P", "1080P". Internally converted to size format.

duration

No

integer

Default: 5. Video length in seconds. Available values: 5, 10

audio

No

boolean

Default: false. Audio behavior: false (silent), true (auto-generate audio)

prompt\_extend

No

boolean

Default: true. Enable intelligent prompt rewriting

watermark

No

boolean

Default: false. Add watermark to video

seed

No

integer

Random 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Text to Video

## Base URL

```
https://gateway.pixazo.ai/wan-video-2-5/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 Text To Video Request - Wan 2.5 Video Generation API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-image-to-video-2-5&operation=generate-text-to-viedo-request)

## 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

prompt

Yes

string

Text description of the video to generate. Supports English and Chinese.

negative\_prompt

No

string

Default: null. Elements to exclude from the video.

audio\_url

No

string

URL to custom audio file (overrides audio parameter). Takes priority over \`audio\` setting.

size

No

string

Default: "832\*480". Available resolutions: "832\*480", "1280\*720", "1920\*1080"

duration

No

integer

Default: 5. Video length in seconds. Available values: 5, 10

audio

No

boolean

Default: false. Audio behavior: false (silent), true (auto-generate audio)

prompt\_extend

No

boolean

Default: true. Enable intelligent prompt rewriting

watermark

No

boolean

Default: false. Add watermark to video

seed

No

integer

Random 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Image to Video

## Base URL

```
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

HTTP Python JavaScript cURL

```
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 fetch = require('node-fetch');

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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=pixazo-wan-image-to-video-1763709522&operation=pixazo-wan-image-to-video-request)

## 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

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

429

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

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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

## Base URL

```
https://gateway.pixazo.ai/wan-2-6-image-to-video-477/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 generate request - Wan 2.6 Image to Video API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-6-image-to-video-477-api&operation=wan-2-6-image-to-video-request)

## 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

prompt

Yes

string

Text prompt describing the desired motion, mood, or style for the generated video. Enhances visual storytelling.

image\_url

Yes

string

Publicly accessible URL of the source image to convert into video. Must be reachable by the API server.

aspect\_ratio

No

string

Aspect ratio of the output video. Supported values: "16:9", "9:16", "1:1", "4:3", "3:4".

resolution

No

string

Resolution of the output video. Supported values: "720p", "1080p".

duration

No

string

Duration of the generated video in seconds. Supported values: "5", "10", "15".

audio\_url

No

string

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.

enable\_prompt\_expansion

No

boolean

When true, the API will enhance and expand the provided prompt for richer, more descriptive video generation.

multi\_shots

No

boolean

When true, enables multiple camera shots and transitions within the video for dynamic, cinematic output.

enable\_safety\_checker

No

boolean

When 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type (video/mp4)

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Text to Video

## Base URL

```
https://gateway.pixazo.ai/wan-2-6-text-to-video-569/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 Text to Video generate request - Wan 2.6 Text to Video API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-6-text-to-video-569&operation=wan-2-6-text-to-video-request)

## 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

prompt

Yes

string

A detailed text description of the desired video content. Include scenes, actions, lighting, and mood for optimal results.

aspect\_ratio

No

string

The aspect ratio of the output video. Supported values: "16:9", "9:16", "1:1", "4:3", "3:4".

resolution

No

string

The output video resolution. Supported values: "720p", "1080p".

duration

No

string

The length of the generated video in seconds. Supported values: "5", "10", "15".

audio\_url

No

string

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

No

string

Description of elements to avoid in the video. Helps improve output quality by excluding undesired visuals.

enable\_prompt\_expansion

No

boolean

Enables intelligent prompting expansion to enhance scene richness and detail. When enabled, the model may augment your prompt with contextual enhancements.

multi\_shots

No

boolean

Enables multi-shot generation, allowing the model to segment the video into multiple cohesive scenes based on the prompt.

enable\_safety\_checker

No

boolean

Activates 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Image to Video (Flash)

## Base URL

```
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

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-6-image-to-video-flash-api-353&operation=wan-2-6-image-to-video-flash-api-request)

## 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

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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-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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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 Pro

### Text to Image

## Base URL

```
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

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-7-pro-api&operation=text-to-image-request)

## 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

prompt

string

Yes

—

Text description of the image to generate. Supports Chinese and English, max 5000 characters.

size

string

No

"2K"

Output resolution: "1K", "2K" (default), "4K".

n

integer

No

4

Number of images to generate, 1-4.

thinking\_mode

boolean

No

true

Enables thinking mode for better quality. Increases generation time.

watermark

boolean

No

false

Adds "AI Generated" watermark.

seed

integer

No

—

Random seed \[0, 2147483647\]. Same seed yields similar outputs.

enable\_sequential

boolean

No

false

Enables image set output mode.

color\_palette

array

No

—

Custom color theme. Array of objects with `hex` (string) and `ratio` (string, e.g. "25.00%"). 3-10 colors.

webhook\_url

string

No

—

URL 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

400

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

429

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\_id

string

Unique identifier for the request. Use this to poll for status.

status

string

Current status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).

message

string

Human-readable status message.

result

object

The result payload (present when status is COMPLETED).

images

array

Array of generated image objects.

images\[\].file\_name

string

Name of the output file.

images\[\].content\_type

string

MIME type of the output file (image/png).

images\[\].url

string

Publicly accessible URL to download the generated image.

description

string

Optional description returned with the response.

error

string

Error message (present when status is FAILED).

## Status Values

Status

Description

QUEUED

Request has been accepted and is waiting in the queue.

PROCESSING

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.

### Image to Image (Image Editing)

## Base URL

```
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

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-7-pro-api&operation=edit-image-request)

## 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

images

array

Yes

—

Array 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.

prompt

string

Yes

—

Text description of the desired edit. Max 5000 characters.

size

string

No

"2K"

Output resolution: "1K", "2K" (default). Note: 4K is only available for text-to-image.

n

integer

No

4

Number of images to generate, 1-4.

watermark

boolean

No

false

Adds "AI Generated" watermark.

seed

integer

No

—

Random seed \[0, 2147483647\].

bbox\_list

array

No

—

Selected 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\_sequential

boolean

No

false

Enables image set output mode.

webhook\_url

string

No

—

URL 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

400

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

429

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\_id

string

Unique identifier for the request. Use this to poll for status.

status

string

Current status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).

message

string

Human-readable status message.

result

object

The result payload (present when status is COMPLETED).

images

array

Array of generated image objects.

images\[\].file\_name

string

Name of the output file.

images\[\].content\_type

string

MIME type of the output file (image/png).

images\[\].url

string

Publicly accessible URL to download the generated image.

description

string

Optional description returned with the response.

error

string

Error message (present when status is FAILED).

## Status Values

Status

Description

QUEUED

Request has been accepted and is waiting in the queue.

PROCESSING

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

### Text to Image

## Base URL

```
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

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-7-api&operation=text-to-image-request)

## 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

prompt

string

Yes

—

Text description of the image to generate. Supports Chinese and English, max 5000 characters.

size

string

No

"2K"

Output resolution: "1K", "2K" (default). No 4K for standard model.

n

integer

No

4

Number of images to generate, 1-4.

thinking\_mode

boolean

No

true

Enables thinking mode for better quality. Increases generation time.

watermark

boolean

No

false

Adds "AI Generated" watermark.

seed

integer

No

—

Random seed \[0, 2147483647\]. Same seed yields similar outputs.

enable\_sequential

boolean

No

false

Enables image set output mode.

color\_palette

array

No

—

Custom color theme. Array of objects with `hex` (string) and `ratio` (string, e.g. "25.00%"). 3-10 colors.

webhook\_url

string

No

—

URL 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

400

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

429

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\_id

string

Unique identifier for the request. Use this to poll for status.

status

string

Current status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).

message

string

Human-readable status message.

result

object

The result payload (present when status is COMPLETED).

images

array

Array of generated image objects.

images\[\].file\_name

string

Name of the output file.

images\[\].content\_type

string

MIME type of the output file (image/png).

images\[\].url

string

Publicly accessible URL to download the generated image.

description

string

Optional description returned with the response.

error

string

Error message (present when status is FAILED).

## Status Values

Status

Description

QUEUED

Request has been accepted and is waiting in the queue.

PROCESSING

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.

### Image to Image (Image Editing)

## Base URL

```
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

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-7-api&operation=edit-image-request)

## 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

images

array

Yes

—

Array 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.

prompt

string

Yes

—

Text description of the desired edit. Max 5000 characters.

size

string

No

"2K"

Output resolution: "1K", "2K" (default).

n

integer

No

4

Number of images to generate, 1-4.

watermark

boolean

No

false

Adds "AI Generated" watermark.

seed

integer

No

—

Random seed \[0, 2147483647\].

bbox\_list

array

No

—

Selected 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\_sequential

boolean

No

false

Enables image set output mode.

webhook\_url

string

No

—

URL 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

400

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

429

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\_id

string

Unique identifier for the request. Use this to poll for status.

status

string

Current status of the request (QUEUED, PROCESSING, COMPLETED, FAILED).

message

string

Human-readable status message.

result

object

The result payload (present when status is COMPLETED).

images

array

Array of generated image objects.

images\[\].file\_name

string

Name of the output file.

images\[\].content\_type

string

MIME type of the output file (image/png).

images\[\].url

string

Publicly accessible URL to download the generated image.

description

string

Optional description returned with the response.

error

string

Error message (present when status is FAILED).

## Status Values

Status

Description

QUEUED

Request has been accepted and is waiting in the queue.

PROCESSING

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.

### Video to Video (Video Editing)

## Base URL

```
https://gateway.pixazo.ai/wan-2-7-video-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 Video Style Transfer Request - Wan 2.7 Video API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-7-video-api&operation=edit-video-video-to-video)

## 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\_url

Yes

string

URL of the video to edit. Format: MP4, MOV. Duration: 2-10s. Max 100MB.

reference\_images

Yes

array

Array of reference image URLs (1-3 images). Format: JPEG, JPG, PNG, BMP, WEBP. Max 20MB each.

prompt

Yes

string

Text description of the desired edit. Max 5,000 characters.

negative\_prompt

No

string

Describes content you do not want in the video. Max 500 characters.

resolution

No

string

Resolution of the output video. Supported: "720P", "1080P". Default: "1080P".

ratio

No

string

Aspect ratio. Supported: "16:9", "9:16", "1:1", "4:3", "3:4".

duration

No

integer

Duration in seconds. Set only to truncate. Range: 2-10.

audio\_setting

No

string

"auto" (model decides) or "origin" (retains original audio). Default: "auto".

prompt\_extend

No

boolean

Enables prompt rewriting using LLM. Default: true.

watermark

No

boolean

Whether to add "AI-generated" watermark. Default: false.

seed

No

integer

Random 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type (video/mp4)

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.

### Reference to Video (Ref Image + Ref Video to Video)

## Base URL

```
https://gateway.pixazo.ai/wan-2-7-video-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 Video Edit By Reference Request - Wan 2.7 Video API

## Request Code

HTTP Python JavaScript cURL

```
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"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=wan-2-7-video-api&operation=edit-video-video-to-video-by-reference)

## 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\_url

Yes

string

URL of the video to edit. Format: MP4, MOV. Duration: 2-10s. Max 100MB.

reference\_images

Yes

array

Array of reference image URLs (1-3 images). Format: JPEG, JPG, PNG, BMP, WEBP. Max 20MB each.

prompt

Yes

string

Text description of the desired edit. Max 5,000 characters.

negative\_prompt

No

string

Describes content you do not want in the video. Max 500 characters.

resolution

No

string

Resolution of the output video. Supported: "720P", "1080P". Default: "1080P".

ratio

No

string

Aspect ratio. Supported: "16:9", "9:16", "1:1", "4:3", "3:4".

duration

No

integer

Duration in seconds. Set only to truncate. Range: 2-10.

audio\_setting

No

string

"auto" (model decides) or "origin" (retains original audio). Default: "auto".

prompt\_extend

No

boolean

Enables prompt rewriting using LLM. Default: true.

watermark

No

boolean

Whether to add "AI-generated" watermark. Default: false.

seed

No

integer

Random 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-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal 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

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type (video/mp4)

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System 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.
