Pika 2.2 API - AI Video Generation API: Pricing, Documentation

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

WELCOME BONUS

Get $5 Free Credit on First Payment

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

Claim Your $5 →

Pika 2.2 API Documentation

https://gateway.pixazo.ai/pika-2-2-text-to-video/v1/pika-2-2-text-to-video-request

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 video you want to generate. Describe the subject, action, setting, lighting and camera movement for the best results.
seedNointegerAny integerControls randomness. Reuse the same seed with identical settings to reproduce the same result; omit it for a different video each time.
negative_promptNostring"ugly, bad, terrible"Describes what to keep out of the video; the model steers away from these elements. Pass an empty string to disable the default.
aspect_ratioNostring16:916:9, 9:16, 1:1, 4:5, 5:4, 3:2, 2:3Frame shape (aspect ratio) of the generated video.
resolutionNostring720p720p, 1080pOutput resolution of the generated video.
durationNointeger55, 10Length of the generated video in seconds. Send it as a number (e.g. 5), not a string.

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 API Pricing

ResolutionPrice (USD)
720p (5 sec)$0.20
720p (10 sec)$0.40
1080p (5 sec)$0.45
1080p (10 sec)$0.90
Image to Video

Pika 2.2 API Documentation

https://gateway.pixazo.ai/pika-2-2-image-to-video/v1/pika-2-2-image-to-video-request

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_urlYesstringPublicly accessible URL of the image to use as the first frame of the video.
promptYesstringText prompt describing how the image should animate. Be specific about subject action, camera movement and environment.
seedNointegerAny integerControls randomness. Reuse the same seed with identical settings to reproduce the same result; omit it for a different video each time.
negative_promptNostring""Describes what to keep out of the video; the model steers away from these elements. Example: "blurry, low quality, distorted limbs".
resolutionNostring720p720p, 1080pOutput resolution of the generated video.
durationNointeger55, 10Length of the generated video in seconds. Send it as a number (e.g. 5), not a string.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
image1JPG, PNG, WEBPInput image to animate.

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 API Pricing

ResolutionPrice (USD)
720p (5 sec)$0.20
720p (10 sec)$0.40
1080p (5 sec)$0.45
1080p (10 sec)$0.90
Reference to Video (Ref Images to Video)

Pika 2.2 API Documentation

https://gateway.pixazo.ai/pika-scenes-2-2/v1/pika-scenes-2-2-request

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[]Publicly accessible URLs of the reference images to combine into a single video. At least one image is required; list them in the order they should appear in the scene.
promptYesstringText prompt describing the scene, motion and style of the video that combines the reference images.
negative_promptNostring"ugly, bad, terrible"Describes what to keep out of the video; the model steers away from these elements. Pass an empty string to disable the default.
seedNointegerAny integerControls randomness. Reuse the same seed with identical settings to reproduce the same result; omit it for a different video each time.
aspect_ratioNostring16:916:9, 9:16, 1:1, 4:5, 5:4, 3:2, 2:3Frame shape (aspect ratio) of the generated video.
resolutionNostring1080p720p, 1080pOutput resolution of the generated video.
durationNointeger55, 10Length of the generated video in seconds. Send it as a number (e.g. 5), not a string.
ingredients_modeNostringpreciseprecise, creativeHow the reference images are blended into the scene. precise keeps each image close to its original appearance; creative gives the model more freedom to reinterpret them.

Content Item Types & Limits

TypeMaxFormat / SizeDescription
imageJPG, PNG, WEBP, up to 10MBScene reference image(s).

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 API Pricing

ResolutionPrice (USD)
720p (5 sec)$0.20
720p (10 sec)$0.40
1080p (5 sec)$0.45
1080p (10 sec)$0.90