All benchmarks

τ²-Bench: Airline

τ²-Bench Airline tests whether a model can do an airline support agent's job: follow a policy manual, talk to a simulated customer, and call the right tools to search flights, change bookings, and issue refunds. The model doesn't need any domain knowledge; it's scored entirely on how well it executes tool calls across multi-step task trajectories. We run it continuously against the same provider endpoints that serve OpenRouter traffic, so a score reflects both the model and the provider running it. We use this benchmark because it has a high floor, so we can assess provider variance and not model capability. Our routing algorithm for tool call requests uses these same signals to send traffic to the best performing endpoints.

Last benchmark run

Which model leads the τ²-Bench Airline benchmark?

OpenAI: GPT-5.1 leads τ²-Bench Airline at 80.0% as of Nov 14, 2026, 3:48 AM UTC. Airline tasks, policy, simulator and customer setup, step budget, and grading are held fixed across production provider endpoints, so the displayed results compare models and the providers serving them under the same evaluation conditions.

Tool-call errors before → after Auto Exacto

3.9% → 1.4%

Tool-call error rate on models enrolled in Auto Exacto, OpenRouter's automatic provider optimization for tool-calling requests.

Model comparison

Most Accurate

Best Value

Accuracy
Representative-run accuracy, best first.
Cost per task
Average cost per graded task, cheapest first.
Time per task
Average wall-clock time per task, fastest first; agents that loop or stall run long.

Cost efficiency

Accuracy vs. cost (Pareto frontier)
One point per model, using default routing (not pinned to a provider) when available. The line is the Pareto frontier: no model beats these on both accuracy and cost.

Tool-call reliability

Leaderboard

Top-level rows use default routing where available; click a row to expand provider-pinned results.

