Documentation Index
Fetch the complete documentation index at: https://ansdevcloud.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Video Processing
A video moves through a deterministic state machine from upload to delivery. The public API exposes the current state via thestatus field; the Smart Stream Console in the dashboard surfaces the same data with a progress UI.
Lifecycle
| Status | Meaning |
|---|---|
PRICING | Job row created, price quoted, escrow not yet locked. |
ESCROW_LOCKED | Credits debited from your CREATIVE wallet bucket and held. |
UPLOADING | Pre-signed R2 URL issued; browser is uploading the source file. |
QUEUED | Source landed in R2; FFmpeg job queued. |
TRANSCODING | Cloud Run Job is running FFmpeg. |
MIGRATING | Chunks moving from raw-intake → media-delivery bucket. |
COMPLETED | Ready to mint playback tokens. Escrow settled. |
FAILED | Something blew up. Escrow refunded automatically. |
COMPLETED videos can mint playback tokens (VIDEO_NOT_READY otherwise).
Quality ladder
You choose a target quality at upload time. The transcoder produces a single HLS rendition at that quality plus its lower siblings only if you opted in. For typical embeds, a single 480p or 720p ladder is plenty forhls.js adaptive bitrate.
| Target | Resolution | Bitrate (kbps) |
|---|---|---|
480p | 854 × 480 | 1,200 |
720p | 1280 × 720 | 2,500 |
1080p | 1920 × 1080 | 4,500 |
1440p | 2560 × 1440 | 8,000 |
2160p | 3840 × 2160 | 16,000 |
audio | — | 128 |
Where the bytes live
- Source: Cloudflare R2 (
raw-intakebucket, 24h auto-delete after success). - Delivery: Cloudflare R2 (
media-deliverybucket, fronted bystreem.ansdev.cloud).
master.m3u8 via the playback-token flow, then hls.js resolves the chunks against the CDN edge — free of egress.
Polling vs. webhooks
The public API today is poll-only (re-readGET /v1/video/:id until status === 'COMPLETED'). Webhook delivery for status transitions is on the roadmap — let us know if you need it.