curl -X POST "https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end" \
-H "Authorization: Bearer sk_live_your_secret_key"
import requests
resp = requests.post(
"https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end",
headers={"Authorization": "Bearer sk_live_your_secret_key"},
)
stream = resp.json()["data"]
const resp = await fetch(
"https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end",
{ method: "POST", headers: { Authorization: "Bearer sk_live_your_secret_key" } }
);
const { data: stream } = await resp.json();
{
"data": {
"id": "5a7b8c9d-e0f1-4234-5678-90abcdef1234",
"playbackId": "DS00Spx1CV3C00bv7n7CnG02ROsPIxQ100",
"status": "active",
"title": "Friday morning yoga",
"latencyMode": "low",
"reconnectWindow": 60,
"startedAt": "2026-04-17T14:00:00Z",
"endedAt": null,
"createdAt": "2026-04-17T13:55:00Z"
},
"meta": {
"request_id": "req_end001"
}
}
Live Streams
End Live Stream
End an active live stream and finalize its recording.
POST
/
v1
/
live-streams
/
{id}
/
end
curl -X POST "https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end" \
-H "Authorization: Bearer sk_live_your_secret_key"
import requests
resp = requests.post(
"https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end",
headers={"Authorization": "Bearer sk_live_your_secret_key"},
)
stream = resp.json()["data"]
const resp = await fetch(
"https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end",
{ method: "POST", headers: { Authorization: "Bearer sk_live_your_secret_key" } }
);
const { data: stream } = await resp.json();
{
"data": {
"id": "5a7b8c9d-e0f1-4234-5678-90abcdef1234",
"playbackId": "DS00Spx1CV3C00bv7n7CnG02ROsPIxQ100",
"status": "active",
"title": "Friday morning yoga",
"latencyMode": "low",
"reconnectWindow": 60,
"startedAt": "2026-04-17T14:00:00Z",
"endedAt": null,
"createdAt": "2026-04-17T13:55:00Z"
},
"meta": {
"request_id": "req_end001"
}
}
Ends a live stream immediately, regardless of whether the broadcaster is still connected. Use this when you want to stop a broadcast on your terms — for example, when the broadcaster forgets to disconnect, or when scheduled programming has finished.
The response returns the stream in its current state. The
Returns a
status transitions to ended asynchronously — poll Get Live Stream or listen for a webhook to confirm the transition. Once ended, the recording becomes available for clipping. Authenticated with your secret key.
Path parameters
string
required
The live stream’s UUID.
curl -X POST "https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end" \
-H "Authorization: Bearer sk_live_your_secret_key"
import requests
resp = requests.post(
"https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end",
headers={"Authorization": "Bearer sk_live_your_secret_key"},
)
stream = resp.json()["data"]
const resp = await fetch(
"https://api.shortkit.dev/v1/live-streams/5a7b8c9d-e0f1-4234-5678-90abcdef1234/end",
{ method: "POST", headers: { Authorization: "Bearer sk_live_your_secret_key" } }
);
const { data: stream } = await resp.json();
{
"data": {
"id": "5a7b8c9d-e0f1-4234-5678-90abcdef1234",
"playbackId": "DS00Spx1CV3C00bv7n7CnG02ROsPIxQ100",
"status": "active",
"title": "Friday morning yoga",
"latencyMode": "low",
"reconnectWindow": 60,
"startedAt": "2026-04-17T14:00:00Z",
"endedAt": null,
"createdAt": "2026-04-17T13:55:00Z"
},
"meta": {
"request_id": "req_end001"
}
}
Ending a stream is permanent — the same stream cannot be restarted. Create a new live stream for the next broadcast.
404 if the stream does not exist or does not belong to your organization.