τ²-Bench Airline leaderboard: model accuracy, cost, time, and output tokens per task by provider
#ModelStd dev
180.0%±0.0pp$0.398.0m34.1k
279.3%--$0.03110.6m16.7k
379.2%±1.3pp$0.721.9m6.9k
479.1%±1.8pp$0.2112.8m32.4k
579.0%±2.6pp$0.861.9m5.72k
678.8%±2.2pp$0.1671s6.25k
778.7%--$0.505.8m22k
878.3%±1.0pp$0.0741.6m21.5k
978.2%±1.5pp$0.471.9m6.97k
1077.9%±1.5pp$0.0156.3m21.7k
1177.5%±2.4pp$0.179.4m35.6k
1277.5%±2.6pp$0.0664.3m14.2k
1377.3%±2.7pp$0.104.8m21.8k
1477.3%±3.3pp$0.0571.9m6.56k
1577.2%±0.8pp$0.193.6m17.1k
1677.0%±2.3pp$0.1514.2m32.4k
1777.0%±0.3pp$0.353.0m12.7k
1876.9%±2.1pp$0.0623.8m13.1k
1976.8%±2.1pp$0.492.1m8.04k
2076.8%±4.3pp$0.06816.2m44.2k
2176.7%±0.0pp$1.281.6m5.71k
2276.4%±2.2pp$0.4389s5.55k
2376.1%±2.7pp$0.542.9m10.7k
2476.0%±3.1pp$0.1114.6m24.2k
25
digitalocean
76.0%--$0.01642s1.76k
2675.9%±1.5pp$0.215.2m10.2k
2775.7%±1.0pp$0.08873s8.72k
2875.7%±2.5pp$0.0383.3m13.6k
2975.6%±3.2pp$0.0316.7m11.7k
3075.6%±5.1pp$0.08011.8m47.6k
3175.6%±1.9pp$0.0092.0m5.38k
3275.3%±2.7pp$0.172.5m22.9k
3375.3%±0.7pp$0.334.0m12k
3475.3%±1.7pp$0.341.9m7.04k
3575.3%--$0.303.0m13.6k
36
Amazon Bedrock
75.3%--$0.293.4m11.2k
3775.1%±2.8pp$0.0333.7m35.2k
3875.0%±0.3pp$0.292.9m10.4k
3974.9%±3.1pp$0.201.9m7.74k
4074.8%±2.0pp$0.194.8m11.6k
4174.8%±2.0pp$0.0303.3m18.7k
4274.1%±2.5pp$0.0262.2m9.51k
4374.1%±2.5pp$0.513.2m10.1k
4474.1%±3.5pp$0.0443.0m9.39k
4574.0%±2.7pp$0.333.3m11.6k
4673.9%±2.8pp$0.0772.0m8.78k
4773.9%±2.9pp$0.254.4m10.6k
4873.7%±2.5pp$0.04310.2m16.2k
4973.7%±1.0pp$0.482.1m7.21k
5073.6%±3.5pp$0.0318.0m15.4k
5173.4%±5.1pp$0.0094.1m16k
5273.4%±4.5pp$0.03320.1m52.9k
5373.3%±2.7pp$0.131.8m5.15k
5473.3%±2.0pp$0.122.6m19.7k
5573.3%--$0.0271.7m4.21k
5673.2%±4.1pp$0.0106.9m14.4k
5773.1%±1.9pp$0.0633.9m12.5k
5873.1%±3.0pp$0.0123.6m14.7k
5973.0%±0.3pp$0.0638.1m14.5k
6072.9%±1.7pp$0.0332.2m14.6k
6172.8%±4.1pp$0.01286s10.7k
6272.7%--$2.915.5m12.4k
6372.7%±2.7pp$0.433.3m31.3k
6472.3%±0.3pp$0.1183s3.74k
6572.3%±1.0pp$0.0293.0m35k
6672.3%±8.6pp$0.0404.5m22.5k
6772.2%±3.0pp$0.333.5m10.4k
6872.1%±2.3pp$0.0605.6m10k
6972.0%--$0.403.3m16.3k
7071.9%±1.4pp$0.0536.4m9.36k
7171.7%±3.8pp$0.103.6m10.1k
7271.7%±1.0pp$0.138.9m57k
7371.3%±0.0pp$0.0802.3m42.7k
7471.3%--$0.0175.5m17.2k
7571.3%--$0.214.4m27.6k
7670.9%±2.9pp$0.0471.7m8.39k
7770.9%±1.3pp$0.0273.9m10.5k
7870.7%--$0.0052.7m17k
7970.7%--$0.714.8m22.9k
8070.3%±0.3pp$0.0855.8m32.9k
8170.3%--$0.0546.6m20.7k
8270.0%--$0.302.1m8.5k
83
digitalocean
70.0%--$0.00449s1.57k
8470.0%--$0.0031.6m17.1k
8570.0%±3.3pp$0.0565.7m9.28k
8670.0%--$0.102.4m3.64k
8769.7%±1.0pp$0.0131.9m5.14k
8869.3%--$0.131.6m4.98k
8969.3%--$0.0283.5m14.9k
9068.7%--$0.00278s11.7k
9168.5%±4.8pp$0.0145.8m20.2k
9268.4%±1.6pp$0.06461s4.74k
9368.0%--$0.792.1m9.36k
9468.0%--$0.582.4m3.73k
9567.7%±3.0pp$0.0224.3m10.2k
9667.3%±2.7pp$0.6312.2m54.9k
9767.3%--$0.0092.0m8.9k
9867.2%±2.8pp$0.08081s3.53k
9966.7%--$0.0395.2m32k
10066.7%±0.7pp$0.0133.0m13.3k
10166.7%±1.3pp$0.0891.8m12.9k
10266.7%±1.3pp$0.0083.7m8.88k
10366.0%--$0.0753.7m15k
10465.7%±2.7pp$0.122.0m12.6k
10565.6%±1.9pp$0.0175.2m22.8k
10665.2%±3.6pp$0.0119.1m18.1k
10764.7%±2.7pp$0.0302.0m16k
10863.3%--$0.0433.3m26.8k
10963.2%--$0.974.2m73k
11062.7%--$0.1210.6m26.8k
11161.3%±2.5pp$0.0471.7m4.74k
11260.7%--$0.0325.6m8.85k
11360.7%±2.7pp$0.0473.5m3.67k
11458.3%--$0.01513.9m38.6k
11558.0%±2.7pp$0.213.0m12.1k
11656.7%±0.7pp$0.02975s7.7k
11753.7%±1.9pp$0.01517.4m62.2k
11853.4%--$0.0121.6m16.6k
11951.8%±2.7pp$0.0287.4m58.3k
12049.5%±3.8pp$0.1735.3m40k
12148.3%±3.7pp$0.04111.2m93.9k
12248.0%--$0.01180s3.76k
12347.7%±1.7pp$0.1353s2.67k
12447.0%--$0.0367.3m20.9k
12547.0%±1.0pp$0.02013.8m18.4k
12646.2%±1.9pp$0.03861s2.73k
12746.2%±2.3pp$0.0241.8m3.75k
12846.0%--$0.01187s9.09k
12945.0%±0.3pp$0.08014.0m21.3k
13044.3%±1.0pp$0.02359s2.33k
13144.0%±0.7pp$0.03111.3m16.7k
13243.0%±17.2pp$0.0759.8m9.59k
13342.7%±0.7pp$0.2152s2.19k
13442.3%±1.7pp$0.0704.2m2.64k
13541.7%±3.0pp$0.2053s2.09k
13640.0%±1.4pp$0.0828.3m14.2k
13739.8%±1.8pp$0.0695.3m7.31k
13838.4%±0.8pp$0.0273.7m4.47k
13937.8%±13.1pp$0.0193.9m3.25k
14035.6%±2.4pp$0.0783.5m7.3k
14133.6%±4.6pp$0.05773s1.33k
14232.7%--$0.0292.2m3.41k
14330.7%±0.7pp$0.01855s3.41k
14425.6%±5.5pp$0.00519s2.05k
14524.0%±3.3pp$0.07311.0m5.32k
14611.0%±1.0pp$0.00764s2.31k

