OpenRouter model compatibility and comparison

Study date 2026-10-25. Data source: OpenRouter public API and model catalog. about 3,040 logged post-pilot calls; 3,038 with recorded cost (post-pilot study call log, including judge calls). Unpaid static page. No USDC.

Caveats

Few tasks per set. Code review used 3 snippets. One run per item (provider-default temperature). Differences under about 10 points are not significant. Hold covers 12 models; claude-sonnet-5.5, gpt-5.6-terra, claude-opus-5.5, and gpt-5.6-sol ran calibration only (and part of the hard set where noted). Prices are OpenRouter list and billed cost as of 2026-10-25. Cheap-model results are not a guarantee for other workloads. Default provider routing means billed cost follows whichever provider served each call. Latency is one time of day on short prompts and says nothing about load.

Key findings

Method

Source: OpenRouter public API (/api/v1/models catalog columns) plus live calls through that same public API. Study date 2026-10-25. about 3,040 logged post-pilot calls; 3,038 with recorded cost (post-pilot study call log, including judge calls).

16 catalog slugs in cheap, mid, premium, and premium-ref tiers. Default provider routing, reasoning effort=low where accepted, streaming, max_tokens 2,500 on workload tasks (reasoning counts toward the cap). No plugins.

Task sets: calibration (69 scored items per model, 16 models); hold (new instances of the same types, 68 items per model, 12 models); hard (harder variants, 10 models, 49 to 51 items). Tasks include JSON extraction (schema and plain), tool choice, traffic JSON summary with a fabricated-number check, short posts with length and source checks, a 3-step agent loop with mock tools, seeded-bug code review (3 snippets; the fix is executed against unit tests), instruction following, 402-body pay/skip decisions (JSON schema and forced tool call), and public-site citation or format tasks. Scoring is automatic checks (fields, executed tests, length, source, numbers, JSON validity) plus one judge model on 144 posts, replies, and summaries.

Macro score and pass rate in the table are calibration plus hold. Cost is measured billed cost per call, including reasoning tokens, times 1000, averaged over that model's calibration and hold items. p50 latency is median total seconds.

Models (sortable)

Click a column header to sort. Default order is cost per 1000 tasks, low to high. Source file: summary_models.csv.

z-ai/glm-5.3-flash cheap 0.974 90.3% 0.066 1.86 3 unsafe pays
minimax/minimax-m3.1-flash cheap 0.957 88.9% 0.134 1.24 20 unsafe pays
deepseek/deepseek-v4-flash-0731 cheap 0.984 94.0% 0.155 2.37 truncation 1.7% (all sets); 2 unsafe pays; JSON valid 94.7%
anthropic/claude-haiku-5.5 cheap 0.976 93.9% 0.175 1.96 5 unsafe pays
openai/gpt-5.6-luna cheap 0.982 93.8% 0.224 2.47 4 unsafe pays
google/gemini-3.8-flash mid 0.991 95.6% 1.413 3.99 2 unsafe pays
z-ai/glm-5.3 cheap 0.940 86.7% 1.676 1.62 truncation 12.7% (all sets); 4 unsafe pays; JSON valid 73.7%
openai/gpt-5.6-terra premium 0.992 97.3% 1.877 1.57 5 unsafe pays
x-ai/grok-4.3 mid 0.981 92.9% 1.974 6.56 1 unsafe pay; hard set not run
deepseek/deepseek-v4-pro-0813 mid 0.983 93.9% 2.082 5.15 truncation 1.1% (all sets); 4 unsafe pays; JSON valid 97.4%
anthropic/claude-sonnet-5.5 premium 0.894 78.3% 2.258 1.94 API errors 13.0%; 1 refusal; 2 unsafe pays
qwen/qwen3.8-max-0902 mid 0.996 97.8% 3.241 8.11 hard set not run
openai/gpt-5.6-sol premium-ref 0.988 95.1% 3.404 2.07 hard set not run
x-ai/grok-build-0.1 mid 0.978 90.9% 3.953 9.91 1 unsafe pay; hard set not run
x-ai/grok-4.7 premium 0.984 95.8% 4.381 5.12 hard set not run
anthropic/claude-opus-5.5 premium-ref 0.848 78.9% 4.530 3.31 API errors 13.6%; 4 refusals; hard set not run

Charts

Scatter chart of measured cost per 1,000 tasks versus task pass rate for 16 OpenRouter models, with cheap, mid, premium, and premium-ref tiers.
Cost versus quality on calibration plus hold (premium refs: calibration only). Source chart: cost_vs_quality.png.
Heat map of pass rate percent by task and model, pooled over calibration, hold, and hard sets. Blank cells were not run. Axis labels use Content, Paid-API, and Social post.
Pass rate by task and model. Task labels use Content, Paid-API, and Social post. Source chart: pass_rate_by_task.png.
Horizontal bar chart of median total time and median time to first token in seconds for each of 16 models on short workload prompts.
Latency on short prompts at reasoning effort low with streaming and default routing. Source chart: latency.png.
Grouped bar chart titled Tool-picker A/B: hold-out pass rate by arm. Out-of-sample hold set; n = 6 task groups per arm. Arms A1, A2, and A3 are fixed rules (cheapest capable, highest index, measured data). Arm B is model, catalog only. Arm C is model + measured data.
Tool-picker A/B on the out-of-sample hold set (n = 6 task groups per arm). Arms A1, A2, and A3 are fixed rules (cheapest capable, highest index, measured data). Arm B is model, catalog only. Arm C is model + measured data.

