Download URL Recording Media Data Schemas
Download URLs are populated once the relevant media object has transitioned to done status. For accessing media data during recording, you can use Real-Time Endpoints
Schema Timestamps
There are two types of timestamps you'll see in the schemas below:
relative- represents the time in seconds from the start of the recording (calculated from the latestin_call_recordingbot status change event). For example, "relative": 9.73 means approximately 9.73 seconds after the recording beganabsolute- represents the exact date and time this event occurred in ISO 8601 format. For example, "absolute": "2025-07-17T00:00:09.730066Z" shows the precise moment when something occurred
[JSON] Participant download URL data schema
[
{
"id": number, // Id of the participant in the meeting. This id is not unique across meetings.
"name": string | null, // Display name of the participant.
"is_host": boolean | null, // Whether the participant is the host of the meeting.
"platform": string | null, // Meeting platform constant. values: "desktop", "dial-in", "unknown"
"extra_data": json | null, // Extra data about the participant from the meeting platform.
"email": string | null, // Email, if participant identification is turned on
}
][JSON] Participant event download URL data schema
[
{
"id": string, // Id of the participant event.
"action": string, // The action that the participant took. values: "join" | "leave" | "update" | "speech_on" | "speech_off" | "webcam_on" | "webcam_off" | "screenshare_on" | "screenshare_off" | "chat_message"
"participant": {
"id": integer, // Id of the participant in the meeting. This id is not unique across meetings.
"name": string | null, // Display name of the participant.
"is_host": boolean | null, // Whether the participant is the host of the meeting.
"platform": string | null, // Meeting platform constant
"extra_data": json | null, // Extra data about the participant from the meeting platform.
"email": string | null, // Email, if participant identification is turned on
},
"timestamp": {
"absolute": string, // ISO 8601
"relative": number, // seconds
},
"data":
{
"text": string, // The text of chat message
"to": string, // The recipient of the chat message. values: "everyone" | "only_bot"
} // populated if the action is a `chat_message`
| null
}
][JSON] Speaker timeline download URL data schema
[
{
"participant": {
"id": integer, // Id of the participant in the meeting. This id is not unique across meetings.
"name": string | null, // Display name of the participant.
"is_host": boolean | null, // Whether the participant is the host of the meeting.
"platform": string | null, // Meeting platform constant
"extra_data": json | null, // Extra data about the participant from the meeting platform.
"email": string | null, // Email, if participant identification is turned on
},
"start_timestamp": {
"absolute": string, // ISO 8601
"relative": number, // seconds
},
"end_timestamp": {
"absolute": string, // ISO 8601
"relative": number, // seconds
}
}
][JSON] Transcript download URL data schema
[
{
"participant": {
"id": number, // Id of the participant in the meeting. This id is not unique across meetings.
"name": string | null, // Display name of the participant.
"is_host": boolean | null, // Whether the participant is the host of the meeting.
"platform": string | null, // Meeting platform constant
"extra_data": json | null, // Extra data about the participant from the meeting platform.
"email": string | null, // Email, if participant identification is turned on
},
"language_code": str, // The language code from the transcription provider, normalized to BCP-47.
// The simple code is .split('-')[0], and beware that some languages require
// 3-character codes (e.g. yue and haw)
"words": [
{
"text": string, // The text of the word.
"start_timestamp": {
"absolute": string, // ISO 8601, will return null for async transcription
"relative": number // seconds
},
"end_timestamp": {
"absolute": string, // ISO 8601, will return null for async transcription
"relative": number // seconds
}
}
]
}
][JSON] Participant separate video download URL data schema
[
{
"id": string, // Id of the separate part
"participant": {
"id": integer, // Id of the participant in the meeting. This id is not unique across meetings.
"name": string | null, // Display name of the participant.
"is_host": boolean | null, // Whether the participant is the host of the meeting.
"platform": string | null, // Meeting platform constant
"extra_data": json | null, // Extra data about the participant from the meeting platform.
"email": string | null, // Email, if participant identification is turned on
},
"start_timestamp": {
"absolute": string, // ISO 8601
"relative": number, // seconds
},
"duration": number, // seconds
"type": "webcam" | "screenshare", // the type of video part
"download_url": string, // URL to download the media file from
}
][JSON] Participant Separate Audio Parts
[
{
"id": string, // Id of the separate part
"participant": {
"id": integer, // Id of the participant in the meeting. This id is not unique across meetings.
"name": string | null, // Display name of the participant.
"is_host": boolean | null, // Whether the participant is the host of the meeting.
"platform": string | null, // Meeting platform constant
"extra_data": json | null, // Extra data about the participant from the meeting platform.
"email": string | null, // Email, if participant identification is turned on
},
"start_timestamp": {
"absolute": string, // ISO 8601
"relative": number, // seconds
},
"duration": number, // seconds
"download_url": string, // URL to download the media file from
}
][JSON] Transcript Provider Data Download URL
{
"parts": [
{
"id": string,
"created_at": string, // ISO 8601
// context of audio which was the transcription source for this part
"source_audio": {
"type": "mixed" | "separate",
"offset": float, // seconds from recording start
"participant": {
"id": integer, // Id of the participant in the meeting. This id is not unique across meetings.
"name": string | null, // Display name of the participant.
"is_host": boolean | null, // Whether the participant is the host of the meeting.
"platform": string | null, // Meeting platform constant
"extra_data": json | null, // Extra data about the participant from the meeting platform.
"email": string | null, // Email, if participant identification is turned on
} | null // participant data (only available for type=separate)
},
// part type, dictates the structure of 'data' key
"type": "webhook" | "http_response" | "websocket_message",
"data":
{ payload: object } | // type=webhook,
{ url: string, status_code: integer, body: object } | // type=http_response
{ url: string, event: string, payload: object }, // type=websocket_message
}
]
}Provider data is currently not available when using the
assembly_ai_async_chunkedReal-Time Transcription provider, or when using async transcriptions with Perfect Diarization
Updated about 1 month ago