Transcripts

Set transcript from download URL

Create or replace a data entry's live transcript by fetching a Recall async transcript JSON from download_url, mapping participant names to speaker labels, and writing the result in a single commit. Broadcasts the change to connected clients. A transcript with no usable speech writes a "no speech detected" transcript and returns 200 with written: 0, so media can still be attached. Returns 400 if the URL is unsafe, unreachable, or the payload cannot be read. Returns 409 if the transcript is already wrapped in an audio/video block (media has been attached).

Required scope: note:write

put/v1/transcripts/{data_id}

Request

  • Base URL
    https://dovetail.com/api
  • URL
    https://dovetail.com/api/v1/transcripts/{data_id}
  • Auth
    HTTP bearer

Path parameters

data_idstring required

Unique identifier of the data entry.

Request body

download_urlstring uri required

HTTPS URL of a Recall async transcript JSON download (media_shortcuts.transcript data.download_url). The server fetches, maps speakers, and replaces the live transcript.

join_urlstring uri

Optional HTTPS meeting join URL from the companion recording client (e.g. Zoom/Meet/Teams window URL). Used server-side to match a cached calendar meeting and link matching attendees to transcript speakers.

recorded_atstring

Optional ISO 8601 wall-clock time of the recording (e.g. when the companion session started). Used with join_url to match the correct near-term calendar meeting when the upload is delayed. When omitted, the server uses request arrival time.

video_download_urlstring uri

Optional HTTPS URL of a Recall mixed MP4 download. Accepted for forward compatibility; the server does not download or attach video from this field yet.

Example request

{
  "download_url": "https://example.com/transcript.json",
  "join_url": "https://zoom.us/j/123456789",
  "recorded_at": "2026-08-17T03:00:00.000Z",
  "video_download_url": "https://example.com/video.mp4"
}

Response

200

Changes