Live
The event object
| Field | Type | Description |
|---|---|---|
| id | string | Unique identifier for the object. |
| type | string | Available values: one-time, recurring |
Create event
https://api.kinescope.io/v2/live/eventsCreates a new live event. The event is in draft state until scheduled and enabled.
Create new event
| Field | Type | Description |
|---|---|---|
| name | string | Event name. Required |
| type | string | Available values: recurring, one-time. Required |
| parent_id | UUID | Project or folder ID for event. Not required |
| auto_start | boolean | Automatic start of the stream. Default false. Not required |
| protected | boolean | Enable encryption stream. Default false. Not required |
| time_shift | boolean | Default false. Not required |
| reconnect_window | integer | Default 600 seconds. Not required |
| scheduled | object | Settings for scheduled event. Available keys - 'time'. 'time' - broadcast start time. Not required |
| record | object | Settings for saving videos after the stream is completed. Not required. Available keys - 'parent_id'. 'parent_id' - project or folder ID where will placed video after stream is completed. Not required |
| video | object | Settings for video. Not required. Available keys - 'presets'. 'presets' - array of strings. Select qualities for videos. Available values - 360p 480p 720p 1080p 1440p 2160p. Not required |
| restreams | []object{} | Not required. Every object include keys - "name", "url", "key", "description", "enabled". "name" - string. Required. "url" - string. Required. "key" - string. Required. "description" - string. Not required. "enabled" - boolean. Not required |
| latency_mode | string | Available values: standard, reduced. Default 'standard'. Not required. |
| show_members | bool | Show/hide members of chat. Default true. |
| chat_active | bool | Chat enabled/disabled after stream ended. Default false. |
| chat_after_stream | bool | Show/hide chat after stream ended. Default true. |
| chat_preview | bool | Show/hide chat in video preview. Default true. |
| privacy_type | string | Where the player can be embedded. Available values: anywhere, nowhere, custom. Not required |
| privacy_domains | []string | Domains where the player can be embedded. Required if privacy_type is custom |
| privacy_email_domains | []string | Email domains of viewers who can watch, e.g. company.com. Not required |
| privacy_share | object | Who can watch. Available keys: "password", "link_hash", "sso". An empty object means anyone with the link. Not required |
| unique_codes_enabled | boolean | Access by unique codes. Default false. When true, "privacy_share" is reset. Not required |
The keys of privacy_share:
| Field | Type | Description |
|---|---|---|
| password | string | Viewers enter this password to watch. At least 2 characters. Cannot be set together with "link_hash" |
| link_hash | string | Access by private link only. 6 letters or digits. The ready-to-use link is returned in "link" |
| sso | boolean | Access by workspace SSO. Available only if SSO is enabled for the workspace |
If you don't pass any privacy fields, the event inherits the privacy settings of its project.
The response below does not match the request: reconnect_window comes back as 1800 instead of the 600 sent, chat_active as true instead of false, and video.presets as null. Whether the API normalises these values or the example is stale is not established — the example is left as recorded until the Live team confirms.
{
"name": "New event",
"type": "recurring",
"auto_start": true,
"protected": false,
"time_shift": false,
"parent_id": "<UUID>",
"reconnect_window": 600,
"scheduled": {
"time": "2022-12-19T00:05:41.634922Z"
},
"record": {
"parent_id": "<UUID>"
},
"video": {
"presets": [
"360p",
"1080p"
]
},
"restreams": [
{
"name": "Restream 1",
"url": "rtmp://rtmp.kinescope.io/live",
"key": "stream key"
}
],
"latency_mode": "standard",
"show_members": true,
"chat_active": false,
"chat_after_stream": true,
"chat_preview": true,
"privacy_type": "custom",
"privacy_domains": [
"example.com"
],
"privacy_share": {
"password": "my password"
}
}{
"data": {
"id": "<UUID>",
"workspace_id": "<UUID>",
"parent_id": "<UUID>",
"name": "New event",
"subtitle": "New subtitle",
"type": "recurring",
"streamkey": "a6739c5535504feaa45da338dc62f752",
"auto_start": true,
"protected": false,
"time_shift": false,
"chat_after_stream": true,
"chat_active": true,
"record": {
"parent_id": "<UUID>"
},
"video": {
"presets": null
},
"audio": {
"channel_mapping": null
},
"restreams": [
{
"id": "<UUID>",
"event_id": "<UUID>",
"name": "Restream 1",
"url": "rtmp://rtmp.kinescope.io/live",
"key": "stream key",
"status": "disconnected",
"enabled": true,
"description": "",
"created_at": "2022-11-15T12:25:04.095926Z",
"updated_at": null
}
],
"reconnect_window": 1800,
"play_link": "https://kinescope.io/bK3mQx7ZtNvRs2WdYpLc9F",
"rtmp_link": "rtmp://rtmp.kinescope.io/live",
"scheduled": {
"time": "2022-12-19T00:05:41.634922Z"
},
"stream": {
"id": "<UUID>",
"event_id": "<UUID>",
"status": "pending",
"started_at": "2022-12-19T00:05:41.634922Z",
"finished_at": null
},
"created_at": "2022-11-15T12:25:04.095926Z",
"updated_at": null,
"latency_mode": "standard",
"privacy_type": "custom",
"privacy_domains": [
"example.com"
],
"privacy_email_domains": [],
"privacy_share": {
"password": "my password"
},
"unique_codes_enabled": false,
"poster": {
"id": "<UUID>",
"type": "image",
"status": "done",
"active": true,
"original": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"md": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"sm": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"xs": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"from_time": 0,
"to_time": 0
}
}
}Schedule new stream
https://api.kinescope.io/v2/live/events/:event_id/streamSchedules a new stream within the event. Returns the ingest URL and stream key.
{
"started_at": "2022-11-15T12:42:00.991558Z"
}{
"data": {
"id": "<UUID>",
"event_id": "<UUID>",
"status": "pending",
"started_at": "2022-11-15T12:42:00.991558Z",
"finished_at": null
}
}Upload poster
https://uploader.kinescope.io/v2/posterUploads a custom poster image for a live event.
| Parameter | Description |
|---|---|
X-Event-ID | 4iUMUmb63dLAvnbsMRkSUX |
X-Poster-URL | url to poster |
Get event
https://api.kinescope.io/v2/live/events/:event_idRetrieves the details of a single live event by its unique ID.
{
"data": {
"id": "<UUID>",
"workspace_id": "<UUID>",
"parent_id": "<UUID>",
"name": "New event",
"subtitle": "",
"type": "one-time",
"streamkey": "5cbb30742b9b4a02971abd4cdd7fb22f",
"auto_start": false,
"protected": false,
"time_shift": true,
"record": {
"parent_id": null
},
"video": {
"presets": []
},
"audio": {
"channel_mapping": null
},
"restreams": [
{
"id": "<UUID>",
"event_id": "<UUID>",
"name": "23234",
"url": "rtmp://rtmp.kinescope.io/live",
"key": "23234234",
"status": "disconnected",
"enabled": false,
"description": "",
"created_at": "2026-03-03T10:55:22.991595Z",
"updated_at": "2026-03-03T11:10:05.345611Z"
}
],
"reconnect_window": 600,
"play_link": "https://kinescope.io/0cxfXwkKh4Wzzd1boAnQFE",
"rtmp_link": "rtmp://rtmp.kinescope.io/live",
"scheduled": {
"time": null
},
"stream": {
"id": "<UUID>",
"event_id": "<UUID>",
"status": "pending",
"started_at": "2026-02-18T17:50:37.774745Z",
"finished_at": null
},
"chat_after_stream": true,
"chat_active": true,
"chat_preview": true,
"show_members": true,
"created_at": "2026-02-18T17:50:37.774745Z",
"updated_at": "2026-03-14T11:23:19.777707Z",
"latency_mode": "standard",
"allow_chat_links": false,
"moderators": null,
"privacy_type": "anywhere",
"privacy_domains": [],
"privacy_email_domains": [],
"privacy_share": {},
"unique_codes_enabled": false,
"poster": {
"id": "<UUID>",
"type": "image",
"media_id": "<UUID>",
"status": "done",
"active": true,
"original": "https://kinescopecdn.net/<UUID>/posters/<UUID>/<UUID>.jpg",
"md": "https://kinescopecdn.net/<UUID>/posters/<UUID>/md/<UUID>.jpg",
"sm": "https://kinescopecdn.net/<UUID>/posters/<UUID>/sm/<UUID>.jpg",
"xs": "https://kinescopecdn.net/<UUID>/posters/<UUID>/xs/<UUID>.jpg",
"from_time": 0,
"to_time": 0
}
}
}{
"error": {
"code": 400404,
"message": "not found"
}
}List events
https://api.kinescope.io/v2/live/eventsReturns a list of live events. Results are paginated and can be filtered via query parameters.
{
"meta": {
"pagination": {
"page": 1,
"per_page": 100,
"total": 0
},
"order": {
"created_at": "desc",
"name": "asc"
}
},
"data": []
}Event videos
https://api.kinescope.io/v2/live/events/:event_id/videosReturns recordings produced by the event, ordered by creation time.
{
"meta": {
"pagination": {
"page": 1,
"per_page": 10,
"total": 0
},
"order": {
"created_at": "desc"
}
},
"data": []
}Event QoS
https://api.kinescope.io/v2/live/events/:event_id/qosReturns quality-of-service statistics for the event's stream together with the last known publisher session — the RTMP host, client IP and country of the latest connection. The current stream is used; for a recurring event that has already finished, the most recent stream is taken.
The time window defaults to the stream lifetime — from started_at to finished_at (or now for a running stream) — and is capped at the last 12 hours of that window.
Query parameters:
stream_id— return data for a specific stream of this event instead of the current (or, for a finished recurring event, the most recent) one (optional). A stream from another event or workspace is not accessible: the request answers404 Not Foundwith code404404;from— window start,YYYY-MM-DDor RFC 3339YYYY-MM-DDTHH:MM:SSZ(optional, see above);to— window end, same formats (optional, see above);group_time— bucket size for the series (optional):1morminute,hour,day,week,month, or a duration like30sor5m. Default: 30 seconds.
status:
- 4 — time difference between keyframes > 50%
- 3 — time difference between keyframes > 20%
- 5 — packet loss (possible causes: network problems, or the streamer's encoder cannot keep up with the video)
session is null when there is no recorded session for the stream. qos is the array of the events themselves (empty array when there is no data for the window).
{
"session": {
"host": "rtmp.kinescope.io",
"client_ip": "1.2.3.4",
"country": "RU"
},
"qos": [
{
"frame_rate": 30,
"bitrate_video": 2438,
"bitrate_audio": 156,
"timestamp": "2026-03-07T09:01:30Z",
"status": 0,
"packet_loss": 0
},
{
"frame_rate": 30,
"bitrate_video": 2438,
"bitrate_audio": 156,
"timestamp": "2026-03-07T09:02:00Z",
"status": 0,
"packet_loss": 0
}
]
}{
"error": {
"code": 404404,
"message": "no such entity"
}
}Chat
https://api.kinescope.io/v2/live/events/:event_id/stream/:stream_id/chat(.json|.csv|.txt)Returns the chat log of the event in the requested format — JSON, CSV, or plain text.
{
"data": [
{
"id": "<UUID>",
"username": "example_user",
"external_id": "kinescope_admin_e3ec44ca-8d9f-4ca9-a36f-69bfcae502a7",
"is_admin": "true",
"message": "ewd",
"created_at": "2025-02-26T08:16:38.21562Z",
"cteated_at_local": "2025-02-26T08:16:38.21562Z"
},
{
"id": "<UUID>",
"username": "example_user",
"external_id": "kinescope_admin_e3ec44ca-8d9f-4ca9-a36f-69bfcae502a7",
"is_admin": "true",
"message": "wde",
"created_at": "2025-02-26T08:16:38.722139Z",
"cteated_at_local": "2025-02-26T08:16:38.722139Z"
},
{
"id": "<UUID>",
"username": "example_user",
"external_id": "kinescope_admin_e3ec44ca-8d9f-4ca9-a36f-69bfcae502a7",
"is_admin": "true",
"message": "wde",
"created_at": "2025-02-26T08:16:39.12707Z",
"cteated_at_local": "2025-02-26T08:16:39.12707Z"
},
{
"id": "<UUID>",
"username": "example_user",
"external_id": "kinescope_admin_e3ec44ca-8d9f-4ca9-a36f-69bfcae502a7",
"is_admin": "true",
"message": "wde",
"created_at": "2025-02-26T08:16:39.451017Z",
"cteated_at_local": "2025-02-26T08:16:39.451017Z"
},
{
"id": "<UUID>",
"username": "asasas",
"external_id": "<UUID>",
"is_admin": "false",
"message": "dcad",
"created_at": "2025-02-26T08:17:56.752304Z",
"cteated_at_local": "2025-02-26T08:17:56.752304Z"
}
]
}Update event
https://api.kinescope.io/v2/live/events/:event_idUpdates properties of a live event (title, description, scheduled time, restreams, etc.).
Only fields passed in the request are changed. Privacy fields are the same as in Create event: privacy_type, privacy_domains, privacy_email_domains, privacy_share, unique_codes_enabled. The event can be updated only while its stream is in the pending status.
To open access by unique codes, set unique_codes_enabled to true and generate codes with Create unique codes batch. If you set unique_codes_enabled to false, viewers who entered a code lose access.
{
"name": "Update event",
"privacy_share": {
"link_hash": "Ab12Cd"
}
}{
"data": {
"id": "<UUID>",
"workspace_id": "<UUID>",
"parent_id": "<UUID>",
"name": "Update event",
"subtitle": "Update subtitle",
"type": "recurring",
"streamkey": "a6739c5535504feaa45da338dc62f752",
"auto_start": true,
"protected": false,
"time_shift": false,
"chat_after_stream": true,
"record": {
"parent_id": "<UUID>"
},
"video": {
"presets": null
},
"audio": {
"channel_mapping": null
},
"restreams": [
{
"id": "<UUID>",
"event_id": "<UUID>",
"name": "Restream 1",
"url": "rtmp://rtmp.kinescope.io/live",
"key": "stream key",
"status": "disconnected",
"enabled": true,
"description": "",
"created_at": "2022-11-15T12:25:04.095926Z",
"updated_at": null
}
],
"reconnect_window": 1800,
"play_link": "https://kinescope.io/bK3mQx7ZtNvRs2WdYpLc9F",
"rtmp_link": "rtmp://rtmp.kinescope.io/live",
"scheduled": {
"time": "2023-12-19T00:05:41.634922Z"
},
"stream": {
"id": "<UUID>",
"event_id": "<UUID>",
"status": "pending",
"started_at": "2023-12-19T00:05:41.634922Z",
"finished_at": null
},
"created_at": "2022-11-15T12:25:04.095926Z",
"updated_at": "2022-11-15T12:30:53.449823Z",
"latency_mode": "standard",
"privacy_type": "anywhere",
"privacy_domains": [],
"privacy_email_domains": [],
"privacy_share": {
"link_hash": "Ab12Cd",
"link": "https://kinescope.io/bK3mQx7ZtNvRs2WdYpLc9F/plAb12Cd"
},
"unique_codes_enabled": false,
"poster": {
"id": "<UUID>",
"type": "image",
"status": "done",
"active": true,
"original": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"md": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"sm": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"xs": "https://static.kinescopecdn.net/assets/event_default_poster.png",
"from_time": 0,
"to_time": 0
}
}
}Enable event
https://api.kinescope.io/v2/live/events/:event_id/enableEnables the event so that streams can be ingested and played back.
Finish event
https://api.kinescope.io/v2/live/events/:event_id/completeMarks the event as completed. Ingest endpoints stop accepting streams.
Update schedule stream
https://api.kinescope.io/v2/live/events/:event_id/streamUpdates the scheduling of an upcoming stream (start time, expected duration).
{
"started_at": "2024-11-15T12:42:00.991558Z"
}{
"data": {
"id": "<UUID>",
"event_id": "<UUID>",
"status": "pending",
"started_at": "2024-11-15T12:42:00.991558Z",
"finished_at": null
}
}Move event
https://api.kinescope.io/v2/live/events/:event_id/moveMoves the event into a different project or folder.
{
"parent_id": "<UUID>"
}{
"data": {
"id": "<UUID>",
"workspace_id": "<UUID>",
"parent_id": "<UUID>",
"name": "Update event",
"type": "recurring",
"streamkey": "a6739c5535504feaa45da338dc62f752",
"auto_start": true,
"protected": false,
"time_shift": false,
"chat_after_stream": true,
"chat_active": true,
"record": {
"parent_id": "<UUID>"
},
"video": {
"presets": null
},
"audio": {
"channel_mapping": null
},
"restreams": [
{
"id": "<UUID>",
"event_id": "<UUID>",
"name": "Restream 1",
"url": "rtmp://rtmp.kinescope.io/live",
"key": "stream key",
"status": "disconnected",
"enabled": true,
"description": "",
"created_at": "2022-11-15T12:25:04.095926Z",
"updated_at": null
}
],
"reconnect_window": 1800,
"play_link": "https://kinescope.io/bK3mQx7ZtNvRs2WdYpLc9F",
"rtmp_link": "rtmp://rtmp.kinescope.io/live",
"scheduled": {
"time": null
},
"stream": {
"id": "<UUID>",
"event_id": "<UUID>",
"status": "pending",
"started_at": "2024-11-15T12:42:00.991558Z",
"finished_at": null
},
"created_at": "2022-11-15T12:25:04.095926Z",
"updated_at": "2022-11-15T12:46:31.301738Z",
"latency_mode": "standard"
}
}Delete event
https://api.kinescope.io/v2/live/events/:event_idPermanently deletes the live event. This action cannot be undone.
Unique codes
Unique codes restrict access to the event: a viewer enters a code before watching. Codes are generated in batches. An event can have up to 9999 active codes.
Create unique codes batch
https://api.kinescope.io/v2/live/events/:event_id/unique-codesGenerates a batch of unique codes for the event. Each code is 3 letters and 3 digits, e.g. KQX482. The first batch turns on unique_codes_enabled for the event.
| Field | Type | Description |
|---|---|---|
| name | string | Batch name, up to 255 characters. Must be unique within the event. Required |
| codes_amount | integer | Number of codes, from 1 to 9999. Required |
| max_count | integer | How many times each code can be used, from 1 to 9999. Not required, no limit by default |
| sessions_per_code | integer | Sessions per code, from 1 to 100. Not required, no limit by default |
| starts_at | string | Date from which codes are valid, YYYY-MM-DD. Cannot be in the past. Default today. Not required |
| expires_at | string | Date until which codes are valid, YYYY-MM-DD. Cannot be earlier than starts_at. Not required, no expiration by default |
{
"name": "Promo batch",
"codes_amount": 100,
"max_count": 5,
"sessions_per_code": 1,
"starts_at": "2026-10-01",
"expires_at": "2026-10-31"
}{
"data": {
"id": "<UUID>",
"entity_id": "<UUID>",
"name": "Promo batch",
"codes_count": 100,
"used_count": 0,
"max_count": 5,
"sessions_per_code": 1,
"starts_at": "2026-10-01T00:00:00Z",
"expires_at": "2026-10-31T00:00:00Z",
"created_at": "2026-09-24T09:40:12.123456Z"
}
}List unique codes batches
https://api.kinescope.io/v2/live/events/:event_id/unique-codesReturns the event's batches of unique codes. Results are paginated. used_count is the number of codes that have been activated at least once.
{
"meta": {
"pagination": {
"page": 1,
"per_page": 25,
"total": 1
}
},
"data": [
{
"id": "<UUID>",
"entity_id": "<UUID>",
"name": "Promo batch",
"codes_count": 100,
"used_count": 12,
"max_count": 5,
"sessions_per_code": 1,
"starts_at": "2026-10-01T00:00:00Z",
"expires_at": "2026-10-31T00:00:00Z",
"created_at": "2026-09-24T09:40:12.123456Z"
}
]
}Get unique codes batch
https://api.kinescope.io/v2/live/events/:event_id/unique-codes/:batch_idRetrieves a single batch of unique codes.
{
"data": {
"id": "<UUID>",
"entity_id": "<UUID>",
"name": "Promo batch",
"codes_count": 100,
"used_count": 12,
"max_count": 5,
"sessions_per_code": 1,
"starts_at": "2026-10-01T00:00:00Z",
"expires_at": "2026-10-31T00:00:00Z",
"created_at": "2026-09-24T09:40:12.123456Z"
}
}Download unique codes
https://api.kinescope.io/v2/live/events/:event_id/unique-codes/:batch_id/downloadDownloads the batch codes as a CSV file. Activation dates are in the workspace time zone. The "Usage Limit" column is present only if the batch has max_count.
sep=,
Code,Activation Date,Times Used,Usage Limit
KQX482,2026-10-02T12:15:04+03:00,1,5
BMT907,,0,5Delete unique codes batch
https://api.kinescope.io/v2/live/events/:event_id/unique-codes/:batch_idDeletes the batch and all its codes. Viewers who entered these codes lose access. When the last batch is deleted, unique_codes_enabled is turned off for the event.
{
"data": {
"success": true
}
}