Recording links
A recording link lets someone without Faylee, such as a customer, record their screen in the browser and send it to your workspace. The API opens and closes these links, so a support bot or a script can ask for a recording as part of a ticket. For how the person on the other end records, see Recording links.
What comes in through a link is filed under the member who opened it, in the folder the link names. It is a video recording with reporter_name and reporter_email set from what the sender typed.
The recording link object
Section titled “The recording link object”| Field | Type | Notes |
|---|---|---|
id | integer | |
title | string | Shown to the person recording |
message | string or null | Shown to the person recording |
external_ref | string or null | Your reference for the link, such as a ticket URL or id |
url | string | The address to send. Uses the workspace’s own link domain when it has a verified one |
expires_at | string or null | ISO 8601. null means the link never expires |
created_at | string | ISO 8601 |
blocked_reason | string or null | Why the link no longer accepts recordings, or null while it does |
blocked_reason is set when the link has expired, was turned off, or the member who opened it has left the workspace. It is a sentence you can show to a person, for example This link has expired. Ask whoever sent it for a new one.
Open a link
Section titled “Open a link”POST /recording_links with a recording_link object.
| Field | Type | Required | Notes |
|---|---|---|---|
title | string | yes | Up to 120 characters |
message | string | no | Instructions for the person recording |
external_ref | string | no | The ticket or conversation the link is for. It comes back in the recording_link.completed webhook |
expires_in_days | integer | no | 1, 7 or 30. Any other value, or none, means the link never expires |
folder_id | integer | no | Where recordings sent through the link are filed. A folder from GET /folders |
curl -X POST https://app.faylee.app/api/v1/recording_links \ -H "Authorization: Bearer $FAYLEE_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "recording_link": { "title": "Show us the export problem", "message": "Open the report, click Export, and narrate what you expected.", "external_ref": "https://acme.zendesk.com/agent/tickets/4821", "expires_in_days": 7 } }'201 returns the link:
{ "id": 77, "title": "Show us the export problem", "message": "Open the report, click Export, and narrate what you expected.", "external_ref": "https://acme.zendesk.com/agent/tickets/4821", "expires_at": "2026-10-08T09:12:44.000Z", "created_at": "2026-10-01T09:12:44.000Z", "url": "https://app.faylee.app/record/3mQ8xYfL2vNc7RtA9kWpZs4e", "blocked_reason": null}Send url to the person you want a recording from. A missing title, or a folder from another workspace, gets 422. Opening a link is written to the workspace’s audit log.
List open links
Section titled “List open links”GET /recording_links returns the workspace’s links that have not been turned off, newest first, up to 100:
{ "recording_links": [ { "id": 77, "title": "Show us the export problem", "message": "Open the report, click Export, and narrate what you expected.", "external_ref": "https://acme.zendesk.com/agent/tickets/4821", "expires_at": "2026-10-08T09:12:44.000Z", "created_at": "2026-10-01T09:12:44.000Z", "url": "https://app.faylee.app/record/3mQ8xYfL2vNc7RtA9kWpZs4e", "blocked_reason": null } ]}Expired links stay in the list with blocked_reason set until you turn them off.
Turn a link off
Section titled “Turn a link off”DELETE /recording_links/:id stops the link from accepting recordings and returns 204. Recordings already sent through it stay in the workspace. Turning a link off is written to the audit log.
curl -X DELETE https://app.faylee.app/api/v1/recording_links/77 \ -H "Authorization: Bearer $FAYLEE_TOKEN"Anyone who opens the link afterwards is told it no longer accepts recordings.
Know when a recording comes in
Section titled “Know when a recording comes in”Subscribe a webhook endpoint to recording_link.completed. Faylee sends it when someone finishes sending a recording through a link. Its data.recording has source set to recording_link and a recording_link object with the link’s id, title and external_ref, so you can match the recording to the ticket that asked for it.