Transcripts
Search the call corpus, pull full turn-by-turn detail with extracted insights, and stream call audio. All free tier.
List & search calls
GET
/api/transcriptsPaginated, filterable list of calls — the Transcripts table. Every filter chip in the UI maps to a query parameter here.
| Param | Type | Description |
|---|---|---|
range / start / end | string | Date window (see Getting started). |
page | int | 1-based page number. |
page_size | int | Rows per page. |
search | string | Free-text match (also matches an exact call_sid). |
impersonated_brand | string | Filter by brand. |
lure_category | string | Filter by lure category. |
payment_method | string | Filter by requested payment method. |
only_hooked | bool | Only engaged calls. |
only_tier1 | bool | Only calls with Tier-1 financial data. |
min_confidence | float | Minimum auditor_confidence (0–1). |
min_duration / max_duration | int | Duration bounds (seconds). |
min_asked / max_asked | float | Dollar-ask bounds (USD). |
curl -H "Authorization: Bearer $BBO_API_KEY" \
"https://dashboard.martha-honeypot.com/api/transcripts?range=7d&only_tier1=true&page=1&page_size=25"
{ "range": {...}, "total": 74, "page": 1, "page_size": 25, "items": [
{ "call_sid": "CA…", "call_started_at": "...", "call_ended_at": "...",
"duration_sec": 210.0, "impersonated_brand": "Medicare",
"lure_category": "HEALTHCARE_BENEFITS", "scam_detected": true,
"monetary_ask_usd": 300.0, "payment_method": "Gift card",
"is_tier1": true, "is_tier2": true, "is_tier3": true,
"is_hooked": true, "auditor_confidence": 0.82 }, ... ] }
Full call detail
GET
/api/transcripts/{call_sid}The complete record for one call: every dialogue turn, the plain-text rendering, all extracted insights, the persona Martha used, GCS download URIs, and audio availability.
curl -H "Authorization: Bearer $BBO_API_KEY" \
"https://dashboard.martha-honeypot.com/api/transcripts/CA0123456789"
{ "call_sid": "CA…", "call_started_at": "...", "call_ended_at": "...",
"duration_sec": 210.0, "auditor_confidence": 0.82,
"turns": [ { "speaker": "scammer", "text": "This is Medicare…", "timestamp_offset_sec": 0.0 },
{ "speaker": "martha", "text": "Oh dear, is something wrong?", "timestamp_offset_sec": 3.4 } ],
"transcript_text": "scammer: …\nmartha: …",
"insights": { "event_classification": {...}, "infra_sticky_financial": {...}, ... },
"persona_snapshot": { "name": "Renee", ... },
"transcript_jsonl_uri": "gs://…", "transcript_txt_uri": "gs://…",
"has_audio": true, "audio_combined_uri": "gs://…",
"audio_caller_uri": "gs://…", "audio_martha_uri": "gs://…" }
The insights object mirrors the extraction record — see the
data model for every field.
Call audio
GET
/api/transcripts/{call_sid}/audioStreams the call recording as WAV. Supports HTTP Range requests for
seeking. Only available when the detail response has has_audio: true.
Query: variant = combined (default, stereo) |
caller | martha.
curl -H "Authorization: Bearer $BBO_API_KEY" \
"https://dashboard.martha-honeypot.com/api/transcripts/CA0123456789/audio?variant=combined" \
-o call.wav
To pull many calls at once as a flat file, use the
CSV export endpoints (pro tier) instead of paging
this list.
Support: brianley@silversentinel.ai