For the complete documentation index, see llms.txt. This page is also available as Markdown.

Get a Recording

This is the method to request a single recording if you have its identifier or its sharing link code.

Retrieve a video recording by ID

get

Returns a video object if found, otherwise a 404 error.

Path parameters
video_idstringRequired

The unique identifier of the video, which can be the video id (integer), video uuid, or even the video sharing-link identifier.

Header parameters
AuthorizationstringRequired

Bearer API-KEY

Responses
200

Successful response containing the video object.

application/json
idintegerRequiredExample: 405258
waystring · enumRequired

received: recorded by a customer through a recording link or the snippet. sent: recorded by a member of the workspace.

Example: receivedPossible values:
recorded_bystring · nullableRequired

Email of the person who recorded (a member, or a customer when known), else their name or identifier.

requested_bystring · nullableOptional

Email of the member who requested the recording, when it was requested.

Example: jb@birdie.so
bytesintegerRequired

Size of the video file in bytes.

commentstring · nullableRequired

Comment typed by the person when they recorded through a recording link, when the form had one. Null otherwise.

Example: The export button does nothing after I filter by date.
editedbooleanRequired

True when the recording was trimmed in Birdie. video_file, duration and transcription then describe the edited version.

titlestring · nullableOptional
console_logsstring · nullableOptional

Temporary URL of the console log file, when console capture was on.

created_atstring · date-timeRequiredExample: 2025-03-18T22:42:34Z
durationintegerRequired

Length of the video in milliseconds.

Example: 5866
network_logsstring · nullableOptional

Temporary URL of the network log file, when network capture was on.

originstringRequired

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.

Example: sellsy
metadataobject · nullableRequired

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

Example: {"firstname":"John","plan":"pro"}
processing_statusstring · enumRequiredExample: completedPossible values:
request_linkstring · nullableOptional

The recording link this recording was made through, for received recordings.

Example: https://acme.birdie.so/rec/6nHVc
sharing_linkstring · uriRequiredExample: https://share.birdie.so/i/jXuvxmQ
thumbnail_filestring · uriRequiredExample: https://my-s3-bucket.s3.eu-west-3.amazonaws.com/videos/e4bf56a2/ZZxpyh7oqTFOBPf7OwGgP8QpX3VG6zO3.jpg?...
ticketstring · nullableRequired

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.

Example: 123ticketid
uuidstringRequiredExample: 17285378-e18a-4b5f-b47f-238f6d86dca4
video_filestring · uriRequiredExample: https://my-s3-bucket.s3.eu-west-3.amazonaws.com/videos/e4bf56a2/lWMVumfEkrG6HkhpsULPWUGgq2O6K2ee.mp4?...
video_size_bytesintegerRequired

Same value as bytes, kept for compatibility.

Example: 788903
video_length_millisecondsintegerRequired

Same value as duration, kept for compatibility.

Example: 5866
get/videos/{video_id}
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