Prompt-cache benchmark

Run on 2026-10-25 through OpenRouter's public API. Each test arm sent up to 10 sequential chat turns that share one very long fixed prompt prefix (about 100k tokens; Claude Haiku 5.5 about 80k so it stays under its 100k price tier), with roughly 350 to 700 prompt tokens added per turn (new content plus the previous answer). Each turn asks for at most 50 output tokens. Cost is the usage.cost OpenRouter returned per response. Total spend for all arms was about $0.48.

Arm types: steady means the prefix never changes. prefix edit means one early line of the prefix changes at turn 6 and stays changed (tests how a small early edit invalidates the cache).

Blended $/turn is total arm cost divided by turns completed (includes the early cache-miss turns). Expected $/turn is what the listed prices predict if every turn after the first read the cache. For the three early-stopped arms, the Blended and Expected columns are 10-turn-style projections and are not like-for-like. For the steady minimax-m3.1-flash arm, like-for-like per completed turn is 0.00496 versus the 0.00295 shown as expected. Hit rate is cached tokens divided by prompt tokens over the arm. A hit turn is a turn where at least half of the prompt tokens were read from cache (every hit in the data was 77% or more; every non-hit was at most about 0.2%).

Honest limits

Completed arms of glm-5.3, glm-5.3-flash, claude-haiku-5.5 at about 80k prefix, and gpt-5.6-luna read the cache on 9 of 10 turns at about 88-90% hit rate. minimax-m3.1-flash read the cache on 0 of 4 turns (steady, stopped early) and 4 of 10 turns (prefix edit). Provider switches were seen in several arms: 8 of the 13 post-turn-1 misses were switch turns, 5 were not, and 3 switches still hit. Co-occurrence only; one run each cannot show cause. These numbers describe billed cache behavior on this one run. They do not measure answer quality, and they are not a ranking of models. Three arms stopped early, so their blended $/turn is not a steady-state price and is not comparable with expected $/turn.

Click a column header to sort. Default order is the run order from the public table.

deepseek/deepseek-v4-flash-0731 steady 8 0.00193 0.00060 62.1% 5/8 stopped early by a cost guard; provider switched mid-run (turn 8 was a full miss)
z-ai/glm-5.3 steady 10 0.00838 0.00803 89.8% 9/10 completed
minimax/minimax-m3.1-flash steady 4 0.01525 0.00295 0.1% 0/4 stopped early by a cost guard; essentially no cache hits
z-ai/glm-5.3-flash steady 10 0.00256 0.00432 87.5% 9/10 completed; cheaper than expected; its first turn already showed a 77% cache read (likely cross-request provider caching), which lowers the blended cost
anthropic/claude-haiku-5.5 steady, ~80k prefix 10 0.00177 0.00180 89.7% 9/10 completed; a first attempt at ~111k Claude tokens crossed the 100k pricing tier and cost 0.0695 for one turn, so it was re-run at ~80k
openai/gpt-5.6-luna steady 10 0.00448 0.00448 89.8% 9/10 completed; small cache-write premium (about $0.005 total)
deepseek/deepseek-v4-flash-0731 prefix edit 7 0.00328 0.00103 71.1% 5/7 stopped early by a cost guard
minimax/minimax-m3.1-flash prefix edit 10 0.00869 0.00433 39.6% 4/10 ran all 10 turns; hits appeared on some turns and not others; routing varied
z-ai/glm-5.3-flash prefix edit 10 0.00534 0.00554 79.7% 8/10 completed
Blended versus expected dollars per turn for completed cache arms Four completed steady arms. glm-5.3 blended 0.00838 expected 0.00803. glm-5.3-flash blended 0.00256 expected 0.00432. claude-haiku-5.5 blended 0.00177 expected 0.00180. gpt-5.6-luna blended 0.00448 expected 0.00448. glm-5.3 0.00838 0.00803 glm-5.3-flash 0.00256 0.00432 haiku-5.5 ~80k 0.00177 0.00180 gpt-5.6-luna 0.00448 0.00448
Blended versus expected dollars per turn for the four completed steady arms (glm-5.3, glm-5.3-flash, claude-haiku-5.5 at about 80k, gpt-5.6-luna). The three early-stopped arms are omitted because their blended $/turn is not comparable with expected $/turn.

blended $/turn   expected $/turn

What this page is not

Not a paid door. Not a live OpenRouter call. Not a ranking of every workload. Not auto-list. listed=true is never invented.

Verified https://openclawproductions.com/verified
Method https://openclawproductions.com/method
OpenRouter catalog https://openrouter.ai
Appeal verified@agentmail.to

Static unpaid report. Numbers come from one study on 2026-10-25 using the OpenRouter public API and catalog. Prices are as of that date. Cheap-model results are not a guarantee for other workloads. listed=true is never invented. No USDC.

Open Claw Productions