Skip to main content
Transcripts are available during and after a meeting. For live meetings, prefer WebSockets:

GET /transcripts/{platform}/{native_meeting_id}

Fetch transcript segments (and meeting metadata) for a meeting. Notes:
  • If you update meeting metadata via PATCH /meetings/{platform}/{native_meeting_id}, the transcript response also includes notes (from meeting.data.notes).
  • If recording was enabled and captured, the response includes recordings (used for post-meeting playback).
curl -H "X-API-Key: $API_KEY" \
  "$API_BASE/transcripts/google_meet/abc-defg-hij"
Returns meeting metadata plus segments[]. If recording was enabled and captured, recordings[] is included for post-meeting playback. Response format (200): meeting transcript object with id, platform, native_meeting_id, constructed_meeting_url, status, start_time, end_time, recordings, notes, and segments[].
{
  "id": 129,
  "platform": "google_meet",
  "native_meeting_id": "zqe-gfmd-knr",
  "constructed_meeting_url": "https://meet.google.com/zqe-gfmd-knr",
  "status": "completed",
  "start_time": "2026-02-15T09:20:02.597046",
  "end_time": null,
  "recordings": [],
  "notes": null,
  "segments": [
    {
      "start_time": 0.0,
      "end_time": 3.2,
      "text": "Hello everyone.",
      "language": "en",
      "created_at": "2026-02-15T09:20:20.123456",
      "speaker": "Alex",
      "completed": true,
      "absolute_start_time": "2026-02-15T09:20:20.123456",
      "absolute_end_time": "2026-02-15T09:20:23.323456"
    }
  ]
}
When recording is enabled and completed, the recordings array contains recording objects with media_files. See Recordings API for the full recording object shape.

POST /transcripts/{platform}/{native_meeting_id}/share

Create a temporary public URL for sharing a meeting transcript. The link returns plain text (Content-Type: text/plain) and expires after a configurable TTL (default: 15 minutes).
curl -X POST \
  -H "X-API-Key: $API_KEY" \
  "$API_BASE/transcripts/google_meet/abc-defg-hij/share"
Response format (200): {"share_id","url","expires_at","expires_in_seconds"}.
{
  "share_id": "Q-_Hyq3iOUi_H9C-XJEFrQ",
  "url": "https://api.vexa.ai/public/transcripts/Q-_Hyq3iOUi_H9C-XJEFrQ.txt",
  "expires_at": "2026-02-16T17:57:17.200672Z",
  "expires_in_seconds": 900
}
Response fields:
FieldTypeDescription
share_idstringURL-safe Base64 identifier
urlstringFull public URL (append .txt to share_id)
expires_atstringISO 8601 expiration timestamp
expires_in_secondsintSeconds until expiration

GET /public/transcripts/{share_id}.txt

Access a shared transcript. No authentication required.
curl "https://api.vexa.ai/public/transcripts/Cj3o9z0GZqf7Jd1wqYp3vQ.txt"
Response format (200): plain text (Content-Type: text/plain; charset=utf-8). Returns plain text (Content-Type: text/plain) with the formatted transcript including platform, meeting ID, timestamps, and speaker-attributed segments. Returns 404 if the share link has expired or does not exist.