Skip to main content

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 a performance 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 in task_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 in performance.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 0 means no data, not a bad score. Dictation isn’t measured on the 900s and 3600s buckets, so its task_quality is 0 there. A ttft of 0 means 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_score or its other tasks, it may come from very few usable samples. Check latency.n and the other tasks before trusting it.
  • Look at p95, not just p50. 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_usd is 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 with reasoning_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.
  1. Match the bucket. Choose the bucket closest to your typical audio length. If your audio falls between buckets, use the longer one.
  2. Rank by the task you run. Use task_quality for that task. Use quality_score only if you run several tasks with the same model.
  3. Filter to what you can use. Drop models where retirement_date isn’t 0, models whose available_regions don’t include your region (see Cloud endpoints and data residency), and models whose supported_parameters lack what you need, such as response_format for structured outputs or tools for tool calling.
  4. Apply your constraint. For lowest cost, sort by cost_per_hour_usd. For real-time responses, sort by latency.p50 and check latency.p95 (or ttft if you stream). For best quality, take the top score.
  5. Break ties on cost. Among models within a couple of quality points of the top, choose the cheapest or fastest.
  6. 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 combined quality_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:
Each model in the response has this shape. Fields not used for model selection are omitted here:
To use the EU endpoint, replace 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.”
To keep your agent on current information in an ongoing project, see Build with AI agents for how to pin AssemblyAI docs in your project instructions.

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.html in results/canonical/ for a browsable report that groups the best models by use case and audio length, with no setup. summary.csv and summary.json hold 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.
When to run it yourself. Run it when the published numbers aren’t enough to decide, for example if your transcripts look very different from call audio, or you want to compare models on your own data. Otherwise the endpoint and the published results are the faster route.
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.