pika/pika-2.5-image-to-video, served by Comfy Router from Pika.
Input: Text, Image · Output: Video
Quick start
Create a key in your Comfy workspace and export it asCOMFY_API_KEY. The Python and TypeScript snippets use the Comfy SDKs (pip install comfy-sdk and npm install @comfyorg/sdk); the cURL snippet is the same call over raw HTTP.
Model ID: pika/pika-2.5-image-to-video
Endpoint: POST https://api.comfy.org/v2/models/pika/pika-2.5-image-to-video
- Wait for the result
- Queue and collect later
The same body, sent to
POST https://api.comfy.org/v2/models/pika/pika-2.5-image-to-video/requests. Router answers 201 with a request_id as soon as the run is admitted, and the result is collected once it is ready, from this process or another one. Queued delivery walks through status, cancellation and collection.Schema
Input
integer
default:"5"
Video length in seconds.Possible values:
5, 10string
required
Public https URL of the source image to animate. The image carries the subject. Plain
http:// is refused: Pika fetches the URL on a request sent under Comfy’s key.string
Text describing what to avoid in the video.
string
Text prompt guiding the motion.
string
default:"\"1080p\""
Output resolution.Possible values:
720p, 1080pinteger
Seed for reproducible generation. Omit it (or send null) for a random seed.
GET /v2/models/pika/pika-2.5-image-to-video/openapi.json, the same document it validates a call against before the request reaches the provider.
Output
object
Pika’s structured failure record, set on a
failed job. Router answers a failed job with its own error response, so a body Router returns does not carry it; it is declared because it is part of Pika’s job document.string
required
Possible values:
invalid_input, content_moderation, provider_error, provider_timeout, provider_unavailable, rate_limited, insufficient_balance, membership_required, cycle_limit_exceeded, admission_suspended, usage_limit_exceeded, timed_out, internalstring
required
string
required
Pika’s job id.
string
The Pika catalog entry the job ran.
object
The finished job’s media, set when
status is completed. media_type says which field carries it: image fills images, video fills video, and videos fills videos.object[]
Generated images, for an image model.
string
MIME type of the file.
integer
Height in pixels.
string
Download URL of the generated file.
integer
Width in pixels.
string
Possible values:
image, video, videosinteger
The seed the video job actually used, when reported.
object
One generated media file.
string
MIME type of the file.
integer
Height in pixels.
string
Download URL of the generated file.
integer
Width in pixels.
object[]
Generated videos, for a multi-video delivery.
string
MIME type of the file.
integer
Height in pixels.
string
Download URL of the generated file.
integer
Width in pixels.
number
Seconds the generation took, from dispatch to terminal. Best-effort; may be null.
string
required
Lifecycle state. A body Router returns always reads
completed; a failed job is answered with Router’s error response instead.Possible values: queued, running, completed, failedobject
Provider-reported units for the job. Keys are sparse; only the units the job reports are present.
Examples
Input
Output
Before you ship
The SDKs create anIdempotency-Key and reuse it for automatic retries. For manual retries, reuse the original key. Router can hold the connection for up to 10 minutes.
When a request fails, Router sends an X-Comfy-Error-Type response header explaining why. A 422 means Router rejected the input before calling the provider, and a 413 means the request body was larger than Router accepts. Download generated assets promptly because result URLs can expire.
Any size limit named in a field description above is the provider’s own bound on that field, quoted from the provider’s specification. Router applies a separate cap to the whole request body, which base64-encoded media counts against: see request body size.
This page documents one partner model called through Comfy Router. The same comfy-sdk / @comfyorg/sdk package also ships a second client, for running a whole ComfyUI workflow graph on Comfy Cloud: Comfy(api_key=...) / new Comfy({ apiKey }), with client.workflows, client.assets and client.jobs. See Comfy SDKs.
Headers
Authentication, idempotency, request IDs, error buckets, retry pacing, spend limits.
Using the Router API
Model discovery, validation errors, retries, and billing.
Limitations
What Router does not do today, and what to use instead.