Put Audio Provider Transcript
PUT/v2/audios/{audio_id}/transcript
Attach a transcript produced elsewhere (for example by a meeting provider) to an audio.
The transcript is stored beside the audio's own transcript and does not replace it: the
analysis, speakers and every other result keep using the audio's own transcript, and the
attached one is read back with GET /v2/audios/{audio_id}/transcript?transcript=provider.
Speaker display names sent in speakers are stored with the attached transcript only; they
do not rename speakers on the audio.
Only one transcript can be attached per audio. Sending again replaces it, whatever its
source. Sending the same content again changes nothing and returns the original
attached_at, so a request can be retried safely. replaced is true only when this request
replaced a different transcript that was already attached.
start_ms and end_ms are on the audio's own timeline; no offset is applied. Segments are
stored and returned in start_ms order. At least one segment is required.
The request body is limited to 1 MiB, the transcript to 10,000 segments, and the stored content (segments and speaker names) to 640 KiB; over any limit the response is 413 and nothing is stored. The audio's owner and administrators can attach a transcript. No charge is applied.
Request
Responses
- 200
- 401
- 404
- 413
- 422
Successful Response
Missing, malformed or rejected credentials — no X-API-Key / Authorization: Bearer <jwt>, an expired token, or a caller that lacks the role the route requires. Note that this API answers authorization failures with 401 as well as 403 (see the 403 entry where a route declares both).
No such resource, or it is not visible to this caller. Ownership failures are reported as 404 rather than 403 so the API does not confirm the existence of another account's records.
provider_transcript_too_large: the request body, the number of segments or the stored transcript content is over the limit. Nothing was stored.
Request validation failed. The app flattens FastAPI's validation error list into a single detail string, so the body is {"detail": "'field' <message>"} and NOT FastAPI's default HTTPValidationError. Declaring this overrides the auto-generated 422 — see the module docstring.