Skip to main content
GET
Get a meeting's transcript

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

uuid
string<uuid>
required

The meeting's public uuid.

Example:

"9a1c2b3d-4e5f-6071-8293-a4b5c6d7e8f9"

Response

Transcript metadata with a 1-hour presigned download URL.

uuid
string
required

The transcript's public identifier.

Example:

"d8e1f2a3-4b5c-6d7e-8f90-1a2b3c4d5e6f"

meeting_uuid
string
required

The meeting's public identifier; matches the path.

Example:

"9a1c..."

format
enum<string>
required

The downloaded artifact's format. Always jsonl (one utterance object per line).

Available options:
jsonl
Example:

"jsonl"

coverage
enum<string>
required

Whether this meeting's transcript is one artifact (single) or several consecutive parts that must be read in order (multipart). Branch on this — or on part_count — before treating download_url as the complete meeting. Describes what parts actually contains rather than what the meeting was recorded as: a meeting known to have parts whose artifacts are not built yet reports single with a null rendition, because the one artifact returned cannot be attributed to that coverage.

Available options:
single,
multipart
Example:

"single"

part_count
integer
required

How many parts are available to download, i.e. the length of parts. Can be lower than the meeting's true part count while a later part's artifact is still being built, so a multipart response with part_count: 1 means 'more is coming', not 'this is all there is'.

Example:

1

rendition
integer | null
required

Which coverage of the meeting these parts come from, when a meeting has been recorded more than once (Granicus and YouTube, say). Null for a meeting with a single unnumbered recording, which is the overwhelming majority. Parts are never mixed across renditions.

Example:

null

parts
object[]
required

Every downloadable part, in reading order. Always present and never empty — a single-artifact meeting is one part. This is the authoritative list: the top-level download_url, url_expires_at and uuid describe parts[0] only.

download_url
string
required

Presigned S3 URL for the JSONL transcript, valid 1 hour. Download it before it expires. Describes parts[0] only. For a multipart meeting this is the FIRST part, not the whole meeting — a client that reads only this field gets a truthful but partial transcript and no error. Use parts when coverage is multipart.

Example:

"https://hamlet-transcripts-prod.s3.us-west-1.amazonaws.com/…?X-Amz-Signature=…"

url_expires_at
string
required

ISO-8601 UTC timestamp when download_url expires. Describes parts[0].

Example:

"2026-06-22T15:30:00.000Z"

generated_at
string
required

ISO-8601 UTC timestamp for when the transcript artifact was built. The NEWEST across all parts, so it answers 'how fresh is this transcript?' for the meeting as a whole — unlike the other top-level fields, which describe parts[0].

Example:

"2026-05-22T09:20:00.000Z"