Why we run this benchmark

It's a tool-calling benchmark that is hard to game. Grading depends on live tool-call trajectories rather than memorized answers, so it resists training-data leakage better than Q&A-style evals. It exercises every tool-calling failure mode (wrong arguments, skipped policy checks, giving up, hallucinated confirmations) at a relatively low cost per run. The relative scores also carry more signal than the absolute ones. The same model can score differently across providers, and those deltas are what Exacto routing uses to pick higher-accuracy endpoints.

Each task is a simulated airline support conversation with a scripted user, a toolbox (flight search, booking changes, refunds, loyalty policies), and a gold reference solution. A task passes only if the final database state and the messages to the user match the reference; partial credit is not awarded.

What the scores can and can't tell you

There is still headroom. Top models fail roughly one in five tasks, and the airline domain is the hardest τ²-Bench split. Accuracy differences here separate models that follow multi-step policies from ones that merely chat well.

The floor is high, though. Many tasks reward inaction. A refusal task with an empty gold action list passes for any agent that changes nothing. Even weak models score well above zero, so the meaningful spread sits at the top of the range.

The benchmark is public, so tasks may appear in training corpora. Contamination inflates scores less here than in Q&A-style evals, though, since a leaked task still has to be executed correctly, step by step, against a live database.

Scoring fidelity has limits. The checker verifies two things: the final database hash and exact substring matches in the agent's messages. Each task's natural-language assertions ("agent should refuse the cancellation") are metadata, and no judge model reads the transcript. So a savings calculation fails if the agent says "$23,552.50" when the checker greps for "23553".

The user simulator matters too. We pin it to gemini-2.5-flash so agent scores stay comparable, but the sim is itself an LLM with failure modes of its own. It can stop the conversation before the agent finishes, leak its hidden task instructions, or keep a stuck agent looping until the 200-step ceiling kills the run. Swapping the sim model shifts absolute scores, which is why cross-paper τ²-Bench numbers rarely line up exactly.

How a task is scored

Every task ships a gold solution: a list of tool calls, strings the agent must say, and natural-language assertions. After the conversation ends, the checker replays the gold tool calls against a fresh database and compares hashes with the agent's final database. It then greps the agent's messages for each required string. The reward is the product of those two checks:

reward = db_match × communicate_met   // each ∈ {0, 1}
db_match        = hash(agent DB) == hash(gold DB)
communicate_met = every required string appears in an agent message
any run that hits MAX_STEPS instead of a clean stop scores 0 outright

The rollouts below are from real runs, with gemini-2.5-flash as the user simulator throughout.

reward = 1

Pass: three changes in one request, all three land

Task 17 agent: openai/gpt-5.1

For reservation FQ8APE: add 3 checked bags, swap the passenger to Omar Rossi, and upgrade basic economy to economy, paying with a gift card.

  • Database must match the gold state: update_reservation_flights (economy upgrade), update_reservation_passengers, and update_reservation_baggages with exact arguments
  • communicate_info is empty, so no string check applies
db ✓
communicate ✓
USER_STOP

The agent looked up the user, found the right reservation among several, confirmed the changes and payment method, then made all three writes: passenger swap, cabin upgrade, and bags. The final database hashes match the gold state and the run ends on USER_STOP, so reward is 1. This is what the eval is designed to measure: multi-step tool use under policy constraints, done correctly.

Methodology

Scores aggregate successful runs from the newest 90 days, weighted by task count, with a minimum of 45 graded tasks per model-provider pair. A model's headline score uses its default routing (not pinned to a provider) when one exists; otherwise it falls back to the median provider. The standard deviation is measured across runs for that representative result. Cost, time, and token figures are per-task averages from the same runs. Best value is the cheapest Pareto-optimal model within 5 points of the top score.

These are the same measurements that power Exacto routing. See the docs for how routing works, or browse all models to try one.

API access

These scores are available through OpenRouter's public benchmarks API, so you can retrieve the same model-level results programmatically.

GET https://openrouter.ai/api/v1/benchmarks?source=openrouter
Authorization: Bearer <API key>

Use task_type=agentic to filter to tau_bench_verified_airline. Each item represents one model and includes accuracy, accuracy_stddev, avg_cost_per_task, total_tasks, and last_run_timestamp. See the benchmarks API docs.

Download and cite

A snapshot of this leaderboard is published in the benchmark-leaderboard open dataset (filter on the benchmark column), regenerated daily with no API key required. The current snapshot was generated on . It is licensed under CC BY 4.0, so you can reuse and republish it with attribution to OpenRouter.

Column definitions, methodology and redaction rules are in the dataset README.

Cite this leaderboard

OpenRouter (2026). τ²-Bench: Airline results on OpenRouter, 2026-11-14 snapshot. https://openrouter.ai/benchmarks/tau2-bench-airline. Licensed under CC BY 4.0.

Frequently asked questions