Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Welcome to the Screendesk API! You can use this API to access our endpoints, such as the Screendesk API to get your recordings.
Welcome to the Screendesk API! You can use this API to access our endpoints, such as the Screendesk API to get your recordings.
To access our API, you need to be on the Screendesk Enterprise plan.
If you have any questions about the Enterprise plan, you can reach out to the Sales team.
Retrieve specific recordings.
All endpoints require authentication. Ensure you include the appropriate authentication headers with each request.
Please contact [email protected] to get a token for SCIM. Token cannot be obtained through the Screendesk dashboard.
The Screendesk API uses Personal access tokens to authenticate requests.
To create an access token, sign in to your Screendesk account and go to the "Personal Settings" page. In the “” tab click the “Create an API Token” button.
Enter a token name and click on the “Create token” button. Once the token gets created, you will be able to copy the token to your clipboard.
You should now see the new token information in the table. You are able to view the raw token anytime you need to, as well as edit the token name and revoke the token.
Once you have created your access token, you can use it to make requests to the API. Requests are authenticated using . You must provide the access token in the Authorization header:
Authorization: Bearer {ACCESS_TOKEN}


Some methods return paginated results. The formatting of a paginated result is always:
The pagination object contains metadata about the current page and links to other pages. The records array contains the actual data for the current page.
next_page: The number of the next page (if available)
prev_page: The number of the previous page (if available)
last_page: The number of the last page
page: The current page number
items: The number of items per page
pages: The total number of pages
from: The starting index of the current page's items
to: The ending index of the current page's items
count: The total number of items across all pages
Fields that are not applicable (e.g., prev_page on the first page) will be omitted from the response.
Let's say you make a GET request to a paginated endpoint:
You might receive a response like this:
To get the next page of results, you would make a request to:
{
"pagination": {
"next_page": "...",
"prev_page": "...",
"last_page": "...",
"page": "...",
"items": "...",
"pages": "...",
"from": "...",
"to": "...",
"count": "..."
},
"records": [
...
]
}GET /api/v2/users{
"pagination": {
"next_page": 2,
"last_page": 5,
"page": 1,
"items": 100,
"pages": 5,
"from": 1,
"to": 100,
"count": 450
},
"users": [
...
]
}GET /api/v2/users?page=2Retrieves a list of all users for the current account.
URL: /Users
Method: GET
Response:
Code: 200 OK
Content:
Retrieves a specific user by their SCIM ID or external ID.
URL: /Users/:id
Method: GET
URL Parameters: id=[string] (SCIM ID or external ID)
Creates a new user in the system.
URL: /Users
Method: POST
Data Params:
Response
Updates an existing user's information.
URL: /Users/:id (SCIM ID or external ID)
Method: PUT
URL Parameters: id=[string] ( ID or external ID)
Deletes a user from the system.
URL: /Users/:id
Method: DELETE
URL Parameters: id=[string] ( ID or external ID)
In case of errors, the API will respond with an appropriate HTTP status code and a JSON object containing error details:
Common error scenarios:
User not found: 404 Not Found
Invalid input: 422 Unprocessable Entity
Attempting to delete account owner: 403 Forbidden
Internal server error: 500 Internal Server Error
The API uses SCIM 2.0 schemas and conventions.
User passwords are automatically generated and not returned in responses.
The active field in user objects indicates whether the user account is currently active.
The roles
When creating or updating a user, you can override the default roles by including a roles object in your request. The roles object should contain boolean values for each role you want to set:
If you don't include the roles object, the default roles will be applied (admin: false, member: true, editor: false).
If you include the roles object but omit a role, it will be set to false by default.
To assign a role to a user, set its value to true in the roles
Example:
This request would create a user with both admin and member roles, but without the editor role.
When creating or updating users, email validation is skipped to accommodate various SCIM client behaviors.
The account owner cannot be deleted through this API.
Response:
Code: 200 OK
Content: Same as individual user object in List Users response
Code: 201 Created
Content: Created user object
Data Params: Same as Create User
Response:
Code: 200 OK
Content: Updated user object
Response:
Code: 204 No Content
To remove a role from a user, set its value to false in the roles object.
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": <integer>,
"Resources": [
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "<string>",
"userName": "<string>",
"name": {
"formatted": "<string>",
"givenName": "<string>",
"familyName": "<string>"
},
"emails": [
{
"primary": true,
"value": "<string>",
"type": "work"
}
],
"active": <boolean>,
"roles": [<string>]
},
// ... more users
]
}{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "<string>"
"userName": "<string>",
"name": {
"givenName": "<string>",
"familyName": "<string>"
},
"emails": [
{
"value": "<string>",
"primary": true,
"type": "work"
}
],
"externalId": "<string>",
"active": <boolean>,
"roles": {
"admin": <boolean>,
"member": <boolean>,
"editor": <boolean>
}
}{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"detail": "<string>",
"status": "400"
}"roles": {
"admin": false,
"member": true,
"editor": false
}{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "[email protected]",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"emails": [
{
"value": "[email protected]",
"primary": true,
"type": "work"
}
],
"active": true,
"roles": {
"admin": true,
"member": true,
"editor": false
}
}UUID of the recording
Successfully updated recording
Unauthorized
Forbidden - User is not an admin or API access is disabled
Recording not found
Validation failed
Successful response
Unauthorized
UUID of the recording
Successful response
Unauthorized
Recording not found
curl -X PATCH 'https://app.screendesk.io/api/v2/recordings/696cfd3b-b579-45a7-b58a-88ba0984a42b' \
-H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"recording": {
"title": "Updated Title",
"summary": "New summary",
"description": "Updated description"
}
}'
{
"uuid": "text",
"title": "text",
"summary": "text",
"description": "text",
"metadata": {
"created_at": "2026-01-07T15:29:37.821Z",
"updated_at": "2026-01-07T15:29:37.821Z",
"duration": 1,
"impressions_count": 1,
"recording_type": "text",
"recording_source": "text",
"url": "text",
"helpdesk_info": {}
},
"technical_details": {
"vendor": "text",
"ip_address": "text",
"timezone": "text",
"network_type": "text",
"isp": "text"
},
"console_logs": "text",
"customer": {
"email": "text"
},
"user": {
"email": "text",
"name": "text"
}
}curl -X GET 'https://app.screendesk.io/api/v2/recordings?page=1' \
-H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
-H 'Content-Type: application/json'
{
"pagination": {
"next_page": null,
"prev_page": null,
"last_page": 1,
"page": 1,
"items": 1,
"pages": 1,
"from": 1,
"to": 1,
"count": 1
},
"records": [
{
"uuid": "text",
"title": "text",
"summary": "text",
"description": "text",
"metadata": {
"created_at": "2026-01-07T15:29:37.821Z",
"updated_at": "2026-01-07T15:29:37.821Z",
"duration": 1,
"impressions_count": 1,
"recording_type": "text",
"recording_source": "text",
"url": "text",
"helpdesk_info": {}
},
"technical_details": {
"vendor": "text",
"ip_address": "text",
"timezone": "text",
"network_type": "text",
"isp": "text"
},
"console_logs": "text",
"customer": {
"email": "text"
},
"user": {
"email": "text",
"name": "text"
}
}
]
}curl -X GET 'https://app.screendesk.io/api/v2/recordings/696cfd3b-b579-45a7-b58a-88ba0984a42b' \
-H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
-H 'Content-Type: application/json'
{
"uuid": "text",
"title": "text",
"summary": "text",
"description": "text",
"metadata": {
"created_at": "2026-01-07T15:29:37.821Z",
"updated_at": "2026-01-07T15:29:37.821Z",
"duration": 1,
"impressions_count": 1,
"recording_type": "text",
"recording_source": "text",
"url": "text",
"helpdesk_info": {}
},
"technical_details": {
"vendor": "text",
"ip_address": "text",
"timezone": "text",
"network_type": "text",
"isp": "text"
},
"console_logs": "text",
"customer": {
"email": "text"
},
"user": {
"email": "text",
"name": "text"
}
}curl -X GET 'https://app.screendesk.io/api/v2/users?page=1' \
-H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
-H 'Content-Type: application/json'
{
"pagination": {
"next_page": null,
"prev_page": null,
"last_page": 1,
"page": 1,
"items": 1,
"pages": 1,
"from": 1,
"to": 1,
"count": 1
},
"users": [
{
"email": "text",
"name": "text",
"has_avatar": true,
"role": "text",
"notifications": {
"notify_first_view": "Enabled",
"notify_new_account_recording": "Enabled",
"notify_new_recording": "Enabled"
},
"created_at": "2026-01-07T15:29:37.821Z",
"updated_at": "2026-01-07T15:29:37.821Z"
}
]
}curl -X GET 'https://app.screendesk.io/api/v2/users/[email protected]' \
-H 'Authorization: Bearer YOUR_BEARER_TOKEN' \
-H 'Content-Type: application/json'
{
"email": "text",
"name": "text",
"has_avatar": true,
"role": "text",
"notifications": {
"notify_first_view": "Enabled",
"notify_new_account_recording": "Enabled",
"notify_new_recording": "Enabled"
},
"created_at": "2026-01-07T15:29:37.821Z",
"updated_at": "2026-01-07T15:29:37.821Z"
}The Screendesk API is REST-based and uses standard HTTP verbs and status codes. The API accepts form-encoded request bodies and returns JSON-encoded responses. All requests should be made over SSL.
If you have any question, please contact the Screendesk support.
The base URL to access the Screendesk API is https://app.screendesk.io.
For example, to access the recordings endpoint, just add the endpoint to the base URL: https://app.screendesk.io/api/v1/recordings.
Learn about API errors.
All responses from the API will include a standard HTTP successful or error status code. The successful status codes are as follows:
200 OK
The request was successful.
For errors, we include extra information as to why the request was not successful. The error response body will have the following format:
{
"error": {
"message": "Descriptive information about the error",
"code": "HTTP error code",
}
}For example, if you try to retrieve a recording that does not exist, you will get the following error response:
{
"error": {
"message": "Recording not found or does not exist",
"code": 404,
}
}The error status codes, along with their error types, are as follows:
400 Bad Request
The request cannot be accepted. Might be because the request body is empty when it should not be.
401 Unauthorized
The access token provided is invalid or deactivated.
404 Not Found
We could not find any record associated with this request.
500 Internal Server Error
Something went wrong with the Screendesk API.