Access tokens
Create token
https://api.kinescope.io/v1/access-tokensCreates a new access token for the workspace. Store the returned value — it is shown once.
{
"name": "token1",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
},
"upload": {
"permissions": []
}
}
}Create upload token to specific project
https://api.kinescope.io/v1/access-tokensCreates an upload-only access token scoped to a single project.
{
"name": "token for upload to project",
"scope": {
"upload": {
"entities": [
{
"id": "<UUID>",
"permissions": [
"read",
"write",
"delete"
]
}
],
"permissions": []
}
}
}{
"data": {
"id": "9f8d2c31-4a6b-4e72-8d15-3b7c9e0a5f24",
"name": "token for upload to project",
"workspace_id": "4ba9dbbc-aec9-4e60-97ad-06a45bb7700d",
"scope": {
"upload": {
"permissions": [],
"entities": [
{
"id": "<UUID>",
"permissions": [
"read",
"write",
"delete"
]
}
]
}
}
}
}Tokens list
https://api.kinescope.io/v1/access-tokensReturns a list of access tokens. Results are paginated and can be filtered via query parameters.
{
"meta": {
"offset": 0,
"limit": 10,
"total": 16,
"total_count": 0,
"order": {
"name": "asc"
},
"parent_id": null
},
"data": [
{
"id": "<UUID>",
"name": "Koltin-Kinescope-Player",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
}
}
},
{
"id": "<UUID>",
"name": "Kotlin-Kinescope-Shorts",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
}
}
},
{
"id": "<UUID>",
"name": "Restream",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
},
"upload": {
"permissions": []
}
}
},
{
"id": "<UUID>",
"name": "sadfasdf",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
}
}
},
{
"id": "<UUID>",
"name": "sdfsdfsdf",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
},
"upload": {
"permissions": []
}
}
},
{
"id": "<UUID>",
"name": "Speak",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
},
"upload": {
"permissions": []
}
}
},
{
"id": "<UUID>",
"name": "Speak LiveKit Test Token",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
},
"upload": {
"permissions": []
}
}
},
{
"id": "<UUID>",
"name": "Speak Room",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
},
"upload": {
"permissions": []
}
}
},
{
"id": "<UUID>",
"name": "Test MCP",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
}
}
},
{
"id": "<UUID>",
"name": "Upload integration",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
},
"upload": {
"permissions": []
}
}
}
]
}Get token
https://api.kinescope.io/v1/access-tokens/:token_idRetrieves the details of a single access token by its unique ID.
{
"data": {
"id": "<UUID>",
"name": "Koltin-Kinescope-Player",
"workspace_id": "<UUID>",
"scope": {
"api": {
"permissions": [
"read",
"write",
"delete"
]
}
}
}
}{
"error": {
"code": 400404,
"message": "not found"
}
}Delete token
https://api.kinescope.io/v1/access-tokens/:token_idPermanently deletes the access token. This action cannot be undone.
Webhooks
Outgoing webhooks notify your endpoint about events with videos, live streams and Speak calls. Thirteen events are sent: media.update.status for videos; live.created, live.connected, live.disconnected, live.finished, live.cancelled and live.enabled for live streams; speak.call.started, speak.call.finished, speak.participant.joined, speak.participant.left, speak.record.started and speak.record.finished for Speak.
A delivery is a plain POST with a JSON body. The only sender check is HTTP Basic auth with the login and password set on the subscription — deliveries are not signed, so treat the payload as a notification and re-read the object through the API. Your endpoint must answer with any 2xx; on any other response the delivery is repeated, but the number of attempts and the interval between them are not published. There is no delivery identifier, so deduplicate by the payload contents.
Retry policy, per internal data as of 2026-08-13 — not reproduced by us, confirm before relying on the numbers: the sender waits 10 seconds for a response; only 2xx counts as success; any other answer, including 4xx, is retried; the interval is about 15 seconds with no backoff, up to 50 attempts (roughly 12–13 minutes); deliveries to one URL are capped at 20 per second with bursts to 100; the order of deliveries is not guaranteed.
Create webhook
https://api.kinescope.io/v1/webhooksSubscribes to one or more event types. The configured endpoint receives a plain POST with a JSON body when those events fire — deliveries are not signed, the only sender check is the HTTP Basic auth set here.
{
"name": "webhook1",
"endpoint": "https://example.io/kinescope/webhook",
"login": "",
"password": "",
"events": [
"media.update.status"
]
}{
"data": {
"id": "<UUID>",
"name": "doc_test_webhook_1776899949",
"endpoint": "https://example.com/kinescope-doc-test",
"login": "",
"password": "<REDACTED>",
"events": [
"media.update.status"
],
"created_at": "2026-04-22T23:19:10.316926Z",
"updated_at": null,
"deleted_at": null
}
}List webhooks
https://api.kinescope.io/v1/webhooksReturns a list of webhooks. Results are paginated and can be filtered via query parameters.
{
"meta": {
"pagination": {
"page": 1,
"per_page": 10,
"total": 1
},
"order": {
"name": "asc"
}
},
"data": [
{
"id": "<UUID>",
"name": "doc_test_webhook_1776899949",
"endpoint": "https://example.com/kinescope-doc-test",
"login": "",
"password": "<REDACTED>",
"events": [
"media.update.status"
],
"created_at": "2026-04-22T23:19:10.316926Z",
"updated_at": null,
"deleted_at": null
}
]
}Update webhook
https://api.kinescope.io/v1/webhooks/:webhook_idUpdates the webhook (URL, HTTP Basic credentials, subscribed events).
{
"name": "webhook1_edit2",
"endpoint": "https://example.io/kin/webhook",
"login": "123",
"password": "2222",
"events": [
"media.update.status"
]
}{
"data": {
"id": "<UUID>",
"name": "doc_test_webhook_1776899949_upd",
"endpoint": "https://example.com/kinescope-doc-test",
"login": "",
"password": "<REDACTED>",
"events": [
"media.update.status"
],
"created_at": "2026-04-22T23:19:10.316926Z",
"updated_at": "2026-04-22T23:19:11.087179Z",
"deleted_at": null
}
}Delete webhook
https://api.kinescope.io/v1/webhooks/:webhook_idPermanently deletes the webhook. This action cannot be undone.
{
"data": {
"success": true
}
}