Start a SwitchX compositing job.
Your Developer API key.
Request to create and start a SwitchX generation job.
Output type: 'image' or 'video'
image, video URI of the source image or video.
Accepted URI types:
| Scheme | Description |
|---|---|
beeble://uploads/{id}/{filename} | From the Uploads endpoint |
https://... | External URL |
data:{mime};base64,... | Inline base64 (max 50 MB) |
Accepted formats:
| Generation type | Formats |
|---|---|
image | PNG, JPEG, WebP |
video | MP4, MOV (H.264 or HEVC). Max 240 frames. |
Resolution: The source must not exceed 2,770,000 total pixels (width x height). Sources with extreme aspect ratios may be rejected.
'auto', 'fill', 'custom', or 'select'
auto, fill, custom, select Text description of desired output (max 2,000 chars).
At least one of prompt or reference_image_uri is required. You can provide both for more control over the output.
2000URI of a custom alpha matte. Accepts the same URI types as source_uri.
Required when alpha_mode is "custom" or "select".
select: Provide a first-frame alpha keyframe image (PNG/JPG grayscale). The AI propagates it across the video.custom: Provide a full alpha matte matching the generation_type (image alpha for image generation, video alpha for video generation).When using "auto" or "fill", the alpha is handled automatically and this field is ignored.
Reproducibility seed (0-4,294,967,295)
0 <= x <= 4294967295Maximum output resolution: 720 or 1080 (default: 1080)
Idempotency key for safe retries.
If a job with the same key already exists for your account, the API returns the existing job's status instead of creating a duplicate.
Use a unique, deterministic key per logical request (e.g., your internal order ID). This prevents double-charges if your client retries due to network timeouts.
1 - 256Successful Response
Status response for a SwitchX job.
Job identifier (swx_...)
in_queue, processing, completed, or failed
Progress percentage (0-100)
'image' or 'video'
'auto', 'fill', 'custom', or 'select'
Output URLs (present when status is completed). URLs are signed and expire after 72 hours. Each call to this endpoint generates fresh signed URLs, so you can always re-fetch if a URL has expired.
Error message (present when status is failed)
ISO 8601 timestamp when the job was created
ISO 8601 timestamp of the last status change
ISO 8601 timestamp when the job completed or failed