Kadr
API v2 · stable

Video ingest, transcoding and delivery over HTTP.

Upload a source file, get adaptive-bitrate renditions and signed playback URLs. No encoding infrastructure to run, no queue to babysit.

job_7f4c21 · processing src 1920×1080 · 00:41:16
00:00:00
Ingest
Direct upload or pull from a source URL.
00:00:04
Probe
Streams, codecs and duration detected.
00:00:11
Transcode
H.264 and AV1 ladders, 240p to 2160p.
00:03:52
Deliver
HLS, DASH and progressive download.

Start with one request

Create a job from a source URL. The response comes back immediately; progress arrives on your webhook.

# create a transcoding job
curl -X POST https://api.huimpompoi.ru/v2/jobs \
  -H "Authorization: Bearer $KADR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "https://example.com/master.mov",
    "profile": "abr-h264-1080p",
    "webhook": "https://example.com/hooks/kadr"
  }'

# => 202 Accepted
# { "id": "job_7f4c21", "state": "queued", "eta_sec": 240 }

Endpoints

Everything is JSON over HTTPS. Rendition bytes are served from the delivery hosts.

MethodPathDescription
POST/v2/jobsCreate a transcoding job from a source URL or upload ticket.
GET/v2/jobs/{id}Job state, per-rendition progress and error detail.
GET/v2/assets/{id}Metadata, thumbnails and available renditions.
POST/v2/assets/{id}/signIssue a short-lived signed URL for a rendition.
GET/video/downloadProgressive download endpoint for signed rendition URLs.
GET/v2/usageEncoded minutes and egress for the current period.

What you get

The parts that are tedious to build once and painful to maintain afterwards.

Adaptive ladders

Rendition sets are derived from the source resolution and bitrate, so a 480p upload never gets upscaled into four useless variants.

Signed delivery

Playback and download URLs expire on a schedule you set, with optional IP and referrer pinning.

Webhooks that retry

State changes are delivered with exponential backoff for 24 hours and signed with your endpoint secret.

Limits

Defaults per project. Raise them from the console or ask support.

LimitDefaultNotes
Source file size40 GBLarger sources on request.
Concurrent jobs8Queued beyond the limit, not rejected.
API requests120 / minBurst of 300, then 429.
Signed URL lifetime15 minConfigurable from 1 min to 7 days.
Asset retentionUnlimitedDeleted assets purge from edge within 10 min.

Client libraries

Thin wrappers over the same HTTP API. Nothing is hidden from you.

npm install @kadr/node
pip install kadr
go get github.com/kadr/kadr-go