Meeting Blips API¶
Two endpoints, usually used together: transcribe an audio file, then extract structure from the resulting (or a directly-pasted) transcript.
POST /api/briefblip/extract.php¶
Extracts attendees, decisions, action items, next steps, and a recap from a meeting transcript.
Auth: anonymous (20/hour per network) or X-Briefblip-Key (no limit).
{
"transcript": "full transcript text (required, max 60,000 chars)",
"title": "optional meeting title (max 200 chars)"
}
{
"title": "...",
"attendees": [{ "name": "...", "role": "..." }],
"meeting_date": "...",
"meeting_time": "...",
"location": "...",
"decisions": ["..."],
"action_items": [{ "text": "...", "owner": "..." }],
"next_steps": ["..."],
"recap": "...",
"model": "...",
"cost": { "usd": 0.0, "input_tokens": 0, "output_tokens": 0 }
}
Errors: 400 missing/oversize transcript · 429 rate limit · 502
model gateway unavailable, or the model's output couldn't be parsed as JSON.
Notes: stateless — nothing is stored. attendees/decisions/etc. are
never invented; a category with nothing found comes back as an empty
array/null.
POST /api/briefblip/transcribe.php¶
Transcribes an uploaded audio file. Typically called first, with its
transcript field then passed to extract.php.
Auth: anonymous (10/hour per network) or X-Briefblip-Key (no limit).
Request: multipart/form-data
| Field | Required | Notes |
|---|---|---|
audio |
yes | One of mp3, wav, ogg, oga, m4a, mp4, flac, webm, aac, ≤100 MB |
language |
no | ISO language code, or auto (default) |
num_speakers |
no | 1–20; only honored when diarization is enabled |
{
"transcript": "...",
"engine": "whisper",
"language": "...",
"duration_sec": 0,
"segments": [ ],
"speakers": [ ],
"num_speakers": 0,
"diarized": false
}
Errors: 400 upload error/missing file · 413 file too large · 415
unsupported format · 429 rate limit · 503 transcription service
temporarily unavailable.
Notes: speaker diarization is a feature flag — when it's off, diarized
comes back false and everything is treated as one speaker.