Why CC Encode?
Queue a video. The worker writes an H.264 HLS ladder and calls your webhook when it finishes. HEVC can sit beside that ladder. A progressive H.264 MP4 of the largest rung is optional.
The API key holds the S3 or R2 credentials. Outputs upload to that bucket. A key without its own bucket uses our storage.
For developers
Bearer token on POST /api/transcode. Leave the extra fields off and the job is the H.264 ladder, capped at 30 fps.
curl -X POST https://services.closedcircuit.io/api/transcode \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"source_path": "videos/source.mp4", "qualities": ["1080p", "720p", "480p"], "webhook_url": "https://yourapp.com/webhooks/transcode"}'
PHP, Laravel, TypeScript, and JavaScript versions: CC Encode examples.
After the trial
The free trial encodes the first 5 minutes of a video at 720p. No card. After that, prepaid packs from $5. One credit is $0.01. Credits do not expire.
- SD (360p, 480p): 0.75 credits per minute
- HD (720p, 1080p, 1440p): 1.0 credit per minute
- 4K (2160p): 2.5 credits per minute
A source above 30 fps is capped at 30 unless the request sets fps. Keeping a higher rate multiplies the encode charge by ceil(fps / 30). That multiplier does not apply to product detection.
What you can request
- Rungs: 360p, 480p, 720p, 1080p, 1440p, 2160p
- H.264 HLS, optional HEVC, optional progressive H.264 MP4
- AAC audio
- Thumbnails, a sprite sheet, loudness normalization, a logo watermark, HDR to SDR
- A clip, with
start_timeandduration - Subtitles from a VTT or SRT you already have. Burn-in takes one track.
- AES-128: a key file next to the HLS playlist. This is not Widevine, PlayReady, or FairPlay.
- A DASH manifest that lists the HLS renditions already encoded
Dashboard
Create a key, buy credits, and watch the job. The extra encode options are set on the API request.
Prepaid credit packs
Buy credits in the dashboard, then spend them on jobs. Packs and per-job rates are in the table above.