Pika 2.2 API - AI Video Generation APIs

by Pika Labs

Pika 2.2 API, developers can harness Pika's unique artistic capabilities for generating videos with distinctive visual styles. The API excels at creative video generation, making it popular among artists, content creators, and brands seeking unique video content.

Get API Key
Pika Video API

Models Version

LIMITED TIME OFFER

Get $5 Free Credit on First Payment

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

Claim Your $5 →

Pika 2.2 Text to Video API Documentation

https://gateway.pixazo.ai/pika-2-2-text-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

Pika 2.2 (Text to Video) generate request - Pika 2.2 (Text to Video)

Request Code

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

{
  "prompt": "A large elegant white poodle on the deck of a yacht wearing oversized sunglasses, glossy magazine style, slow camera orbit"
}
import requests

url = "https://gateway.pixazo.ai/pika-2-2-text-to-video/v1/pika-2-2-text-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A large elegant white poodle on the deck of a yacht wearing oversized sunglasses, glossy magazine style, slow camera orbit"
}

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

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

const data = {
  prompt: 'A large elegant white poodle on the deck of a yacht wearing oversized sunglasses, glossy magazine style, slow camera orbit'
};

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/pika-2-2-text-to-video/v1/pika-2-2-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": "A large elegant white poodle on the deck of a yacht wearing oversized sunglasses, glossy magazine style, slow camera orbit"
  }'

Output

{
  "video": {
    "file_size": 14530500,
    "file_name": "output.mp4",
    "content_type": "application/octet-stream",
    "url": "[RESPONSE_URL]"
  }
}

Request Parameters - Pika 2.2 (Text to Video) generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
promptYesstringText description of the desired video. Be specific for best results.
seedNointegerOptional integer to control randomness for reproducible outputs.
negative_promptNostringugly, bad, terribleText describing undesired elements to avoid. Helps refine output quality.
aspect_ratioNoenum16:916:9, 9:16, 1:1, 4:5, 5:4, 3:2, 2:3Video aspect ratio. Allowed values: 16:9, 9:16, 1:1, 4:5, 5:4, 3:2, 2:3.
resolutionNoenum720p720p, 1080pOutput video resolution. Allowed values: 720p, 1080p.
durationNoenum55, 10Duration of the generated video in seconds. Allowed values: 5, 10.

Minimum Request

{
  "prompt": "A large elegant white poodle on the deck of a yacht wearing oversized sunglasses, glossy magazine style, slow camera orbit"
}

Full Request (all options)

{
  "prompt": "A large elegant white poodle on the deck of a yacht wearing oversized sunglasses, glossy magazine style, slow camera orbit",
  "seed": 42,
  "negative_prompt": "ugly, bad, terrible",
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "duration": 5
}

Response

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

Response Fields - Pika 2.2 (Text to Video) generate request

Field Type Description
request_id string Unique identifier for tracking the video generation request.
status string Current status of the request (e.g., QUEUED, PROCESSING).
polling_url string URL to check the status of the request for result retrieval.

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 Pika 2.2 (Text to Video) generate request.

Code Meaning
200 Success
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

400 Validation Error

{
  "error": "Missing required field: prompt"
}

401 Unauthorized

{
  "error": "Invalid or missing subscription key"
}

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 for details
ERROR System error — request was not processed and not charged

Status Flow

Submit Request → QUEUED → PROCESSING → COMPLETED
                            ↘ FAILED
                            ↘ ERROR

Typical Workflow

  1. Submit request to /pika-2-2-text-to-video-request endpoint
  2. Receive response with request_id
  3. Poll /v2/requests/status/{request_id} every 2–3 seconds
  4. When status is COMPLETED, use the media_url in response
  5. Handle FAILED or ERROR statuses by retrying or adjusting prompts

Pika 2.2 (Text to Video) check status - Pika 2.2 (Text to Video)

Request Code

POST https://gateway.pixazo.ai/v2/requests/status/pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "request_id": "pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
import requests

