customers
All customer stories
Top Voice AI companies are building with Assembly.
resources
Latest Release
Voice Agent API
Voice agents that get it right, respond instantly, and ship the same day with our new Voice Agent API
resources
Build voice-powered legal tools that transcribe depositions, hearings, and client consultations with speaker-labeled, timestamped, court-grade accuracy — and redact privileged information automatically.
Deposition transcript
LiveWilliams v. Meridian Corp. · Case No. 2026-CV-04471
Counsel (Ms. Reeves)
10:14:32"Can you describe what happened on the morning of March 12th?"
Witness (Mr. Dalton)
10:14:41"I arrived at the facility around 7 AM. I spoke with [REDACTED] about the shipment."
Counsel (Ms. Reeves)
10:14:58"And who authorized the change to the delivery schedule?"
Court reporter
10:15:03[Speaker 4 identified · diarization active]
Court reporting runs $4–6 per page with 24–48 hour turnaround, and paralegal review of depositions for privilege and PII is brutally manual. Voice agents could automate intake, scheduling, and transcription — but legal demands word-level accuracy, speaker attribution, timestamp precision, and privilege detection that consumer ASR can't deliver. AssemblyAI is purpose-built for the audio reality of depositions, hearings, and consultations.
Median streaming latency for real-time courtroom and deposition transcription.
Better consecutive number recognition for case numbers, citations, and exhibit IDs.
Domain-specific legal terms boosted per session — statutes, case law, party names.
Type 2 certified, plus PCI DSS v4.0 and ISO 27001:2022 for regulated legal workloads.
Two ways to build
Ship a voice-driven intake agent in an afternoon, or drop court-grade streaming STT into the case management software you already run.
Our proprietary voice stack via one WebSocket. Run a voice-driven legal intake or scheduling agent that captures caller info, books consultations, and pushes to your case management system — zero infra to manage.
Best for
Free tier available · No credit card required
The court-grade transcription layer for your discovery and case management workflow. Speaker labels, word-level timestamps, and inline PII redaction baked in.
Best for
No concurrency caps · Autoscaling included
Capture deposition or hearing audio
Stream audio from court-reporter mics, video-conferencing platforms, or recorded depositions into the API. Multi-party rooms work natively.
Transcribe with speaker labels and timestamps
Universal-3 Pro Streaming attributes each turn to a speaker label (counsel, witness, judge) with word-level timestamps — exactly the structure paralegals need for review.
Redact privileged info and PII inline
Streaming PII redaction masks SSNs, dates of birth, account numbers, and addresses before finalized turns ever leave the API. Configurable policies per matter.
Export to case management or discovery
Push structured transcripts (speakers, timestamps, redaction markers) into Clio, MyCase, Practice Panther, LexisNexis, Westlaw, or your custom discovery workflow.
Legal transcription pipeline
Capture deposition or hearing audio
Transcribe with speaker labels + timestamps
Redact privileged info + PII inline
Export to case management or discovery
Voice Agent API — legal intake agent with case-management write-back
# Voice Agent API: legal intake voice agent
import asyncio, json, websockets
API_KEY = "YOUR_API_KEY"
async def run_intake_agent():
async with websockets.connect(
"wss://agents.assemblyai.com/v1/ws",
additional_headers={"Authorization": f"Bearer {API_KEY}"},
) as ws:
await ws.send(json.dumps({
"type": "session.update",
"session": {
"system_prompt": (
"You are a legal intake assistant for Reeves & Partners. "
"Capture caller name, case type, key dates, and a one-line "
"summary. Never offer legal advice. Confirm captured fields "
"and route to the attorney on call via schedule_consultation."
),
"greeting": "Reeves & Partners, how can I help you today?",
"input": {"keyterms": ["deposition", "subpoena", "motion to compel", "discovery"]},
"output": {"voice": "ivy"},
"tools": [{
"type": "function",
"name": "schedule_consultation",
"description": "Book a consultation with the attorney on call.",
"parameters": {
"type": "object",
"properties": {
"client_name": {"type": "string"},
"case_type": {"type": "string"},
"summary": {"type": "string"},
},
"required": ["client_name", "case_type"],
},
}],
},
}))
async for msg in ws:
handle(json.loads(msg)) # transcript.user, reply.audio, tool.call, ...
Universal-3 Pro Streaming — live deposition transcript with PII redaction
# Universal-3 Pro Streaming: live deposition transcript
import asyncio, json, websockets
from urllib.parse import urlencode
API_KEY = "YOUR_API_KEY"
params = urlencode({
"sample_rate": 16000,
"speech_model": "u3-rt-pro",
"keyterms_prompt": json.dumps([
"Williams v. Meridian Corp", "Case No. 2026-CV-04471",
"Exhibit A", "deposition", "subpoena duces tecum",
"motion to compel",
]),
"format_turns": "true",
"speaker_labels": "true", # counsel vs. witness vs. judge
"redact_pii": "true", # mask privileged PII inline
"redact_pii_policies": json.dumps([
"us_social_security_number", "date_of_birth",
"phone_number", "email_address", "person_name",
"credit_card_number", "location",
]),
"redact_pii_sub": "entity_name", # e.g. [PERSON_NAME]
})
async def transcribe_deposition(audio_iter, export_to_case_mgmt):
url = f"wss://streaming.assemblyai.com/v3/ws?{params}"
async with websockets.connect(
url, additional_headers={"Authorization": API_KEY},
) as ws:
async def send_audio():
async for chunk in audio_iter:
await ws.send(chunk)
asyncio.create_task(send_audio())
async for raw in ws:
evt = json.loads(raw)
if evt.get("type") == "Turn" and evt.get("end_of_turn"):
# finalized turn with speaker_label + PII-redacted transcript
export_to_case_mgmt({
"speaker": evt.get("speaker_label"),
"transcript": evt["transcript"],
"words": evt.get("words", []), # word-level timestamps
})
Universal-3 Pro Streaming attributes each turn to a speaker label out of the box — counsel, witness, judge, court reporter — so depositions and hearings transcribe with the structure paralegals need without manual cleanup.
Mask SSNs, dates of birth, account numbers, addresses, and 10+ other PII categories on finalized turns. Configurable per matter and per redaction policy — no privileged information ever reaches your case management system unredacted.
Universal-3 Pro Streaming delivers 28% better consecutive number recognition than competing real-time STT — critical for capturing case numbers (2026-CV-04471), exhibit IDs, statute references, and citations cleanly the first time.
Calabrio replaced its legacy on-premise transcription solution with AssemblyAI's API, powering its enterprise workforce and conversation intelligence platform across multilingual contact center recordings.
Calabrio
Aloware's AloAi Voice Analytics platform processes 200 million calls and texts on AssemblyAI's API — converting half its client base to AI-powered packages and lifting lead-to-close rate by 27%.
Aloware
Read more