Overview
LLM Gateway gives you access to dozens of models, and the best one depends on your task, how long your audio is, and whether you care most about quality, speed, or cost. The models endpoint answers this for you. Alongside each model’s pricing and supported parameters, it returns aperformance block with benchmark results for voice post-processing tasks.
The numbers come from Voice Standard Bench, AssemblyAI’s open source benchmark. It runs every model behind LLM Gateway on real call transcripts and measures quality, latency, and cost.
Field names and values can change as the benchmark grows, so read it from the endpoint instead of copying numbers into your code.
How the numbers work
Tasks
Each model is tested on four voice post-processing tasks. Your model’s score for each task is intask_quality.
Quality scores run from 1 to 100, where higher is better. The overall
quality_score is the equal-weight average of the tasks that have data.
Audio length buckets
Every row inperformance.data is for one audio length, in the bucket field: 30s, 120s, 900s, or 3600s. Pick the bucket closest to the transcripts you process. Scores generally drop as transcripts get longer, so a model that is excellent on 30-second calls can be a different choice for hour-long recordings.
Fields
Reading the numbers carefully
- A
0means no data, not a bad score. Dictation isn’t measured on the900sand3600sbuckets, so itstask_qualityis0there. Attftof0means it wasn’t measured. Skip zeros instead of ranking on them. - Small gaps are noise. A one- or two-point difference between models doesn’t tell you much. Prefer the cheaper or faster model when scores are close.
- Cross-check outliers. If a single task score is far above the model’s
quality_scoreor its other tasks, it may come from very few usable samples. Checklatency.nand the other tasks before trusting it. - Look at
p95, not justp50. A model with a fast median can still have a slow tail, which matters for real-time use. - Costs use global pricing. They don’t include the regional surcharge shown on the Models page.
cost_per_hour_usdis an estimate based on average tokens per hour of audio, so fast or slow talkers shift your real cost. - The benchmark uses fixed prompts. Your prompts, your audio, and your domain will differ. Treat the numbers as a way to build a shortlist, then test the shortlist on your own data.
Reasoning effort rows
Most models have one row per bucket withreasoning_effort set to default. That means the benchmark didn’t send the reasoning_effort parameter. A few models have extra rows measured with a specific value, such as none, low, or high. Each row is a separate configuration with its own quality, latency, and cost, so a lower setting can be much faster and cheaper at a small cost in quality.
To use a non-default row, send that value in the reasoning_effort parameter of your chat completions request. Only models that list reasoning_effort in supported_parameters accept it.
Pick a model
Work through these filters in order. They’re the same ones the coding agent prompt below applies.- Match the bucket. Choose the
bucketclosest to your typical audio length. If your audio falls between buckets, use the longer one. - Rank by the task you run. Use
task_qualityfor that task. Usequality_scoreonly if you run several tasks with the same model. - Filter to what you can use. Drop models where
retirement_dateisn’t0, models whoseavailable_regionsdon’t include your region (see Cloud endpoints and data residency), and models whosesupported_parameterslack what you need, such asresponse_formatfor structured outputs ortoolsfor tool calling. - Apply your constraint. For lowest cost, sort by
cost_per_hour_usd. For real-time responses, sort bylatency.p50and checklatency.p95(orttftif you stream). For best quality, take the top score. - Break ties on cost. Among models within a couple of quality points of the top, choose the cheapest or fastest.
- Add a fallback. Pick the runner-up as a fallback so requests keep working if your primary model fails.
Example from the data
This snapshot is from October 15, 2026. For each bucket it shows the top-scoring model and the cheapest model within 3 points of it, excluding models with a retirement date. Quality is the combinedquality_score. The endpoint is the source of truth, so query it for current results.
Models with no setting in parentheses were measured at
default reasoning effort. Per-task winners differ from these overall winners, so rank on task_quality for your task before you decide.
Query the models endpoint
The endpoint is public, so you don’t need an API key. This example lists the five best models for summarization on 2-minute audio, skipping retiring models and models with no summarization data:llm-gateway.assemblyai.com with llm-gateway.eu.assemblyai.com.
Choose a model with a coding agent
Describe what you’re building in plain language, and your coding agent can read the endpoint, work out which tasks, audio length, and constraints apply, and write the integration code for the model it picks. Paste this prompt into Claude Code, Cursor, or your agent of choice, and replace the bracketed text with your description. For example: “a meeting notetaker that summarizes hour-long recordings and lists action items, with data kept in the EU.”Run Voice Standard Bench
The endpoint reflects one benchmark run on AssemblyAI’s own transcripts and prompts. Voice Standard Bench is open source (MIT), so you can see exactly how every number is produced and run it yourself. What it measures. For every model behind LLM Gateway, it runs the four tasks above on transcripts grouped by audio length. It records latency, token usage, cost, and quality, and rolls them up into the fields you see in the endpoint. What the repository gives you:- Published results. Open
use_cases.htmlinresults/canonical/for a browsable report that groups the best models by use case and audio length, with no setup.summary.csvandsummary.jsonhold every row. - The prompts. The task prompts, judge prompts, and scoring rubrics live in
src/prompts. Read them to see what a score is measuring. - The harness. A Go CLI that benchmarks models through LLM Gateway. Use it to benchmark a specific shortlist of models, try a different
reasoning_effort, or replay a run with a different judge without calling the models again.
The benchmark reads its transcripts from a
normalized/ directory that isn’t included in the repository, and running it makes billable LLM Gateway calls. Read the README before you start. It covers the dataset layout, the flags, and how scores are calculated.Related
- Models: every model with its ID, parameters, and pricing.
- Model fallbacks: automatically retry on a backup model.
- Cloud endpoints and data residency: which models are available in which regions.
- Improve latency: reduce request overhead with keep-alive connections.