url = "https://gateway.pixazo.ai/v2/requests/status/pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
headers = {
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "request_id": "pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/v2/requests/status/pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

const headers = {
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};

const data = {
  request_id: 'pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
};

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/v2/requests/status/pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "request_id": "pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  }'

Output

{
  "video": {
    "file_size": 14530500,
    "file_name": "output.mp4",
    "content_type": "application/octet-stream",
    "url": "[RESPONSE_URL]"
  }
}

Request Parameters - Pika 2.2 (Text to Video) check status

ParameterRequiredTypeDefaultAllowed values / rangeDescription
request_idYesstringUnique identifier returned from the initial request to check status.

Minimum Request

{
  "request_id": "pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Full Request (all options)

{
  "request_id": "pika-2-2-text-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response

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

Response Fields - Pika 2.2 (Text to Video) check status

Field Type Description
request_id string Unique identifier for tracking the video generation request.
status string Current status of the request (e.g., COMPLETED, FAILED).
model_id string Identifier of the model used for generation.
error string/null Error message if status is FAILED or ERROR; null otherwise.
output.media_url array Array containing the URL to the generated video file.
output.media_type string MIME type of the output media (e.g., video/mp4).
created_at string Timestamp when the request was created.
updated_at string Timestamp when the request was last updated.
completed_at string Timestamp when the request was completed.

Request Headers

Header Value
Ocp-Apim-Subscription-Key Your subscription key

Response Handling

Common status codes for Pika 2.2 (Text to Video) check status.

Code Meaning
200 Success
400 Bad Request (invalid request_id)
401 Unauthorized
403 Forbidden
404 Not Found (request_id not found)
Too Many Requests
500 Internal Server Error

Notes & Tips

  • Poll the status endpoint every 2–3 seconds until COMPLETED, FAILED, or ERROR.
  • Implement exponential backoff for retry logic on ERROR or 500 responses.
  • Use detailed, vivid prompts with style and motion cues (e.g., “slow camera orbit”, “glossy magazine style”).
  • Use negative_prompt to exclude unwanted elements like blur, distortion, or artifacts.
  • For consistent results across generations, specify a fixed seed value.
  • Prefer 1080p resolution for professional use, but use 720p for faster turnaround.
  • Video generation typically takes 30–90 seconds depending on complexity and server load.
  • Failed requests are not charged; only completed requests incur costs.

Pika 2.2 Text to Video API Pricing

ResolutionPrice (USD)
720p (5 sec)$0.2
720p (10 sec)$0.4
1080p (5 sec)$0.45
1080p (10 sec)$0.9

Pika 2.2 Image to Video API Documentation

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

Pika 2.2 (Image to Video) generate request - Pika 2.2 (Image to Video)

Request Code

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

{
  "image_url": "https://example.com/example_inputs/pika/pika_i2v_v22_input.png",
  "prompt": "The man and the horse are slowly walking towards the camera, the camera orbits and dolly out"
}
import requests

url = "https://gateway.pixazo.ai/pika-2-2-image-to-video/v1/pika-2-2-image-to-video-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "image_url": "https://example.com/example_inputs/pika/pika_i2v_v22_input.png",
    "prompt": "The man and the horse are slowly walking towards the camera, the camera orbits and dolly out"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/pika-2-2-image-to-video/v1/pika-2-2-image-to-video-request";
const headers = {
  "Content-Type": "application/json",
  "Cache-Control": "no-cache",
  "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
};
const data = {
  image_url: "https://example.com/example_inputs/pika/pika_i2v_v22_input.png",
  prompt: "The man and the horse are slowly walking towards the camera, the camera orbits and dolly out"
};

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/pika-2-2-image-to-video/v1/pika-2-2-image-to-video-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "image_url": "https://example.com/example_inputs/pika/pika_i2v_v22_input.png",
    "prompt": "The man and the horse are slowly walking towards the camera, the camera orbits and dolly out"
  }'

Output

{
  "video": {
    "file_size": 14530500,
    "file_name": "output.mp4",
    "content_type": "application/octet-stream",
    "url": "[RESPONSE_URL]"
  }
}

Request Parameters - Pika 2.2 (Image to Video) generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
image_urlYesstringURL of the image to use as the first frame. Must be publicly accessible.
promptYesstringText prompt describing the desired motion. Be specific about camera movement, subject action, and environmental details.
seedNointegerSeed for reproducibility. Use the same seed to generate identical results from the same input.
negative_promptNostring""A negative prompt to guide the model away from undesired elements. Example: "blurry, low quality, distorted limbs".
resolutionNoenum720pOutput video resolution. Allowed: 720p, 1080p.
durationNoenum5Duration of the generated video in seconds. Allowed: 5, 10.

Minimum Request

{
  "image_url": "https://example.com/example_inputs/pika/pika_i2v_v22_input.png",
  "prompt": "The man and the horse are slowly walking towards the camera, the camera orbits and dolly out"
}

Full Request (all options)

{
  "image_url": "https://example.com/example_inputs/pika/pika_i2v_v22_input.png",
  "prompt": "The man and the horse are slowly walking towards the camera, the camera orbits and dolly out",
  "seed": 42,
  "negative_prompt": "blurry, low quality, distorted limbs",
  "resolution": "1080p",
  "duration": 5
}

Response

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

Response Fields - Pika 2.2 (Image to Video) generate request

Field Type Description
request_id string Unique identifier for the generated request.
status string Current status of the request (e.g., QUEUED, PROCESSING).
polling_url string URL to use for checking the status of the request.

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 Pika 2.2 (Image to Video) generate request.

Code Meaning
200 Success
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

400 Validation Error

{
  "error": "Missing required parameter: image_url"
}

404 Not Found

{
  "error": "Endpoint not found"
}

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 for details
ERROR System error — request was not processed and will not be charged

Status Flow

QUEUED → PROCESSING → (COMPLETED | FAILED)

Typical Workflow

  1. Submit request to /pika-2-2-image-to-video-request
  2. Receive request_id in response
  3. Poll /v2/requests/status/{request_id} every 2-3 seconds
  4. Once status is COMPLETED, retrieve video from output.media_url

Pika 2.2 (Image to Video) check status - Pika 2.2 (Image to Video)

Request Code

POST https://gateway.pixazo.ai/v2/requests/status/pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "request_id": "pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
import requests

url = "https://gateway.pixazo.ai/v2/requests/status/pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
headers = {
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "request_id": "pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = "https://gateway.pixazo.ai/v2/requests/status/pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
const headers = {
  "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
};
const data = {
  request_id: "pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
};

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/v2/requests/status/pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "request_id": "pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  }'

Output

{
  "video": {
    "file_size": 14530500,
    "file_name": "output.mp4",
    "content_type": "application/octet-stream",
    "url": "[RESPONSE_URL]"
  }
}

Request Parameters - Pika 2.2 (Image to Video) check status

ParameterRequiredTypeDefaultAllowed values / rangeDescription
request_idYesstringUnique identifier of the request from the initial submission.

Minimum Request

{
  "request_id": "pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Full Request (all options)

{
  "request_id": "pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response

{
  "request_id": "pika-2-2-image-to-video_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "pika-2-2-image-to-video",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/pika-2-2-image-to-video_019dxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:01:45.000Z",
  "completed_at": "2026-03-31T10:01:45.000Z"
}

Response Fields - Pika 2.2 (Image to Video) check status

Field Type Description
request_id string Unique identifier for the generated request.
status string Current status of the request (e.g., COMPLETED).
model_id string Model used to generate the video.
error string or null Error message if the request failed, otherwise null.
output.media_url string array Array of URLs pointing to the generated video file.
output.media_type string MIME type of the generated media (e.g., video/mp4).

Request Headers

Header Value
Ocp-Apim-Subscription-Key Your subscription key

Response Handling

Common status codes for Pika 2.2 (Image to Video) check status.

Code Meaning
200 Success
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Notes & Tips

  • Poll the status endpoint every 2–3 seconds until COMPLETED or FAILED.
  • Implement exponential backoff for retry logic on ERROR or 500 responses.
  • Use detailed, cinematic prompts for best motion control (e.g., "camera slowly zooms in while the subject turns slowly").
  • Test with lower resolution (720p) first to optimize prompts before generating 1080p.
  • Always validate that image_url is publicly accessible and uses HTTPS.

Pika 2.2 Image to Video API Pricing

ResolutionPrice (USD)
720p (5 sec)$0.2
720p (10 sec)$0.4
1080p (5 sec)$0.45
1080p (10 sec)$0.9

Pika 2.2 Reference to Video (Ref Images to Video) API Documentation

https://gateway.pixazo.ai/pika-scenes-2-2/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

Pika Scenes 2.2 generate request - Pika Scenes 2.2

Request Code

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

{
  "image_urls": [
    "https://example.com/example_inputs/pika/pika_scenes/a.png"
  ],
  "prompt": "A cinematic scene with smooth motion"
}
import requests

url = "https://gateway.pixazo.ai/pika-scenes-2-2/v1/pika-scenes-2-2-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "image_urls": ["https://example.com/example_inputs/pika/pika_scenes/a.png"],
    "prompt": "A cinematic scene with smooth motion"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/pika-scenes-2-2/v1/pika-scenes-2-2-request';

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

const data = {
  image_urls: ['https://example.com/example_inputs/pika/pika_scenes/a.png'],
  prompt: 'A cinematic scene with smooth motion'
};

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/pika-scenes-2-2/v1/pika-scenes-2-2-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "image_urls": [
      "https://example.com/example_inputs/pika/pika_scenes/a.png"
    ],
    "prompt": "A cinematic scene with smooth motion"
  }'

Output

{
  "video": {
    "file_size": 14530500,
    "file_name": "output.mp4",
    "content_type": "application/octet-stream",
    "url": "[RESPONSE_URL]"
  }
}

Request Parameters - Pika Scenes 2.2 generate request

ParameterRequiredTypeDefaultAllowed values / rangeDescription
image_urlsYesstring[]Array of HTTP/HTTPS URLs pointing to input images to be combined into a video. Must contain at least one image.
promptYesstringText prompt describing the desired video motion, scene, and style. Must be detailed for best results.
negative_promptNostring"ugly, bad, terrible"Text prompt specifying undesired elements to avoid. Helps guide the model away from low-quality or irrelevant outputs.
seedNointegerOptional integer seed for reproducible results. Using the same seed with identical inputs produces the same output.
aspect_ratioNoenum"16:9"16:9, 9:16, 1:1, 4:5, 5:4, 3:2, 2:3Aspect ratio of the output video. Allowed values: 16:9, 9:16, 1:1, 4:5, 5:4, 3:2, 2:3.
resolutionNoenum"1080p"720p, 1080pOutput video resolution. Allowed values: 720p, 1080p.
durationNoenum55, 10Duration of the output video in seconds. Allowed values: 5, 10.
ingredients_modeNoenum"precise"Control over how input images are interpreted. precise maintains exact object placement and motion; creative allows more imaginative interpretation and motion variation.

Minimum Request

{
  "image_urls": [
    "https://example.com/example_inputs/pika/pika_scenes/a.png"
  ],
  "prompt": "A cinematic scene with smooth motion"
}

Full Request (all options)

{
  "image_urls": [
    "https://example.com/example_inputs/pika/pika_scenes/a.png",
    "https://example.com/example_inputs/pika/pika_scenes/b.png",
    "https://example.com/example_inputs/pika/pika_scenes/c.png"
  ],
  "prompt": "The gorilla is wearing the coat and sitting in the living room, cinematic scene, camera orbit and dolly out",
  "negative_prompt": "ugly, bad, terrible",
  "seed": 42,
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "duration": 5,
  "ingredients_mode": "precise"
}

Response

{
  "request_id": "pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response Fields - Pika Scenes 2.2 generate request

Field Type Description
request_id string Unique identifier for the request used to poll for results.
status string Current status of the request (QUEUED, PROCESSING, etc.).
polling_url string URL to use for checking the status of the request.

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 Pika Scenes 2.2 generate request.

Code Meaning
200 Success
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

401 Unauthorized

{
  "error": "Unauthorized",
  "message": "Invalid or missing Ocp-Apim-Subscription-Key header"
}

400 Bad Request

{
  "error": "Bad Request",
  "message": "Required parameter 'prompt' is missing",
  "details": [
    {
      "field": "image_urls",
      "message": "Array must contain at least one URL"
    }
  ]
}

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 for details
ERROR System error occurred — request was not processed and will not be charged

Status Flow

Submitted → QUEUED → PROCESSING → COMPLETED
                          ↘ FAILED
                          ↘ ERROR

Typical Workflow

  1. Submit request to /pika-scenes-2-2-request endpoint.
  2. Receive response with request_id.
  3. Poll status endpoint every 2–5 seconds using request_id.
  4. When status is COMPLETED, extract video URL from output.
  5. For FAILED or ERROR, check error details and retry or adjust input.

Pika Scenes 2.2 check status - Pika Scenes 2.2

Request Code

POST https://gateway.pixazo.ai/v2/requests/status/pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "request_id": "pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
import requests

url = "https://gateway.pixazo.ai/v2/requests/status/pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
headers = {
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "request_id": "pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/v2/requests/status/pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

const headers = {
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};

const data = {
  request_id: 'pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
};

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/v2/requests/status/pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "request_id": "pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  }'

Output

{
  "video": {
    "file_size": 14530500,
    "file_name": "output.mp4",
    "content_type": "application/octet-stream",
    "url": "[RESPONSE_URL]"
  }
}

Request Parameters - Pika Scenes 2.2 check status

ParameterRequiredTypeDefaultAllowed values / rangeDescription
request_idYesstringThe unique request_id returned from the initial submission.

Minimum Request

{
  "request_id": "pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Full Request (all options)

{
  "request_id": "pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response

{
  "request_id": "pika-scenes-2-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "pika-scenes-2-2",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/pika-scenes-2-2_019dxxxx/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:45.000Z",
  "completed_at": "2026-03-31T10:00:45.000Z"
}

Response Fields - Pika Scenes 2.2 check status

Field Type Description
request_id string The unique identifier for the request.
status string Current status: QUEUED, PROCESSING, COMPLETED, FAILED, ERROR.
model_id string The model used to generate the video.
error null | string Details of error if status is FAILED or ERROR.
output.media_url string[] Array of URLs to the generated video files.
output.media_type string Media type of output (e.g., video/mp4).
created_at string Timestamp when the request was created.
updated_at string Timestamp when the request was last updated.
completed_at string Timestamp when the request was completed.

Request Headers

Header Value
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for Pika Scenes 2.2 check status.

Code Meaning
200 Success
400 Bad Request
401 Unauthorized
404 Not Found
Too Many Requests
500 Internal Server Error

Notes & Tips

  • Poll the status endpoint every 2–5 seconds until status is COMPLETED, FAILED, or ERROR.
  • Use exponential backoff when retrying after ERROR or 500 responses.
  • Use detailed prompts describing motion, lighting, camera movement, and mood for best results.
  • Specify a seed value for reproducible outputs across runs.
  • Use precise mode for object fidelity; creative mode for artistic interpretations.
  • Ensure image URLs are publicly accessible and use HTTPS.
  • Processing time varies based on video duration and complexity — typically 30–120 seconds.
  • The maximum video duration is 10 seconds and maximum resolution is 1080p.
  • Each request consumes credits based on video duration and resolution.

Pika 2.2 Reference to Video (Ref Images to Video) API Pricing

ResolutionPrice (USD)
720p (5 sec)$0.2
720p (10 sec)$0.4
1080p (5 sec)$0.45
1080p (10 sec)$0.9