Get a Recording
This is the method to request a single recording if you have its identifier or its sharing link code.
Returns a video object if found, otherwise a 404 error.
The unique identifier of the video, which can be the video id (integer), video uuid, or even the video sharing-link identifier.
Bearer API-KEY
Successful response containing the video object.
405258received: recorded by a customer through a recording link or the snippet. sent: recorded by a member of the workspace.
receivedPossible values: Email of the person who recorded (a member, or a customer when known), else their name or identifier.
Email of the member who requested the recording, when it was requested.
jb@birdie.soSize of the video file in bytes.
Comment typed by the person when they recorded through a recording link, when the form had one. Null otherwise.
The export button does nothing after I filter by date.True when the recording was trimmed in Birdie. video_file, duration and transcription then describe the edited version.
Temporary URL of the console log file, when console capture was on.
2025-03-18T22:42:34ZLength of the video in milliseconds.
5866Temporary URL of the network log file, when network capture was on.
Where the recording came from: an integration name (intercom, zendesk, hubspot...), the name of the universal recording link it was made through, uploaded video file, chrome extension, or inapp for a recording made in Birdie.
sellsyCustom parameters attached to the recording: the query parameters of the recording link (/urec/helpdesk?param=value) or what the snippet passed. Null when there are none. Filterable on List Recordings with param and value.
{"firstname":"John","plan":"pro"}completedPossible values: The recording link this recording was made through, for received recordings.
https://acme.birdie.so/rec/6nHVchttps://share.birdie.so/i/jXuvxmQhttps://my-s3-bucket.s3.eu-west-3.amazonaws.com/videos/e4bf56a2/ZZxpyh7oqTFOBPf7OwGgP8QpX3VG6zO3.jpg?...Id of the helpdesk ticket or conversation this recording is attached to (via an integration or a ticket recording-link parameter). Null when there is none.
123ticketid17285378-e18a-4b5f-b47f-238f6d86dca4https://my-s3-bucket.s3.eu-west-3.amazonaws.com/videos/e4bf56a2/lWMVumfEkrG6HkhpsULPWUGgq2O6K2ee.mp4?...Same value as bytes, kept for compatibility.
788903Same value as duration, kept for compatibility.
5866Resource is not accessible (e.g. the video is into a private folder).
Video not found.
GET /api/v1/videos/{video_id} HTTP/1.1
Host: app.birdie.so
Authorization: text
Accept: */*
{
"id": 405258,
"way": "received",
"recorded_by": null,
"requested_by": "jb@birdie.so",
"bytes": 1,
"comment": "The export button does nothing after I filter by date.",
"edited": false,
"title": null,
"console_logs": null,
"created_at": "2025-03-18T22:42:34Z",
"duration": 5866,
"network_logs": null,
"origin": "sellsy",
"metadata": {
"firstname": "John",
"plan": "pro"
},
"processing_status": "completed",
"request_link": "https://acme.birdie.so/rec/6nHVc",
"sharing_link": "https://share.birdie.so/i/jXuvxmQ",
"thumbnail_file": "https://my-s3-bucket.s3.eu-west-3.amazonaws.com/videos/e4bf56a2/ZZxpyh7oqTFOBPf7OwGgP8QpX3VG6zO3.jpg?...",
"ticket": "123ticketid",
"transcription": {
"status": "text",
"language": "text",
"transcript": "text",
"raw_file": "text"
},
"ai_summary": {
"schema_version": 3,
"analysed_at": "2026-10-02T14:21:07+00:00",
"provider": "openai",
"model": "gpt-5.6",
"trigger": "automatic",
"outcome": "failure_observed",
"title": "Export to CSV fails with a 500 after the filter is applied",
"summary": "The person filtered the report by date, then clicked Export. The page showed \"Something went wrong\" and the export request returned a 500.",
"steps": [
{
"text": "Open the Reports page",
"timecode": "00:04"
},
{
"text": "Set the date filter to the last 30 days",
"timecode": "00:38"
},
{
"text": "Click Export in the top-right corner",
"timecode": "01:12"
},
{
"text": "An error banner \"Something went wrong\" appears",
"timecode": "01:14"
}
],
"likely_cause": "POST /api/exports returned 500 right after the Export click; the console logged \"TypeError: cannot read properties of undefined (reading 'range')\" at the same moment.",
"to_go_further": "Trace the /api/exports request with the date-range filter applied; the error mentions `range`.",
"confidence": "high",
"displayed_confidence": "high",
"evidence": [
{
"timecode": "01:14.320",
"signal": "network",
"detail": "POST /api/exports returned 500 Internal Server Error"
},
{
"timecode": "01:14.410",
"signal": "console",
"detail": "TypeError: cannot read properties of undefined (reading 'range')"
},
{
"timecode": "01:14.900",
"signal": "frame",
"detail": "Error banner \"Something went wrong\" visible under the toolbar"
}
],
"caveats": [],
"environment": {
"browser": "Chrome 141.0",
"os": "macOS 15.6",
"url": "https://app.example.com/reports",
"viewport": "1440×900"
},
"usage": {
"model_calls": 5,
"frames": 6,
"prompt_tokens": 48210,
"completion_tokens": 1320,
"total_tokens": 49530,
"elapsed_ms": 41800
},
"text": "Export to CSV fails with a 500 after the filter is applied\nThe person filtered the report by date, then clicked Export. ..."
},
"uuid": "17285378-e18a-4b5f-b47f-238f6d86dca4",
"video_file": "https://my-s3-bucket.s3.eu-west-3.amazonaws.com/videos/e4bf56a2/lWMVumfEkrG6HkhpsULPWUGgq2O6K2ee.mp4?...",
"video_size_bytes": 788903,
"video_length_milliseconds": 5866
}Last updated