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.

  1. Log in to your ScreenReply Dashboard.
  2. Switch to the desired workspace using the workspace selector.
  3. Navigate to the API section.
  4. Turn on API Access for the workspace.
  5. 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_KEY

Create Recording Request

Generates a new recording session and optionally sends an email invitation to the user to start recording their screen.

POSThttps://api.screenreply.com/public/integration/{workspaceId}/recordings

Path Parameters

ParameterTypeDescription
workspaceId*String (UUID)The unique identifier of your workspace.

Request Body (application/json)

FieldTypeDescription
tagsArray of StringsList of tags to categorize the recording (e.g. ["bug-report", "jira-123"]).
notificationsArray of ObjectsArray of notification objects. Each object must contain type: "EMAIL" and value: "[email protected]".
commentStringInternal 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.

POSThttps://api.screenreply.com/public/integration/{workspaceId}/recordings/list

Request Body (application/json)

FieldTypeDescription
idsArray of Strings (UUID)Filter by specific recording IDs.
userIdString (UUID)Filter recordings generated by a specific workspace user.
statusesArray of StringsAllowed values: NEW, RECORDING, PROCESSING, COMPLETED.
tagsArray of StringsReturns recordings that contain at least one of these tags.
createdDateFromString (ISO 8601)Inclusive start date (e.g. "2026-01-01T00:00:00Z").
createdDateToString (ISO 8601)Inclusive end date (adds 1 day internally).
firstIntegerPagination offset (number of skipped items). Default is 0.
pageSizeIntegerNumber of records per page. Default is 10.
sortFieldStringField to sort by. Default is "createdDate".
sortOrderString"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.

GEThttps://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId}/presign

Path 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.

PUThttps://api.screenreply.com/public/integration/{workspaceId}/recordings/{recordingId}

Request Body (application/json)

FieldTypeDescription
tagsArray of StringsUpdated list of tags. This will overwrite existing tags.
commentStringInternal 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.

DELETEhttps://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.