Live Transcribe

Meeting Intelligence API

Send meeting transcript text and get back a running summary, a consolidated overview, or an answer grounded in the conversation. Transcription stays in the browser; this API is the server-side AI over the text. Authenticated by API key, metered per organisation.

Get an API key
On this page: Authentication · Endpoints · Generate · Usage · Keys · Plans · Errors · FAQ

Base URL is your Worker domain. Every request and response is application/json.

Authentication

Send the API key on every /v1 request, in either header form:

Authorization: Bearer lt_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X-API-Key: lt_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Mint keys at the key dashboard or with POST /api/keys. Only the SHA-256 hash is stored; the raw key is shown once. lt_live_ and lt_test_ keys both bill against the same organisation counter and differ only by label. Key management is authenticated by your account access token, not by an API key.

Endpoints

MethodPathAuthPurpose
POST/v1/generateAPI keySummary, overview, or Q&A over a transcript
GET/v1/usageAPI keyPlan, calls used, remaining, tokens used
POST/api/keysAccount tokenMint a key (returned once)
GET/api/keysAccount tokenList keys and organisation summary
DELETE/api/keys/:idAccount tokenRevoke a key

POST /v1/generate

Request body fields:

FieldTypeRequiredNotes
typestringyessummary, overview, or qa
textstringsummary, overviewTranscript text. Truncated at 60,000 characters
questionstringqaThe question or drafting request. Truncated at 2,000 characters
historyarrayno[{ "role": "user"|"model", "content": "…" }]. Last 20 turns kept
outLangstringnoEnglish, Japanese, Portuguese, Spanish, German, French, Italian

type behaviour

typeOutput
summaryOne to two short lines summarising a segment, roughly 25 words
overviewConsolidated bullet overview of the full transcript, with a decisions and actions block when present
qaAnswers a question grounded in the transcript, or drafts the actual words to say when asked to

Request

curl -sS https://<worker>/v1/generate \
  -H "Authorization: Bearer $LT_KEY" \
  -H "content-type: application/json" \
  -d '{
    "type": "qa",
    "text": "…transcript so far…",
    "question": "Draft a one-line closing remark that confirms the next step."
  }'

Response 200

{
  "text": "…model output…",
  "usage": { "promptTokenCount": 812, "candidatesTokenCount": 96, "totalTokenCount": 908 },
  "meta": { "plan": "startup", "cap": 20000, "remaining": 19860 }
}

Response headers report the meter: X-RateLimit-Limit, X-RateLimit-Remaining, and X-Usage-Total-Tokens. Each successful call decrements the monthly allowance by one, regardless of token count.

GET /v1/usage

curl -sS https://<worker>/v1/usage -H "Authorization: Bearer $LT_KEY"
{
  "plan": "startup",
  "calls_used": 140,
  "cap": 20000,
  "remaining": 19860,
  "tokens_used": 1284310,
  "period_reset_at": "2026-09-01T00:00:00+00:00"
}

Key management

Obtain the account token with a Supabase password grant, then call the Worker. Most teams simply use the dashboard instead.

# 1. sign in
TOKEN=$(curl -sS "$SUPABASE_URL/auth/v1/token?grant_type=password" \
  -H "apikey: $SUPABASE_ANON" -H "content-type: application/json" \
  -d '{"email":"[email protected]","password":"…"}' | jq -r .access_token)

# 2. mint a key (returned once)
curl -sS https://<worker>/api/keys \
  -H "authorization: Bearer $TOKEN" -H "content-type: application/json" \
  -d '{"name":"production-backend","mode":"live"}'

# 3. list keys
curl -sS https://<worker>/api/keys -H "authorization: Bearer $TOKEN"

# 4. revoke a key
curl -sS -X DELETE https://<worker>/api/keys/<id> -H "authorization: Bearer $TOKEN"

Plans and limits

PlanCalls / monthSoft rate (req/min)
dev20020
startup20,000120
scale200,000600

The monthly cap is enforced atomically in the database and resets at the start of each calendar month. The per-minute rate is a best-effort guard, not a billing boundary.

Errors

Every error is { "error": "<code>" } with the HTTP status below.

StatuserrorCause
400invalid_jsonBody was not valid JSON
400unknown_typetype not in summary, overview, qa
401api_key_requiredNo key on a /v1 request
401invalid_keyKey not found or revoked
403org_suspendedOrganisation status is not active
429quota_exceededMonthly call cap reached
429rate_limitedPer-minute soft guard tripped
502ai_unavailableUpstream model error

FAQ

Do I send audio to the API?

No. The API operates on transcript text you supply. No audio reaches the server, and transcript text is not stored; only token counts and call metadata are recorded for billing.

How is usage billed?

Each successful call decrements a monthly call allowance by one, regardless of token count. Token counts are recorded per call so you can analyse cost. See plans for the monthly caps.

How do I authenticate?

Send your API key on every /v1 request as an Authorization: Bearer header or an X-API-Key header. Keys are shown once at creation and stored only as a hash.

What happens when I hit my monthly cap?

The API returns 429 with quota_exceeded. The counter resets at the start of each calendar month, and upgrading the plan raises the cap on the next call.

How do I rotate a key?

Create a new key, deploy it, then revoke the old one. Revocation takes effect immediately for the next call.

Get an API key