Clips
Cut a window (start..end seconds) from any finished recording. Get a shareable URL playing just that window. Powers TikTok-style short shares and "best moments" feeds.
No-code option: Cut clips directly in the customer portal — open any stream at
/app/streams/<streamId> → Recordings tab → Cut clip. Browse all clips at /app/clips.
On this page
1. Lifecycle
1. A live stream ends → recorder produces an MP4 → uploaded to S3 → status = READY
2. Customer-side UI picks an in/out point → POST /v1/me/clips
3. Kardolive transcoder worker renders the window → status: pending → rendering → ready
4. clip.ready webhook fires; assetUrl is now playable
5. Sharable URL: https://kardocloud.com/clips/<id>
2. Create a clip
POST https://api.kardocloud.com/v1/me/clips
Authorization: Bearer kl_live_xxx
{
"recordingId": "rec_xxx",
"startSec": 45.2,
"endSec": 78.0,
"title": "Funniest moment",
"description": "When the host accidentally dropped the box.",
"createdByExternalId": "user_42", // your-app's user id
"isPublic": true // false = signed-URL access only
}
→ {
"id": "clip_xxx",
"status": "pending",
"startSec": 45.2,
"endSec": 78.0,
"title": "Funniest moment",
"assetUrl": null, // until rendering completes
"createdAt": "..."
}
Constraints:
- Clip duration max 10 minutes
endSec > startSecrecordingIdmust belong to your tenant
3. Render status & URL
GET /v1/me/clips/<clipId>
→ {
"id": "clip_xxx",
"status": "ready", // pending | rendering | ready | failed
"assetUrl": "https://kardocloud.com/clips/clip_xxx.mp4",
"posterUrl": "https://kardocloud.com/clips/clip_xxx.jpg",
"renderedAt": "..."
}
List all clips for the tenant or for a specific recording:
GET /v1/me/clips
GET /v1/me/clips?recordingId=rec_xxx
4. Public sharing page
When isPublic: true the clip is reachable without authentication at
https://kardocloud.com/clips/<clipId> — perfect for embedding in social
shares or your own site.
GET https://kardocloud.com/v1/clips/<clipId>
→ {
"id": "clip_xxx",
"title": "Funniest moment",
"description": "...",
"startSec": 45.2,
"endSec": 78.0,
"durationSec": 32.8,
"assetUrl": "https://kardocloud.com/clips/clip_xxx.mp4",
"posterUrl": "https://kardocloud.com/clips/clip_xxx.jpg",
"status": "ready"
}
Set isPublic: false if you need to gate access — then mint your own signed URL on the customer side.
5. Delete a clip
DELETE /v1/me/clips/<clipId>
Removes the DB row + the S3 asset.
6. Webhook events
| Event | When |
|---|---|
clip.created | POST received; queued for render |
clip.ready | Render finished; assetUrl is now playable |
clip.failed | Render failed; see errorMessage |
Next
Scheduled premieres → · Restream / simulcast → · Push notifications →