Get a transcript
Full transcript with every speaker segment. Organization Developer Settings → API keys → Transcript output selects Original, Translated (default), or Both for Public API and MCP retrieval. Required `text` follows that preference with stored-text fallback when the requested version is unavailable; Both adds `original_text` only when distinct preserved source exists. `text_mode` reports the preference and `translated_to` the stored nullable target, not a guarantee that every segment is translated. Original rebuilds `full_text` and `word_count` from the selected segments; historical rows without segments retain stored aggregates. Search continues to use current stored text. `segments[].start_time` and `end_time` are absolute UTC ISO 8601 timestamps anchored to recording start.
Authorization
bearerAuth API key issued in Settings → API Keys in the Meetso dashboard. Owners and Admins only. Test keys (mts_test_) read the same data.
In: header
Path Parameters
Resource id (CUID).
1 <= lengthResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/public/v1/transcripts/string"{ "data": { "id": "string", "meeting_id": "string", "recording_id": "string", "status": "PROCESSING", "text_mode": "original", "translated_to": "string", "full_text": "string", "primary_language": "string", "word_count": -9007199254740991, "error_message": "string", "started_at": "2019-08-24T14:15:22Z", "completed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "meeting": { "id": "string", "title": "string", "start_time": "2019-08-24T14:15:22Z", "end_time": "2019-08-24T14:15:22Z", "timezone": "string", "calendar_event_id": "string", "attendees": [ { "email": "user@example.com", "display_name": "string", "time_joined": "2019-08-24T14:15:22Z" } ] }, "segments": [ { "speaker_label": "string", "speaker": { "name": "string", "email": "user@example.com" }, "text": "string", "original_text": "string", "start_time": "2019-08-24T14:15:22Z", "end_time": "2019-08-24T14:15:22Z" } ] }}Get a meeting
Fetch one meeting by id. 404 if the id does not exist OR belongs to a different organization (cross-org access is not distinguished from absence).
Get a recording
Recording metadata + a short-TTL presigned S3 URL. The URL is null until `status === "COMPLETED"` and expires at `download_url_expires_at`. Each response that carries a `download_url` records a `recording.download_issued` event (actor: the API key) in your organization's audit log before it is returned, so fetch this endpoint when you need the file and call it again once the URL expires. If the event cannot be recorded the request fails with `503` `service_unavailable` and no URL is issued. A null `download_url` records nothing.