Developer API
Integrate ScreenReply directly into your CRM, issue tracker, or internal tools. Manage recording links, download videos, and automate your workflows.
REST API Reference
Base API URL: https://api.screenreply.com
Authentication
All requests to the ScreenReply REST API require authentication using an API Key. Note: You must have OWNER privileges for the workspace to generate and manage API keys.
- Log in to your ScreenReply Dashboard.
- Switch to the desired workspace using the workspace selector.
- Navigate to the API section.
- Turn on API Access for the workspace.
- Click Create API Key.
Key Lifecycle & Access
- API keys are perpetual (they never expire) unless an expiration date is specified during creation.
- To cancel a specific key, you must revoke it from the dashboard.
- If you turn off API Access for the entire workspace, all created keys will instantly stop working until API access is turned back on.
Security Warning
API Keys grant full access to the workspace, equivalent to the Owner's permissions. Do not share your API Key publicly or commit it to version control systems.
Provide the key in the Authorization header of your HTTP requests using the Bearer schema:
Authorization: Bearer YOUR_API_KEYCreate Recording Request
Generates a new recording session and optionally sends an email invitation to the user to start recording their screen.
https://api.screenreply.com/public/integration/{workspaceId}/recordingsPath Parameters
| Parameter | Type | Description |
|---|---|---|
| workspaceId* | String (UUID) | The unique identifier of your workspace. |
Request Body (application/json)
| Field | Type | Description |
|---|---|---|
| tags | Array of Strings | List of tags to categorize the recording (e.g. ["bug-report", "jira-123"]). |
| notifications | Array of Objects | Array of notification objects. Each object must contain type: "EMAIL" and value: "[email protected]". |
| comment | String | Internal comment or notes. This is for internal use only and is never visible to the client or end-user. |
Example Request
curl -X POST https://api.screenreply.com/public/integration/{workspaceId}/recordings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tags": ["bug-report", "jira-123"],
"notifications": [
{
"type": "EMAIL",
"value": "[email protected]"
}
],
"comment": "User reported crash on login screen (internal note)"
}'Response 201 Created
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "NEW",
"tags": ["bug-report", "jira-123"],
"notifications": [
{
"type": "EMAIL",
"value": "[email protected]"
}
],
"comment": "User reported crash on login screen (internal note)",
"createdDate": "2026-02-21T10:00:00Z"
}Find & Filter Recordings
Retrieve a paginated list of recordings for your workspace. Supports complex filtering by tags, statuses, and date ranges.
https://api.screenreply.com/public/integration/{workspaceId}/recordings/listRequest Body (application/json)
| Field | Type | Description |
|---|---|---|
| ids | Array of Strings (UUID) | Filter by specific recording IDs. |
| userId | String (UUID) | Filter recordings generated by a specific workspace user. |
| statuses | Array of Strings | Allowed values: NEW, RECORDING, PROCESSING, COMPLETED. |
| tags | Array of Strings | Returns recordings that contain at least one of these tags. |
| createdDateFrom | String (ISO 8601) | Inclusive start date (e.g. "2026-01-01T00:00:00Z"). |
| createdDateTo | String (ISO 8601) | Inclusive end date (adds 1 day internally). |
| first | Integer | Pagination offset (number of skipped items). Default is 0. |
| pageSize | Integer | Number of records per page. Default is 10. |
| sortField | String | Field to sort by. Default is "createdDate". |
| sortOrder | String | "Ascending" or "Descending". Default is Ascending. |
Example Request
curl -X POST https://api.screenreply.com/public/integration/{workspaceId}/recordings/list \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tags": ["bug-report", "frontend"],
"statuses": ["COMPLETED", "RECORDED"],
"userId": "123e4567-e89b-12d3-a456-426614174000",
"createdDateFrom": "2026-01-01T00:00:00Z",
"createdDateTo": "2026-02-21T23:59:59Z",
"first": 0,
"pageSize": 25,
"sortField": "createdDate",
"sortOrder": "Descending"
}'Response 200 OK
{
"content": [
{
"id": "3fa85f64-5717...",
"status": "COMPLETED",
"tags": ["bug-report", "frontend"],
"comment": "Internal review required"
}
],
"totalElements": 42,
"totalPages": 2,
"number": 0,
"size": 25
}Get Video URL
Returns a secure, temporary pre-signed URL to directly view or download the actual video file from the storage bucket.
https://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId}/presignPath Parameters
| workspaceId* | String (UUID) | The unique identifier of your workspace. |
| recordingId* | String (UUID) | The target recording ID. |
Example Request
curl -X GET https://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId}/presign \
-H "Authorization: Bearer YOUR_API_KEY"Response 200 OK
{
"url": "https://storage.provider.com/bucket/path/to/video.webm?Signature=..."
}Update Recording Metadata
Update the tags or internal comments associated with an existing recording.
https://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId}Request Body (application/json)
| Field | Type | Description |
|---|---|---|
| tags | Array of Strings | Updated list of tags. This will overwrite existing tags. |
| comment | String | Internal comment or notes. This is for internal use only and is never visible to the client or end-user. |
Example Request
curl -X PUT https://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tags": ["resolved", "frontend"],
"comment": "Video reviewed, bug fixed in v1.2 (internal)"
}'Response 202 Accepted
Returns the updated RecordingDto object.
Delete Recording
Permanently deletes a recording from the workspace. This action cannot be undone, and the data cannot be recovered once deleted.
https://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId}Example Request
curl -X DELETE https://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId} \
-H "Authorization: Bearer YOUR_API_KEY"Response 204 No Content
Returns an empty response on successful deletion.