Retrieving meeting transcripts
List and retrieve meetings, read the transcript relationship, and download the transcript file via the Lightfield API.
Meetings are first-class objects in the Lightfield API. You can list and retrieve them like any other CRM record, and a retrieved meeting exposes its related data — including the transcript — through the $transcript relationship.
This guide covers reading meetings and downloading their transcripts. To attach or replace a transcript, see Uploading meeting transcripts.
Before you begin
Section titled “Before you begin”You will need:
- A valid API key
- The
meetings:readscope to list and retrieve meetings - The
files:readscope to download the transcript file
All requests use these headers:
Authorization: Bearer YOUR_API_KEYLightfield-Version: 2026-03-01List meetings
Section titled “List meetings”Use GET /v1/meetings to fetch a paginated list of meetings. See List methods for shared pagination and filtering parameters.
curl https://api.lightfield.app/v1/meetings \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Lightfield-Version: 2026-03-01"List responses are privacy-filtered per caller. To read the full content of a meeting — including the $transcript relationship — retrieve it by ID.
Retrieve a meeting by ID
Section titled “Retrieve a meeting by ID”Use GET /v1/meetings/{id} to fetch a single meeting with its fields and relationships. When the caller has FULL access, the response includes the $transcript relationship pointing at the transcript file.
curl https://api.lightfield.app/v1/meetings/$MEETING_ID \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Lightfield-Version: 2026-03-01"A successful response for a caller with FULL access looks like:
{ "id": "mtg_abc123", "objectType": "meeting", "createdAt": "2026-04-07T21:00:00.000Z", "updatedAt": "2026-04-07T21:50:00.000Z", "fields": { "$title": { "valueType": "TEXT", "value": "Customer Call" }, "$startDate": { "valueType": "DATETIME", "value": "2026-04-07T21:00:00.000Z" }, "$endDate": { "valueType": "DATETIME", "value": "2026-04-07T21:45:00.000Z" }, "$organizerEmail": { "valueType": "EMAIL", "value": "alex@acme.com" }, "$attendeeEmails": { "valueType": "EMAIL", "value": ["alex@acme.com", "jamie@example.com"] }, "$privacySetting": { "valueType": "TEXT", "value": "FULL" } }, "relationships": { "$transcript": { "cardinality": "HAS_ONE", "objectType": "file", "values": ["fil_abc123"] } }, "accessLevel": "FULL"}The transcript is a completed File API upload (fil_...) exposed through relationships.$transcript. Read the file ID from relationships.$transcript.values, then download it.
Download the transcript
Section titled “Download the transcript”Read the file ID from relationships.$transcript.values, then request a temporary signed download URL with GET /v1/files/{id}/url:
curl https://api.lightfield.app/v1/files/$FILE_ID/url \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Lightfield-Version: 2026-03-01"A successful response returns a signed URL and its expiry:
{ "url": "https://...", "expiresAt": "2026-04-07T22:00:00.000Z"}Fetch the transcript bytes from url before expiresAt. Request a fresh URL if it expires.
Transcript visibility
Section titled “Transcript visibility”Meeting retrieval is privacy-filtered, so whether you see the $transcript relationship depends on the caller’s resolved access level:
| Access level | What the caller can see |
|---|---|
FULL | Full meeting content, including the real title, description, organizer and attendee emails, and the $transcript relationship. |
METADATA | A metadata-safe view; sensitive fields are redacted and relationships.$transcript is omitted. |
Admins and meeting participants always get FULL access. Other callers receive the meeting’s resolved privacy setting. A transcript can be attached to a meeting even if a particular caller’s GET /v1/meetings/{id} response does not show the $transcript relationship.
For the full access model — including who counts as a participant and how $privacySetting differs from accessLevel — see Meeting privacy and transcript visibility.
End-to-end flow
Section titled “End-to-end flow”GET /v1/meetingsto find the meeting, or skip ahead if you already have its ID.GET /v1/meetings/{id}and readrelationships.$transcript.valuesfor the transcript file ID.GET /v1/files/{id}/urlto get a signed download URL.- Fetch the transcript bytes from the returned
urlbefore it expires.
Next steps
Section titled “Next steps”- Uploading meeting transcripts — Attach or replace a transcript on a meeting.
- File uploads — Reference for the file lifecycle and signed download URLs.
- Fields and relationships — How relationships like
$transcriptare represented. - API Reference — Full endpoint reference for the meeting resource.