1use std::collections::HashMap;
24use std::sync::OnceLock;
25
26use crate::{Api, InputModality};
27
28#[derive(Debug, Clone, Copy, PartialEq)]
32pub struct ModelEntry {
33 pub id: &'static str,
35 pub name: &'static str,
37 pub api: Api,
39 pub provider: &'static str,
41 pub reasoning: bool,
43 pub input: &'static [InputModality],
45 pub cost_input: f64,
47 pub cost_output: f64,
49 pub cost_cache_read: f64,
51 pub cost_cache_write: f64,
53 pub context_window: u32,
55 pub max_tokens: u32,
57}
58
59impl ModelEntry {
60 pub fn supports_vision(&self) -> bool {
62 self.input.contains(&InputModality::Image)
63 }
64
65 pub fn supports_reasoning(&self) -> bool {
67 self.reasoning
68 }
69
70 pub fn calculate_cost(
72 &self,
73 input_tokens: u64,
74 output_tokens: u64,
75 cache_read: u64,
76 cache_write: u64,
77 ) -> f64 {
78 let in_cost = (input_tokens as f64 / 1_000_000.0) * self.cost_input;
79 let out_cost = (output_tokens as f64 / 1_000_000.0) * self.cost_output;
80 let cr_cost = (cache_read as f64 / 1_000_000.0) * self.cost_cache_read;
81 let cw_cost = (cache_write as f64 / 1_000_000.0) * self.cost_cache_write;
82 in_cost + out_cost + cr_cost + cw_cost
83 }
84}
85
86static AMAZON_BEDROCK_MODELS: &[ModelEntry] = &[
88 ModelEntry {
89 id: "amazon.nova-2-lite-v1:0",
90 name: "Nova 2 Lite",
91 api: Api::BedrockConverseStream,
92 provider: "amazon-bedrock",
93 reasoning: false,
94 input: &[InputModality::Text, InputModality::Image],
95 cost_input: 0.0,
96 cost_output: 0.0,
97 cost_cache_read: 0.0,
98 cost_cache_write: 0.0,
99 context_window: 128000,
100 max_tokens: 4096,
101 },
102 ModelEntry {
103 id: "amazon.nova-lite-v1:0",
104 name: "Nova Lite",
105 api: Api::BedrockConverseStream,
106 provider: "amazon-bedrock",
107 reasoning: false,
108 input: &[InputModality::Text, InputModality::Image],
109 cost_input: 0.0,
110 cost_output: 0.0,
111 cost_cache_read: 0.015,
112 cost_cache_write: 0.0,
113 context_window: 300000,
114 max_tokens: 8192,
115 },
116 ModelEntry {
117 id: "amazon.nova-premier-v1:0",
118 name: "Nova Premier",
119 api: Api::BedrockConverseStream,
120 provider: "amazon-bedrock",
121 reasoning: true,
122 input: &[InputModality::Text, InputModality::Image],
123 cost_input: 0.0,
124 cost_output: 0.0,
125 cost_cache_read: 0.0,
126 cost_cache_write: 0.0,
127 context_window: 1000000,
128 max_tokens: 16384,
129 },
130 ModelEntry {
131 id: "anthropic.claude-3-5-haiku-20241022-v1:0",
132 name: "Claude Haiku 3.5",
133 api: Api::BedrockConverseStream,
134 provider: "amazon-bedrock",
135 reasoning: false,
136 input: &[InputModality::Text, InputModality::Image],
137 cost_input: 0.0,
138 cost_output: 0.0,
139 cost_cache_read: 0.08,
140 cost_cache_write: 1.0,
141 context_window: 200000,
142 max_tokens: 8192,
143 },
144 ModelEntry {
145 id: "anthropic.claude-3-5-sonnet-20241022-v2:0",
146 name: "Claude Sonnet 3.5 v2",
147 api: Api::BedrockConverseStream,
148 provider: "amazon-bedrock",
149 reasoning: false,
150 input: &[InputModality::Text, InputModality::Image],
151 cost_input: 0.0,
152 cost_output: 0.0,
153 cost_cache_read: 0.3,
154 cost_cache_write: 3.75,
155 context_window: 200000,
156 max_tokens: 8192,
157 },
158 ModelEntry {
159 id: "anthropic.claude-3-haiku-20240307-v1:0",
160 name: "Claude Haiku 3",
161 api: Api::BedrockConverseStream,
162 provider: "amazon-bedrock",
163 reasoning: false,
164 input: &[InputModality::Text, InputModality::Image],
165 cost_input: 0.0,
166 cost_output: 0.0,
167 cost_cache_read: 0.0,
168 cost_cache_write: 0.0,
169 context_window: 200000,
170 max_tokens: 4096,
171 },
172 ModelEntry {
173 id: "anthropic.claude-opus-4-1-20250805-v1:0",
174 name: "Claude Opus 4.1",
175 api: Api::BedrockConverseStream,
176 provider: "amazon-bedrock",
177 reasoning: true,
178 input: &[InputModality::Text, InputModality::Image],
179 cost_input: 0.0,
180 cost_output: 0.0,
181 cost_cache_read: 1.5,
182 cost_cache_write: 18.75,
183 context_window: 200000,
184 max_tokens: 32000,
185 },
186 ModelEntry {
187 id: "anthropic.claude-opus-4-5-20251101-v1:0",
188 name: "Claude Opus 4.5",
189 api: Api::BedrockConverseStream,
190 provider: "amazon-bedrock",
191 reasoning: true,
192 input: &[InputModality::Text, InputModality::Image],
193 cost_input: 0.0,
194 cost_output: 0.0,
195 cost_cache_read: 0.5,
196 cost_cache_write: 6.25,
197 context_window: 200000,
198 max_tokens: 64000,
199 },
200 ModelEntry {
201 id: "anthropic.claude-opus-4-6-v1",
202 name: "Claude Opus 4.6",
203 api: Api::BedrockConverseStream,
204 provider: "amazon-bedrock",
205 reasoning: true,
206 input: &[InputModality::Text, InputModality::Image],
207 cost_input: 0.0,
208 cost_output: 0.0,
209 cost_cache_read: 0.5,
210 cost_cache_write: 6.25,
211 context_window: 1000000,
212 max_tokens: 128000,
213 },
214 ModelEntry {
215 id: "anthropic.claude-sonnet-4-20250514-v1:0",
216 name: "Claude Sonnet 4",
217 api: Api::BedrockConverseStream,
218 provider: "amazon-bedrock",
219 reasoning: true,
220 input: &[InputModality::Text, InputModality::Image],
221 cost_input: 0.0,
222 cost_output: 0.0,
223 cost_cache_read: 0.3,
224 cost_cache_write: 3.75,
225 context_window: 200000,
226 max_tokens: 64000,
227 },
228 ModelEntry {
229 id: "anthropic.claude-sonnet-4-6",
230 name: "Claude Sonnet 4.6",
231 api: Api::BedrockConverseStream,
232 provider: "amazon-bedrock",
233 reasoning: true,
234 input: &[InputModality::Text, InputModality::Image],
235 cost_input: 0.0,
236 cost_output: 0.0,
237 cost_cache_read: 0.3,
238 cost_cache_write: 3.75,
239 context_window: 1000000,
240 max_tokens: 64000,
241 },
242 ModelEntry {
243 id: "au.anthropic.claude-sonnet-4-6",
244 name: "AU Anthropic Claude Sonnet 4.6",
245 api: Api::BedrockConverseStream,
246 provider: "amazon-bedrock",
247 reasoning: true,
248 input: &[InputModality::Text, InputModality::Image],
249 cost_input: 0.0,
250 cost_output: 0.0,
251 cost_cache_read: 0.33,
252 cost_cache_write: 4.125,
253 context_window: 1000000,
254 max_tokens: 128000,
255 },
256 ModelEntry {
257 id: "deepseek.v3-v1:0",
258 name: "DeepSeek-V3.1",
259 api: Api::BedrockConverseStream,
260 provider: "amazon-bedrock",
261 reasoning: true,
262 input: &[InputModality::Text],
263 cost_input: 0.0,
264 cost_output: 0.0,
265 cost_cache_read: 0.0,
266 cost_cache_write: 0.0,
267 context_window: 163840,
268 max_tokens: 81920,
269 },
270 ModelEntry {
271 id: "eu.anthropic.claude-haiku-4-5-20251001-v1:0",
272 name: "Claude Haiku 4.5 (EU)",
273 api: Api::BedrockConverseStream,
274 provider: "amazon-bedrock",
275 reasoning: true,
276 input: &[InputModality::Text, InputModality::Image],
277 cost_input: 0.0,
278 cost_output: 0.0,
279 cost_cache_read: 0.1,
280 cost_cache_write: 1.25,
281 context_window: 200000,
282 max_tokens: 64000,
283 },
284 ModelEntry {
285 id: "eu.anthropic.claude-opus-4-6-v1",
286 name: "Claude Opus 4.6 (EU)",
287 api: Api::BedrockConverseStream,
288 provider: "amazon-bedrock",
289 reasoning: true,
290 input: &[InputModality::Text, InputModality::Image],
291 cost_input: 0.0,
292 cost_output: 0.0,
293 cost_cache_read: 0.5,
294 cost_cache_write: 6.25,
295 context_window: 1000000,
296 max_tokens: 128000,
297 },
298 ModelEntry {
299 id: "eu.anthropic.claude-opus-4-7",
300 name: "Claude Opus 4.7 (EU)",
301 api: Api::BedrockConverseStream,
302 provider: "amazon-bedrock",
303 reasoning: true,
304 input: &[InputModality::Text, InputModality::Image],
305 cost_input: 0.0,
306 cost_output: 0.0,
307 cost_cache_read: 0.5,
308 cost_cache_write: 6.25,
309 context_window: 1000000,
310 max_tokens: 128000,
311 },
312 ModelEntry {
313 id: "eu.anthropic.claude-sonnet-4-5-20250929-v1:0",
314 name: "Claude Sonnet 4.5 (EU)",
315 api: Api::BedrockConverseStream,
316 provider: "amazon-bedrock",
317 reasoning: true,
318 input: &[InputModality::Text, InputModality::Image],
319 cost_input: 0.0,
320 cost_output: 0.0,
321 cost_cache_read: 0.3,
322 cost_cache_write: 3.75,
323 context_window: 200000,
324 max_tokens: 64000,
325 },
326 ModelEntry {
327 id: "global.anthropic.claude-haiku-4-5-20251001-v1:0",
328 name: "Claude Haiku 4.5 (Global)",
329 api: Api::BedrockConverseStream,
330 provider: "amazon-bedrock",
331 reasoning: true,
332 input: &[InputModality::Text, InputModality::Image],
333 cost_input: 0.0,
334 cost_output: 0.0,
335 cost_cache_read: 0.1,
336 cost_cache_write: 1.25,
337 context_window: 200000,
338 max_tokens: 64000,
339 },
340 ModelEntry {
341 id: "global.anthropic.claude-opus-4-6-v1",
342 name: "Claude Opus 4.6 (Global)",
343 api: Api::BedrockConverseStream,
344 provider: "amazon-bedrock",
345 reasoning: true,
346 input: &[InputModality::Text, InputModality::Image],
347 cost_input: 0.0,
348 cost_output: 0.0,
349 cost_cache_read: 0.5,
350 cost_cache_write: 6.25,
351 context_window: 1000000,
352 max_tokens: 128000,
353 },
354 ModelEntry {
355 id: "global.anthropic.claude-sonnet-4-20250514-v1:0",
356 name: "Claude Sonnet 4 (Global)",
357 api: Api::BedrockConverseStream,
358 provider: "amazon-bedrock",
359 reasoning: true,
360 input: &[InputModality::Text, InputModality::Image],
361 cost_input: 0.0,
362 cost_output: 0.0,
363 cost_cache_read: 0.3,
364 cost_cache_write: 3.75,
365 context_window: 200000,
366 max_tokens: 64000,
367 },
368 ModelEntry {
369 id: "global.anthropic.claude-sonnet-4-6",
370 name: "Claude Sonnet 4.6 (Global)",
371 api: Api::BedrockConverseStream,
372 provider: "amazon-bedrock",
373 reasoning: true,
374 input: &[InputModality::Text, InputModality::Image],
375 cost_input: 0.0,
376 cost_output: 0.0,
377 cost_cache_read: 0.3,
378 cost_cache_write: 3.75,
379 context_window: 1000000,
380 max_tokens: 64000,
381 },
382 ModelEntry {
383 id: "google.gemma-3-4b-it",
384 name: "Gemma 3 4B IT",
385 api: Api::BedrockConverseStream,
386 provider: "amazon-bedrock",
387 reasoning: false,
388 input: &[InputModality::Text, InputModality::Image],
389 cost_input: 0.0,
390 cost_output: 0.0,
391 cost_cache_read: 0.0,
392 cost_cache_write: 0.0,
393 context_window: 128000,
394 max_tokens: 4096,
395 },
396 ModelEntry {
397 id: "meta.llama3-1-405b-instruct-v1:0",
398 name: "Llama 3.1 405B Instruct",
399 api: Api::BedrockConverseStream,
400 provider: "amazon-bedrock",
401 reasoning: false,
402 input: &[InputModality::Text],
403 cost_input: 0.0,
404 cost_output: 0.0,
405 cost_cache_read: 0.0,
406 cost_cache_write: 0.0,
407 context_window: 128000,
408 max_tokens: 4096,
409 },
410 ModelEntry {
411 id: "meta.llama3-1-8b-instruct-v1:0",
412 name: "Llama 3.1 8B Instruct",
413 api: Api::BedrockConverseStream,
414 provider: "amazon-bedrock",
415 reasoning: false,
416 input: &[InputModality::Text],
417 cost_input: 0.0,
418 cost_output: 0.0,
419 cost_cache_read: 0.0,
420 cost_cache_write: 0.0,
421 context_window: 128000,
422 max_tokens: 4096,
423 },
424 ModelEntry {
425 id: "meta.llama3-2-1b-instruct-v1:0",
426 name: "Llama 3.2 1B Instruct",
427 api: Api::BedrockConverseStream,
428 provider: "amazon-bedrock",
429 reasoning: false,
430 input: &[InputModality::Text],
431 cost_input: 0.0,
432 cost_output: 0.0,
433 cost_cache_read: 0.0,
434 cost_cache_write: 0.0,
435 context_window: 131000,
436 max_tokens: 4096,
437 },
438 ModelEntry {
439 id: "meta.llama3-2-90b-instruct-v1:0",
440 name: "Llama 3.2 90B Instruct",
441 api: Api::BedrockConverseStream,
442 provider: "amazon-bedrock",
443 reasoning: false,
444 input: &[InputModality::Text, InputModality::Image],
445 cost_input: 0.0,
446 cost_output: 0.0,
447 cost_cache_read: 0.0,
448 cost_cache_write: 0.0,
449 context_window: 128000,
450 max_tokens: 4096,
451 },
452 ModelEntry {
453 id: "meta.llama4-maverick-17b-instruct-v1:0",
454 name: "Llama 4 Maverick 17B Instruct",
455 api: Api::BedrockConverseStream,
456 provider: "amazon-bedrock",
457 reasoning: false,
458 input: &[InputModality::Text, InputModality::Image],
459 cost_input: 0.0,
460 cost_output: 0.0,
461 cost_cache_read: 0.0,
462 cost_cache_write: 0.0,
463 context_window: 1000000,
464 max_tokens: 16384,
465 },
466 ModelEntry {
467 id: "minimax.minimax-m2",
468 name: "MiniMax M2",
469 api: Api::BedrockConverseStream,
470 provider: "amazon-bedrock",
471 reasoning: true,
472 input: &[InputModality::Text],
473 cost_input: 0.0,
474 cost_output: 0.0,
475 cost_cache_read: 0.0,
476 cost_cache_write: 0.0,
477 context_window: 204608,
478 max_tokens: 128000,
479 },
480 ModelEntry {
481 id: "minimax.minimax-m2.5",
482 name: "MiniMax M2.5",
483 api: Api::BedrockConverseStream,
484 provider: "amazon-bedrock",
485 reasoning: true,
486 input: &[InputModality::Text],
487 cost_input: 0.0,
488 cost_output: 0.0,
489 cost_cache_read: 0.0,
490 cost_cache_write: 0.0,
491 context_window: 196608,
492 max_tokens: 98304,
493 },
494 ModelEntry {
495 id: "mistral.devstral-2-123b",
496 name: "Devstral 2 123B",
497 api: Api::BedrockConverseStream,
498 provider: "amazon-bedrock",
499 reasoning: false,
500 input: &[InputModality::Text],
501 cost_input: 0.0,
502 cost_output: 0.0,
503 cost_cache_read: 0.0,
504 cost_cache_write: 0.0,
505 context_window: 256000,
506 max_tokens: 8192,
507 },
508 ModelEntry {
509 id: "mistral.ministral-3-14b-instruct",
510 name: "Ministral 14B 3.0",
511 api: Api::BedrockConverseStream,
512 provider: "amazon-bedrock",
513 reasoning: false,
514 input: &[InputModality::Text],
515 cost_input: 0.0,
516 cost_output: 0.0,
517 cost_cache_read: 0.0,
518 cost_cache_write: 0.0,
519 context_window: 128000,
520 max_tokens: 4096,
521 },
522 ModelEntry {
523 id: "mistral.ministral-3-8b-instruct",
524 name: "Ministral 3 8B",
525 api: Api::BedrockConverseStream,
526 provider: "amazon-bedrock",
527 reasoning: false,
528 input: &[InputModality::Text],
529 cost_input: 0.0,
530 cost_output: 0.0,
531 cost_cache_read: 0.0,
532 cost_cache_write: 0.0,
533 context_window: 128000,
534 max_tokens: 4096,
535 },
536 ModelEntry {
537 id: "mistral.pixtral-large-2502-v1:0",
538 name: "Pixtral Large (25.02)",
539 api: Api::BedrockConverseStream,
540 provider: "amazon-bedrock",
541 reasoning: false,
542 input: &[InputModality::Text, InputModality::Image],
543 cost_input: 0.0,
544 cost_output: 0.0,
545 cost_cache_read: 0.0,
546 cost_cache_write: 0.0,
547 context_window: 128000,
548 max_tokens: 8192,
549 },
550 ModelEntry {
551 id: "mistral.voxtral-small-24b-2507",
552 name: "Voxtral Small 24B 2507",
553 api: Api::BedrockConverseStream,
554 provider: "amazon-bedrock",
555 reasoning: false,
556 input: &[InputModality::Text],
557 cost_input: 0.0,
558 cost_output: 0.0,
559 cost_cache_read: 0.0,
560 cost_cache_write: 0.0,
561 context_window: 32000,
562 max_tokens: 8192,
563 },
564 ModelEntry {
565 id: "moonshotai.kimi-k2.5",
566 name: "Kimi K2.5",
567 api: Api::BedrockConverseStream,
568 provider: "amazon-bedrock",
569 reasoning: true,
570 input: &[InputModality::Text, InputModality::Image],
571 cost_input: 0.0,
572 cost_output: 0.0,
573 cost_cache_read: 0.0,
574 cost_cache_write: 0.0,
575 context_window: 256000,
576 max_tokens: 256000,
577 },
578 ModelEntry {
579 id: "nvidia.nemotron-nano-3-30b",
580 name: "NVIDIA Nemotron Nano 3 30B",
581 api: Api::BedrockConverseStream,
582 provider: "amazon-bedrock",
583 reasoning: true,
584 input: &[InputModality::Text],
585 cost_input: 0.0,
586 cost_output: 0.0,
587 cost_cache_read: 0.0,
588 cost_cache_write: 0.0,
589 context_window: 128000,
590 max_tokens: 4096,
591 },
592 ModelEntry {
593 id: "nvidia.nemotron-nano-9b-v2",
594 name: "NVIDIA Nemotron Nano 9B v2",
595 api: Api::BedrockConverseStream,
596 provider: "amazon-bedrock",
597 reasoning: false,
598 input: &[InputModality::Text],
599 cost_input: 0.0,
600 cost_output: 0.0,
601 cost_cache_read: 0.0,
602 cost_cache_write: 0.0,
603 context_window: 128000,
604 max_tokens: 4096,
605 },
606 ModelEntry {
607 id: "openai.gpt-oss-120b-1:0",
608 name: "gpt-oss-120b",
609 api: Api::BedrockConverseStream,
610 provider: "amazon-bedrock",
611 reasoning: false,
612 input: &[InputModality::Text],
613 cost_input: 0.0,
614 cost_output: 0.0,
615 cost_cache_read: 0.0,
616 cost_cache_write: 0.0,
617 context_window: 128000,
618 max_tokens: 4096,
619 },
620 ModelEntry {
621 id: "openai.gpt-oss-safeguard-120b",
622 name: "GPT OSS Safeguard 120B",
623 api: Api::BedrockConverseStream,
624 provider: "amazon-bedrock",
625 reasoning: false,
626 input: &[InputModality::Text],
627 cost_input: 0.0,
628 cost_output: 0.0,
629 cost_cache_read: 0.0,
630 cost_cache_write: 0.0,
631 context_window: 128000,
632 max_tokens: 4096,
633 },
634 ModelEntry {
635 id: "qwen.qwen3-235b-a22b-2507-v1:0",
636 name: "Qwen3 235B A22B 2507",
637 api: Api::BedrockConverseStream,
638 provider: "amazon-bedrock",
639 reasoning: false,
640 input: &[InputModality::Text],
641 cost_input: 0.0,
642 cost_output: 0.0,
643 cost_cache_read: 0.0,
644 cost_cache_write: 0.0,
645 context_window: 262144,
646 max_tokens: 131072,
647 },
648 ModelEntry {
649 id: "qwen.qwen3-coder-30b-a3b-v1:0",
650 name: "Qwen3 Coder 30B A3B Instruct",
651 api: Api::BedrockConverseStream,
652 provider: "amazon-bedrock",
653 reasoning: false,
654 input: &[InputModality::Text],
655 cost_input: 0.0,
656 cost_output: 0.0,
657 cost_cache_read: 0.0,
658 cost_cache_write: 0.0,
659 context_window: 262144,
660 max_tokens: 131072,
661 },
662 ModelEntry {
663 id: "qwen.qwen3-coder-next",
664 name: "Qwen3 Coder Next",
665 api: Api::BedrockConverseStream,
666 provider: "amazon-bedrock",
667 reasoning: true,
668 input: &[InputModality::Text],
669 cost_input: 0.0,
670 cost_output: 0.0,
671 cost_cache_read: 0.0,
672 cost_cache_write: 0.0,
673 context_window: 131072,
674 max_tokens: 65536,
675 },
676 ModelEntry {
677 id: "qwen.qwen3-vl-235b-a22b",
678 name: "Qwen/Qwen3-VL-235B-A22B-Instruct",
679 api: Api::BedrockConverseStream,
680 provider: "amazon-bedrock",
681 reasoning: false,
682 input: &[InputModality::Text, InputModality::Image],
683 cost_input: 0.0,
684 cost_output: 0.0,
685 cost_cache_read: 0.0,
686 cost_cache_write: 0.0,
687 context_window: 262000,
688 max_tokens: 262000,
689 },
690 ModelEntry {
691 id: "us.anthropic.claude-haiku-4-5-20251001-v1:0",
692 name: "Claude Haiku 4.5 (US)",
693 api: Api::BedrockConverseStream,
694 provider: "amazon-bedrock",
695 reasoning: true,
696 input: &[InputModality::Text, InputModality::Image],
697 cost_input: 0.0,
698 cost_output: 0.0,
699 cost_cache_read: 0.1,
700 cost_cache_write: 1.25,
701 context_window: 200000,
702 max_tokens: 64000,
703 },
704 ModelEntry {
705 id: "us.anthropic.claude-opus-4-20250514-v1:0",
706 name: "Claude Opus 4 (US)",
707 api: Api::BedrockConverseStream,
708 provider: "amazon-bedrock",
709 reasoning: true,
710 input: &[InputModality::Text, InputModality::Image],
711 cost_input: 0.0,
712 cost_output: 0.0,
713 cost_cache_read: 1.5,
714 cost_cache_write: 18.75,
715 context_window: 200000,
716 max_tokens: 32000,
717 },
718 ModelEntry {
719 id: "us.anthropic.claude-opus-4-6-v1",
720 name: "Claude Opus 4.6 (US)",
721 api: Api::BedrockConverseStream,
722 provider: "amazon-bedrock",
723 reasoning: true,
724 input: &[InputModality::Text, InputModality::Image],
725 cost_input: 0.0,
726 cost_output: 0.0,
727 cost_cache_read: 0.5,
728 cost_cache_write: 6.25,
729 context_window: 1000000,
730 max_tokens: 128000,
731 },
732 ModelEntry {
733 id: "us.anthropic.claude-sonnet-4-20250514-v1:0",
734 name: "Claude Sonnet 4 (US)",
735 api: Api::BedrockConverseStream,
736 provider: "amazon-bedrock",
737 reasoning: true,
738 input: &[InputModality::Text, InputModality::Image],
739 cost_input: 0.0,
740 cost_output: 0.0,
741 cost_cache_read: 0.3,
742 cost_cache_write: 3.75,
743 context_window: 200000,
744 max_tokens: 64000,
745 },
746 ModelEntry {
747 id: "us.anthropic.claude-sonnet-4-6",
748 name: "Claude Sonnet 4.6 (US)",
749 api: Api::BedrockConverseStream,
750 provider: "amazon-bedrock",
751 reasoning: true,
752 input: &[InputModality::Text, InputModality::Image],
753 cost_input: 0.0,
754 cost_output: 0.0,
755 cost_cache_read: 0.3,
756 cost_cache_write: 3.75,
757 context_window: 1000000,
758 max_tokens: 64000,
759 },
760 ModelEntry {
761 id: "writer.palmyra-x5-v1:0",
762 name: "Palmyra X5",
763 api: Api::BedrockConverseStream,
764 provider: "amazon-bedrock",
765 reasoning: true,
766 input: &[InputModality::Text],
767 cost_input: 0.0,
768 cost_output: 0.0,
769 cost_cache_read: 0.0,
770 cost_cache_write: 0.0,
771 context_window: 1040000,
772 max_tokens: 8192,
773 },
774 ModelEntry {
775 id: "zai.glm-4.7-flash",
776 name: "GLM-4.7-Flash",
777 api: Api::BedrockConverseStream,
778 provider: "amazon-bedrock",
779 reasoning: true,
780 input: &[InputModality::Text],
781 cost_input: 0.0,
782 cost_output: 0.0,
783 cost_cache_read: 0.0,
784 cost_cache_write: 0.0,
785 context_window: 200000,
786 max_tokens: 131072,
787 },
788 ModelEntry {
789 id: "amazon.nova-micro-v1:0",
790 name: "Nova Micro",
791 api: Api::BedrockConverseStream,
792 provider: "amazon-bedrock",
793 reasoning: false,
794 input: &[InputModality::Text],
795 cost_input: 0.035,
796 cost_output: 0.14,
797 cost_cache_read: 0.00875,
798 cost_cache_write: 0.0,
799 context_window: 128000,
800 max_tokens: 8192,
801 },
802 ModelEntry {
803 id: "amazon.nova-pro-v1:0",
804 name: "Nova Pro",
805 api: Api::BedrockConverseStream,
806 provider: "amazon-bedrock",
807 reasoning: false,
808 input: &[InputModality::Text, InputModality::Image],
809 cost_input: 0.8,
810 cost_output: 3.2,
811 cost_cache_read: 0.2,
812 cost_cache_write: 0.0,
813 context_window: 300000,
814 max_tokens: 8192,
815 },
816 ModelEntry {
817 id: "anthropic.claude-haiku-4-5-20251001-v1:0",
818 name: "Claude Haiku 4.5",
819 api: Api::BedrockConverseStream,
820 provider: "amazon-bedrock",
821 reasoning: true,
822 input: &[InputModality::Text, InputModality::Image],
823 cost_input: 1.0,
824 cost_output: 5.0,
825 cost_cache_read: 0.1,
826 cost_cache_write: 1.25,
827 context_window: 200000,
828 max_tokens: 64000,
829 },
830 ModelEntry {
831 id: "anthropic.claude-opus-4-7",
832 name: "Claude Opus 4.7",
833 api: Api::BedrockConverseStream,
834 provider: "amazon-bedrock",
835 reasoning: true,
836 input: &[InputModality::Text, InputModality::Image],
837 cost_input: 5.0,
838 cost_output: 25.0,
839 cost_cache_read: 0.5,
840 cost_cache_write: 6.25,
841 context_window: 1000000,
842 max_tokens: 128000,
843 },
844 ModelEntry {
845 id: "anthropic.claude-sonnet-4-5-20250929-v1:0",
846 name: "Claude Sonnet 4.5",
847 api: Api::BedrockConverseStream,
848 provider: "amazon-bedrock",
849 reasoning: true,
850 input: &[InputModality::Text, InputModality::Image],
851 cost_input: 3.0,
852 cost_output: 15.0,
853 cost_cache_read: 0.3,
854 cost_cache_write: 3.75,
855 context_window: 200000,
856 max_tokens: 64000,
857 },
858 ModelEntry {
859 id: "au.anthropic.claude-haiku-4-5-20251001-v1:0",
860 name: "Claude Haiku 4.5 (AU)",
861 api: Api::BedrockConverseStream,
862 provider: "amazon-bedrock",
863 reasoning: true,
864 input: &[InputModality::Text, InputModality::Image],
865 cost_input: 1.0,
866 cost_output: 5.0,
867 cost_cache_read: 0.1,
868 cost_cache_write: 1.25,
869 context_window: 200000,
870 max_tokens: 64000,
871 },
872 ModelEntry {
873 id: "au.anthropic.claude-opus-4-6-v1",
874 name: "AU Anthropic Claude Opus 4.6",
875 api: Api::BedrockConverseStream,
876 provider: "amazon-bedrock",
877 reasoning: true,
878 input: &[InputModality::Text, InputModality::Image],
879 cost_input: 16.5,
880 cost_output: 82.5,
881 cost_cache_read: 0.5,
882 cost_cache_write: 6.25,
883 context_window: 1000000,
884 max_tokens: 128000,
885 },
886 ModelEntry {
887 id: "au.anthropic.claude-sonnet-4-5-20250929-v1:0",
888 name: "Claude Sonnet 4.5 (AU)",
889 api: Api::BedrockConverseStream,
890 provider: "amazon-bedrock",
891 reasoning: true,
892 input: &[InputModality::Text, InputModality::Image],
893 cost_input: 3.0,
894 cost_output: 15.0,
895 cost_cache_read: 0.3,
896 cost_cache_write: 3.75,
897 context_window: 200000,
898 max_tokens: 64000,
899 },
900 ModelEntry {
901 id: "deepseek.r1-v1:0",
902 name: "DeepSeek-R1",
903 api: Api::BedrockConverseStream,
904 provider: "amazon-bedrock",
905 reasoning: true,
906 input: &[InputModality::Text],
907 cost_input: 1.35,
908 cost_output: 5.4,
909 cost_cache_read: 0.0,
910 cost_cache_write: 0.0,
911 context_window: 128000,
912 max_tokens: 32768,
913 },
914 ModelEntry {
915 id: "deepseek.v3.2",
916 name: "DeepSeek-V3.2",
917 api: Api::BedrockConverseStream,
918 provider: "amazon-bedrock",
919 reasoning: true,
920 input: &[InputModality::Text],
921 cost_input: 0.62,
922 cost_output: 1.85,
923 cost_cache_read: 0.0,
924 cost_cache_write: 0.0,
925 context_window: 163840,
926 max_tokens: 81920,
927 },
928 ModelEntry {
929 id: "eu.anthropic.claude-opus-4-5-20251101-v1:0",
930 name: "Claude Opus 4.5 (EU)",
931 api: Api::BedrockConverseStream,
932 provider: "amazon-bedrock",
933 reasoning: true,
934 input: &[InputModality::Text, InputModality::Image],
935 cost_input: 5.0,
936 cost_output: 25.0,
937 cost_cache_read: 0.5,
938 cost_cache_write: 6.25,
939 context_window: 200000,
940 max_tokens: 64000,
941 },
942 ModelEntry {
943 id: "eu.anthropic.claude-sonnet-4-6",
944 name: "Claude Sonnet 4.6 (EU)",
945 api: Api::BedrockConverseStream,
946 provider: "amazon-bedrock",
947 reasoning: true,
948 input: &[InputModality::Text, InputModality::Image],
949 cost_input: 3.0,
950 cost_output: 15.0,
951 cost_cache_read: 0.3,
952 cost_cache_write: 3.75,
953 context_window: 1000000,
954 max_tokens: 64000,
955 },
956 ModelEntry {
957 id: "global.anthropic.claude-opus-4-5-20251101-v1:0",
958 name: "Claude Opus 4.5 (Global)",
959 api: Api::BedrockConverseStream,
960 provider: "amazon-bedrock",
961 reasoning: true,
962 input: &[InputModality::Text, InputModality::Image],
963 cost_input: 5.0,
964 cost_output: 25.0,
965 cost_cache_read: 0.5,
966 cost_cache_write: 6.25,
967 context_window: 200000,
968 max_tokens: 64000,
969 },
970 ModelEntry {
971 id: "global.anthropic.claude-opus-4-7",
972 name: "Claude Opus 4.7 (Global)",
973 api: Api::BedrockConverseStream,
974 provider: "amazon-bedrock",
975 reasoning: true,
976 input: &[InputModality::Text, InputModality::Image],
977 cost_input: 5.0,
978 cost_output: 25.0,
979 cost_cache_read: 0.5,
980 cost_cache_write: 6.25,
981 context_window: 1000000,
982 max_tokens: 128000,
983 },
984 ModelEntry {
985 id: "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
986 name: "Claude Sonnet 4.5 (Global)",
987 api: Api::BedrockConverseStream,
988 provider: "amazon-bedrock",
989 reasoning: true,
990 input: &[InputModality::Text, InputModality::Image],
991 cost_input: 3.0,
992 cost_output: 15.0,
993 cost_cache_read: 0.3,
994 cost_cache_write: 3.75,
995 context_window: 200000,
996 max_tokens: 64000,
997 },
998 ModelEntry {
999 id: "google.gemma-3-27b-it",
1000 name: "Google Gemma 3 27B Instruct",
1001 api: Api::BedrockConverseStream,
1002 provider: "amazon-bedrock",
1003 reasoning: false,
1004 input: &[InputModality::Text, InputModality::Image],
1005 cost_input: 0.12,
1006 cost_output: 0.2,
1007 cost_cache_read: 0.0,
1008 cost_cache_write: 0.0,
1009 context_window: 202752,
1010 max_tokens: 8192,
1011 },
1012 ModelEntry {
1013 id: "jp.anthropic.claude-opus-4-7",
1014 name: "Claude Opus 4.7 (JP)",
1015 api: Api::BedrockConverseStream,
1016 provider: "amazon-bedrock",
1017 reasoning: true,
1018 input: &[InputModality::Text, InputModality::Image],
1019 cost_input: 5.0,
1020 cost_output: 25.0,
1021 cost_cache_read: 0.5,
1022 cost_cache_write: 6.25,
1023 context_window: 1000000,
1024 max_tokens: 128000,
1025 },
1026 ModelEntry {
1027 id: "jp.anthropic.claude-sonnet-4-5-20250929-v1:0",
1028 name: "Claude Sonnet 4.5 (JP)",
1029 api: Api::BedrockConverseStream,
1030 provider: "amazon-bedrock",
1031 reasoning: true,
1032 input: &[InputModality::Text, InputModality::Image],
1033 cost_input: 3.0,
1034 cost_output: 15.0,
1035 cost_cache_read: 0.3,
1036 cost_cache_write: 3.75,
1037 context_window: 200000,
1038 max_tokens: 64000,
1039 },
1040 ModelEntry {
1041 id: "jp.anthropic.claude-sonnet-4-6",
1042 name: "Claude Sonnet 4.6 (JP)",
1043 api: Api::BedrockConverseStream,
1044 provider: "amazon-bedrock",
1045 reasoning: true,
1046 input: &[InputModality::Text, InputModality::Image],
1047 cost_input: 3.0,
1048 cost_output: 15.0,
1049 cost_cache_read: 0.3,
1050 cost_cache_write: 3.75,
1051 context_window: 1000000,
1052 max_tokens: 64000,
1053 },
1054 ModelEntry {
1055 id: "meta.llama3-1-70b-instruct-v1:0",
1056 name: "Llama 3.1 70B Instruct",
1057 api: Api::BedrockConverseStream,
1058 provider: "amazon-bedrock",
1059 reasoning: false,
1060 input: &[InputModality::Text],
1061 cost_input: 0.72,
1062 cost_output: 0.72,
1063 cost_cache_read: 0.0,
1064 cost_cache_write: 0.0,
1065 context_window: 128000,
1066 max_tokens: 4096,
1067 },
1068 ModelEntry {
1069 id: "meta.llama3-3-70b-instruct-v1:0",
1070 name: "Llama 3.3 70B Instruct",
1071 api: Api::BedrockConverseStream,
1072 provider: "amazon-bedrock",
1073 reasoning: false,
1074 input: &[InputModality::Text],
1075 cost_input: 0.72,
1076 cost_output: 0.72,
1077 cost_cache_read: 0.0,
1078 cost_cache_write: 0.0,
1079 context_window: 128000,
1080 max_tokens: 4096,
1081 },
1082 ModelEntry {
1083 id: "meta.llama4-scout-17b-instruct-v1:0",
1084 name: "Llama 4 Scout 17B Instruct",
1085 api: Api::BedrockConverseStream,
1086 provider: "amazon-bedrock",
1087 reasoning: false,
1088 input: &[InputModality::Text, InputModality::Image],
1089 cost_input: 0.17,
1090 cost_output: 0.66,
1091 cost_cache_read: 0.0,
1092 cost_cache_write: 0.0,
1093 context_window: 3500000,
1094 max_tokens: 16384,
1095 },
1096 ModelEntry {
1097 id: "minimax.minimax-m2.1",
1098 name: "MiniMax M2.1",
1099 api: Api::BedrockConverseStream,
1100 provider: "amazon-bedrock",
1101 reasoning: true,
1102 input: &[InputModality::Text],
1103 cost_input: 0.3,
1104 cost_output: 1.2,
1105 cost_cache_read: 0.0,
1106 cost_cache_write: 0.0,
1107 context_window: 204800,
1108 max_tokens: 131072,
1109 },
1110 ModelEntry {
1111 id: "mistral.magistral-small-2509",
1112 name: "Magistral Small 1.2",
1113 api: Api::BedrockConverseStream,
1114 provider: "amazon-bedrock",
1115 reasoning: true,
1116 input: &[InputModality::Text, InputModality::Image],
1117 cost_input: 0.5,
1118 cost_output: 1.5,
1119 cost_cache_read: 0.0,
1120 cost_cache_write: 0.0,
1121 context_window: 128000,
1122 max_tokens: 40000,
1123 },
1124 ModelEntry {
1125 id: "mistral.ministral-3-3b-instruct",
1126 name: "Ministral 3 3B",
1127 api: Api::BedrockConverseStream,
1128 provider: "amazon-bedrock",
1129 reasoning: false,
1130 input: &[InputModality::Text, InputModality::Image],
1131 cost_input: 0.1,
1132 cost_output: 0.1,
1133 cost_cache_read: 0.0,
1134 cost_cache_write: 0.0,
1135 context_window: 256000,
1136 max_tokens: 8192,
1137 },
1138 ModelEntry {
1139 id: "mistral.mistral-large-3-675b-instruct",
1140 name: "Mistral Large 3",
1141 api: Api::BedrockConverseStream,
1142 provider: "amazon-bedrock",
1143 reasoning: false,
1144 input: &[InputModality::Text, InputModality::Image],
1145 cost_input: 0.5,
1146 cost_output: 1.5,
1147 cost_cache_read: 0.0,
1148 cost_cache_write: 0.0,
1149 context_window: 256000,
1150 max_tokens: 8192,
1151 },
1152 ModelEntry {
1153 id: "mistral.voxtral-mini-3b-2507",
1154 name: "Voxtral Mini 3B 2507",
1155 api: Api::BedrockConverseStream,
1156 provider: "amazon-bedrock",
1157 reasoning: false,
1158 input: &[InputModality::Text],
1159 cost_input: 0.04,
1160 cost_output: 0.04,
1161 cost_cache_read: 0.0,
1162 cost_cache_write: 0.0,
1163 context_window: 128000,
1164 max_tokens: 4096,
1165 },
1166 ModelEntry {
1167 id: "moonshot.kimi-k2-thinking",
1168 name: "Kimi K2 Thinking",
1169 api: Api::BedrockConverseStream,
1170 provider: "amazon-bedrock",
1171 reasoning: true,
1172 input: &[InputModality::Text],
1173 cost_input: 0.6,
1174 cost_output: 2.5,
1175 cost_cache_read: 0.0,
1176 cost_cache_write: 0.0,
1177 context_window: 262143,
1178 max_tokens: 16000,
1179 },
1180 ModelEntry {
1181 id: "nvidia.nemotron-nano-12b-v2",
1182 name: "NVIDIA Nemotron Nano 12B v2 VL BF16",
1183 api: Api::BedrockConverseStream,
1184 provider: "amazon-bedrock",
1185 reasoning: false,
1186 input: &[InputModality::Text, InputModality::Image],
1187 cost_input: 0.2,
1188 cost_output: 0.6,
1189 cost_cache_read: 0.0,
1190 cost_cache_write: 0.0,
1191 context_window: 128000,
1192 max_tokens: 4096,
1193 },
1194 ModelEntry {
1195 id: "nvidia.nemotron-super-3-120b",
1196 name: "NVIDIA Nemotron 3 Super 120B A12B",
1197 api: Api::BedrockConverseStream,
1198 provider: "amazon-bedrock",
1199 reasoning: true,
1200 input: &[InputModality::Text],
1201 cost_input: 0.15,
1202 cost_output: 0.65,
1203 cost_cache_read: 0.0,
1204 cost_cache_write: 0.0,
1205 context_window: 262144,
1206 max_tokens: 131072,
1207 },
1208 ModelEntry {
1209 id: "openai.gpt-oss-20b-1:0",
1210 name: "gpt-oss-20b",
1211 api: Api::BedrockConverseStream,
1212 provider: "amazon-bedrock",
1213 reasoning: false,
1214 input: &[InputModality::Text],
1215 cost_input: 0.07,
1216 cost_output: 0.3,
1217 cost_cache_read: 0.0,
1218 cost_cache_write: 0.0,
1219 context_window: 128000,
1220 max_tokens: 16384,
1221 },
1222 ModelEntry {
1223 id: "openai.gpt-oss-safeguard-20b",
1224 name: "GPT OSS Safeguard 20B",
1225 api: Api::BedrockConverseStream,
1226 provider: "amazon-bedrock",
1227 reasoning: false,
1228 input: &[InputModality::Text],
1229 cost_input: 0.07,
1230 cost_output: 0.2,
1231 cost_cache_read: 0.0,
1232 cost_cache_write: 0.0,
1233 context_window: 128000,
1234 max_tokens: 16384,
1235 },
1236 ModelEntry {
1237 id: "qwen.qwen3-32b-v1:0",
1238 name: "Qwen3 32B (dense)",
1239 api: Api::BedrockConverseStream,
1240 provider: "amazon-bedrock",
1241 reasoning: true,
1242 input: &[InputModality::Text],
1243 cost_input: 0.15,
1244 cost_output: 0.6,
1245 cost_cache_read: 0.0,
1246 cost_cache_write: 0.0,
1247 context_window: 16384,
1248 max_tokens: 16384,
1249 },
1250 ModelEntry {
1251 id: "qwen.qwen3-coder-480b-a35b-v1:0",
1252 name: "Qwen3 Coder 480B A35B Instruct",
1253 api: Api::BedrockConverseStream,
1254 provider: "amazon-bedrock",
1255 reasoning: false,
1256 input: &[InputModality::Text],
1257 cost_input: 0.22,
1258 cost_output: 1.8,
1259 cost_cache_read: 0.0,
1260 cost_cache_write: 0.0,
1261 context_window: 131072,
1262 max_tokens: 65536,
1263 },
1264 ModelEntry {
1265 id: "qwen.qwen3-next-80b-a3b",
1266 name: "Qwen/Qwen3-Next-80B-A3B-Instruct",
1267 api: Api::BedrockConverseStream,
1268 provider: "amazon-bedrock",
1269 reasoning: false,
1270 input: &[InputModality::Text],
1271 cost_input: 0.14,
1272 cost_output: 1.4,
1273 cost_cache_read: 0.0,
1274 cost_cache_write: 0.0,
1275 context_window: 262000,
1276 max_tokens: 262000,
1277 },
1278 ModelEntry {
1279 id: "us.anthropic.claude-opus-4-1-20250805-v1:0",
1280 name: "Claude Opus 4.1 (US)",
1281 api: Api::BedrockConverseStream,
1282 provider: "amazon-bedrock",
1283 reasoning: true,
1284 input: &[InputModality::Text, InputModality::Image],
1285 cost_input: 15.0,
1286 cost_output: 75.0,
1287 cost_cache_read: 1.5,
1288 cost_cache_write: 18.75,
1289 context_window: 200000,
1290 max_tokens: 32000,
1291 },
1292 ModelEntry {
1293 id: "us.anthropic.claude-opus-4-5-20251101-v1:0",
1294 name: "Claude Opus 4.5 (US)",
1295 api: Api::BedrockConverseStream,
1296 provider: "amazon-bedrock",
1297 reasoning: true,
1298 input: &[InputModality::Text, InputModality::Image],
1299 cost_input: 5.0,
1300 cost_output: 25.0,
1301 cost_cache_read: 0.5,
1302 cost_cache_write: 6.25,
1303 context_window: 200000,
1304 max_tokens: 64000,
1305 },
1306 ModelEntry {
1307 id: "us.anthropic.claude-opus-4-7",
1308 name: "Claude Opus 4.7 (US)",
1309 api: Api::BedrockConverseStream,
1310 provider: "amazon-bedrock",
1311 reasoning: true,
1312 input: &[InputModality::Text, InputModality::Image],
1313 cost_input: 5.0,
1314 cost_output: 25.0,
1315 cost_cache_read: 0.5,
1316 cost_cache_write: 6.25,
1317 context_window: 1000000,
1318 max_tokens: 128000,
1319 },
1320 ModelEntry {
1321 id: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1322 name: "Claude Sonnet 4.5 (US)",
1323 api: Api::BedrockConverseStream,
1324 provider: "amazon-bedrock",
1325 reasoning: true,
1326 input: &[InputModality::Text, InputModality::Image],
1327 cost_input: 3.0,
1328 cost_output: 15.0,
1329 cost_cache_read: 0.3,
1330 cost_cache_write: 3.75,
1331 context_window: 200000,
1332 max_tokens: 64000,
1333 },
1334 ModelEntry {
1335 id: "us.deepseek.r1-v1:0",
1336 name: "DeepSeek-R1 (US)",
1337 api: Api::BedrockConverseStream,
1338 provider: "amazon-bedrock",
1339 reasoning: true,
1340 input: &[InputModality::Text],
1341 cost_input: 1.35,
1342 cost_output: 5.4,
1343 cost_cache_read: 0.0,
1344 cost_cache_write: 0.0,
1345 context_window: 128000,
1346 max_tokens: 32768,
1347 },
1348 ModelEntry {
1349 id: "us.meta.llama4-maverick-17b-instruct-v1:0",
1350 name: "Llama 4 Maverick 17B Instruct (US)",
1351 api: Api::BedrockConverseStream,
1352 provider: "amazon-bedrock",
1353 reasoning: false,
1354 input: &[InputModality::Text, InputModality::Image],
1355 cost_input: 0.24,
1356 cost_output: 0.97,
1357 cost_cache_read: 0.0,
1358 cost_cache_write: 0.0,
1359 context_window: 1000000,
1360 max_tokens: 16384,
1361 },
1362 ModelEntry {
1363 id: "us.meta.llama4-scout-17b-instruct-v1:0",
1364 name: "Llama 4 Scout 17B Instruct (US)",
1365 api: Api::BedrockConverseStream,
1366 provider: "amazon-bedrock",
1367 reasoning: false,
1368 input: &[InputModality::Text, InputModality::Image],
1369 cost_input: 0.17,
1370 cost_output: 0.66,
1371 cost_cache_read: 0.0,
1372 cost_cache_write: 0.0,
1373 context_window: 3500000,
1374 max_tokens: 16384,
1375 },
1376 ModelEntry {
1377 id: "writer.palmyra-x4-v1:0",
1378 name: "Palmyra X4",
1379 api: Api::BedrockConverseStream,
1380 provider: "amazon-bedrock",
1381 reasoning: true,
1382 input: &[InputModality::Text],
1383 cost_input: 2.5,
1384 cost_output: 10.0,
1385 cost_cache_read: 0.0,
1386 cost_cache_write: 0.0,
1387 context_window: 122880,
1388 max_tokens: 8192,
1389 },
1390 ModelEntry {
1391 id: "zai.glm-4.7",
1392 name: "GLM-4.7",
1393 api: Api::BedrockConverseStream,
1394 provider: "amazon-bedrock",
1395 reasoning: true,
1396 input: &[InputModality::Text],
1397 cost_input: 0.6,
1398 cost_output: 2.2,
1399 cost_cache_read: 0.0,
1400 cost_cache_write: 0.0,
1401 context_window: 204800,
1402 max_tokens: 131072,
1403 },
1404 ModelEntry {
1405 id: "zai.glm-5",
1406 name: "GLM-5",
1407 api: Api::BedrockConverseStream,
1408 provider: "amazon-bedrock",
1409 reasoning: true,
1410 input: &[InputModality::Text],
1411 cost_input: 1.0,
1412 cost_output: 3.2,
1413 cost_cache_read: 0.0,
1414 cost_cache_write: 0.0,
1415 context_window: 202752,
1416 max_tokens: 101376,
1417 },
1418];
1419
1420static ANTHROPIC_MODELS: &[ModelEntry] = &[
1422 ModelEntry {
1423 id: "claude-3-5-haiku-20241022",
1424 name: "Claude Haiku 3.5",
1425 api: Api::AnthropicMessages,
1426 provider: "anthropic",
1427 reasoning: false,
1428 input: &[InputModality::Text, InputModality::Image],
1429 cost_input: 0.0,
1430 cost_output: 0.0,
1431 cost_cache_read: 0.08,
1432 cost_cache_write: 1.0,
1433 context_window: 200000,
1434 max_tokens: 8192,
1435 },
1436 ModelEntry {
1437 id: "claude-3-5-haiku-latest",
1438 name: "Claude Haiku 3.5 (latest)",
1439 api: Api::AnthropicMessages,
1440 provider: "anthropic",
1441 reasoning: false,
1442 input: &[InputModality::Text, InputModality::Image],
1443 cost_input: 0.0,
1444 cost_output: 0.0,
1445 cost_cache_read: 0.08,
1446 cost_cache_write: 1.0,
1447 context_window: 200000,
1448 max_tokens: 8192,
1449 },
1450 ModelEntry {
1451 id: "claude-3-5-sonnet-20240620",
1452 name: "Claude Sonnet 3.5",
1453 api: Api::AnthropicMessages,
1454 provider: "anthropic",
1455 reasoning: false,
1456 input: &[InputModality::Text, InputModality::Image],
1457 cost_input: 0.0,
1458 cost_output: 0.0,
1459 cost_cache_read: 0.3,
1460 cost_cache_write: 3.75,
1461 context_window: 200000,
1462 max_tokens: 8192,
1463 },
1464 ModelEntry {
1465 id: "claude-3-5-sonnet-20241022",
1466 name: "Claude Sonnet 3.5 v2",
1467 api: Api::AnthropicMessages,
1468 provider: "anthropic",
1469 reasoning: false,
1470 input: &[InputModality::Text, InputModality::Image],
1471 cost_input: 0.0,
1472 cost_output: 0.0,
1473 cost_cache_read: 0.3,
1474 cost_cache_write: 3.75,
1475 context_window: 200000,
1476 max_tokens: 8192,
1477 },
1478 ModelEntry {
1479 id: "claude-3-7-sonnet-20250219",
1480 name: "Claude Sonnet 3.7",
1481 api: Api::AnthropicMessages,
1482 provider: "anthropic",
1483 reasoning: true,
1484 input: &[InputModality::Text, InputModality::Image],
1485 cost_input: 0.0,
1486 cost_output: 0.0,
1487 cost_cache_read: 0.3,
1488 cost_cache_write: 3.75,
1489 context_window: 200000,
1490 max_tokens: 64000,
1491 },
1492 ModelEntry {
1493 id: "claude-3-haiku-20240307",
1494 name: "Claude Haiku 3",
1495 api: Api::AnthropicMessages,
1496 provider: "anthropic",
1497 reasoning: false,
1498 input: &[InputModality::Text, InputModality::Image],
1499 cost_input: 0.0,
1500 cost_output: 0.0,
1501 cost_cache_read: 0.03,
1502 cost_cache_write: 0.3,
1503 context_window: 200000,
1504 max_tokens: 4096,
1505 },
1506 ModelEntry {
1507 id: "claude-3-opus-20240229",
1508 name: "Claude Opus 3",
1509 api: Api::AnthropicMessages,
1510 provider: "anthropic",
1511 reasoning: false,
1512 input: &[InputModality::Text, InputModality::Image],
1513 cost_input: 0.0,
1514 cost_output: 0.0,
1515 cost_cache_read: 1.5,
1516 cost_cache_write: 18.75,
1517 context_window: 200000,
1518 max_tokens: 4096,
1519 },
1520 ModelEntry {
1521 id: "claude-3-sonnet-20240229",
1522 name: "Claude Sonnet 3",
1523 api: Api::AnthropicMessages,
1524 provider: "anthropic",
1525 reasoning: false,
1526 input: &[InputModality::Text, InputModality::Image],
1527 cost_input: 0.0,
1528 cost_output: 0.0,
1529 cost_cache_read: 0.3,
1530 cost_cache_write: 0.3,
1531 context_window: 200000,
1532 max_tokens: 4096,
1533 },
1534 ModelEntry {
1535 id: "claude-haiku-4-5",
1536 name: "Claude Haiku 4.5 (latest)",
1537 api: Api::AnthropicMessages,
1538 provider: "anthropic",
1539 reasoning: true,
1540 input: &[InputModality::Text, InputModality::Image],
1541 cost_input: 0.0,
1542 cost_output: 0.0,
1543 cost_cache_read: 0.1,
1544 cost_cache_write: 1.25,
1545 context_window: 200000,
1546 max_tokens: 64000,
1547 },
1548 ModelEntry {
1549 id: "claude-haiku-4-5-20251001",
1550 name: "Claude Haiku 4.5",
1551 api: Api::AnthropicMessages,
1552 provider: "anthropic",
1553 reasoning: true,
1554 input: &[InputModality::Text, InputModality::Image],
1555 cost_input: 0.0,
1556 cost_output: 0.0,
1557 cost_cache_read: 0.1,
1558 cost_cache_write: 1.25,
1559 context_window: 200000,
1560 max_tokens: 64000,
1561 },
1562 ModelEntry {
1563 id: "claude-opus-4-0",
1564 name: "Claude Opus 4 (latest)",
1565 api: Api::AnthropicMessages,
1566 provider: "anthropic",
1567 reasoning: true,
1568 input: &[InputModality::Text, InputModality::Image],
1569 cost_input: 0.0,
1570 cost_output: 0.0,
1571 cost_cache_read: 1.5,
1572 cost_cache_write: 18.75,
1573 context_window: 200000,
1574 max_tokens: 32000,
1575 },
1576 ModelEntry {
1577 id: "claude-opus-4-1",
1578 name: "Claude Opus 4.1 (latest)",
1579 api: Api::AnthropicMessages,
1580 provider: "anthropic",
1581 reasoning: true,
1582 input: &[InputModality::Text, InputModality::Image],
1583 cost_input: 0.0,
1584 cost_output: 0.0,
1585 cost_cache_read: 1.5,
1586 cost_cache_write: 18.75,
1587 context_window: 200000,
1588 max_tokens: 32000,
1589 },
1590 ModelEntry {
1591 id: "claude-opus-4-1-20250805",
1592 name: "Claude Opus 4.1",
1593 api: Api::AnthropicMessages,
1594 provider: "anthropic",
1595 reasoning: true,
1596 input: &[InputModality::Text, InputModality::Image],
1597 cost_input: 0.0,
1598 cost_output: 0.0,
1599 cost_cache_read: 1.5,
1600 cost_cache_write: 18.75,
1601 context_window: 200000,
1602 max_tokens: 32000,
1603 },
1604 ModelEntry {
1605 id: "claude-opus-4-20250514",
1606 name: "Claude Opus 4",
1607 api: Api::AnthropicMessages,
1608 provider: "anthropic",
1609 reasoning: true,
1610 input: &[InputModality::Text, InputModality::Image],
1611 cost_input: 0.0,
1612 cost_output: 0.0,
1613 cost_cache_read: 1.5,
1614 cost_cache_write: 18.75,
1615 context_window: 200000,
1616 max_tokens: 32000,
1617 },
1618 ModelEntry {
1619 id: "claude-opus-4-5",
1620 name: "Claude Opus 4.5 (latest)",
1621 api: Api::AnthropicMessages,
1622 provider: "anthropic",
1623 reasoning: true,
1624 input: &[InputModality::Text, InputModality::Image],
1625 cost_input: 0.0,
1626 cost_output: 0.0,
1627 cost_cache_read: 0.5,
1628 cost_cache_write: 6.25,
1629 context_window: 200000,
1630 max_tokens: 64000,
1631 },
1632 ModelEntry {
1633 id: "claude-opus-4-5-20251101",
1634 name: "Claude Opus 4.5",
1635 api: Api::AnthropicMessages,
1636 provider: "anthropic",
1637 reasoning: true,
1638 input: &[InputModality::Text, InputModality::Image],
1639 cost_input: 0.0,
1640 cost_output: 0.0,
1641 cost_cache_read: 0.5,
1642 cost_cache_write: 6.25,
1643 context_window: 200000,
1644 max_tokens: 64000,
1645 },
1646 ModelEntry {
1647 id: "claude-opus-4-6",
1648 name: "Claude Opus 4.6",
1649 api: Api::AnthropicMessages,
1650 provider: "anthropic",
1651 reasoning: true,
1652 input: &[InputModality::Text, InputModality::Image],
1653 cost_input: 0.0,
1654 cost_output: 0.0,
1655 cost_cache_read: 0.5,
1656 cost_cache_write: 6.25,
1657 context_window: 1000000,
1658 max_tokens: 128000,
1659 },
1660 ModelEntry {
1661 id: "claude-opus-4-7",
1662 name: "Claude Opus 4.7",
1663 api: Api::AnthropicMessages,
1664 provider: "anthropic",
1665 reasoning: true,
1666 input: &[InputModality::Text, InputModality::Image],
1667 cost_input: 0.0,
1668 cost_output: 0.0,
1669 cost_cache_read: 0.5,
1670 cost_cache_write: 6.25,
1671 context_window: 1000000,
1672 max_tokens: 128000,
1673 },
1674 ModelEntry {
1675 id: "claude-sonnet-4-0",
1676 name: "Claude Sonnet 4 (latest)",
1677 api: Api::AnthropicMessages,
1678 provider: "anthropic",
1679 reasoning: true,
1680 input: &[InputModality::Text, InputModality::Image],
1681 cost_input: 0.0,
1682 cost_output: 0.0,
1683 cost_cache_read: 0.3,
1684 cost_cache_write: 3.75,
1685 context_window: 200000,
1686 max_tokens: 64000,
1687 },
1688 ModelEntry {
1689 id: "claude-sonnet-4-20250514",
1690 name: "Claude Sonnet 4",
1691 api: Api::AnthropicMessages,
1692 provider: "anthropic",
1693 reasoning: true,
1694 input: &[InputModality::Text, InputModality::Image],
1695 cost_input: 0.0,
1696 cost_output: 0.0,
1697 cost_cache_read: 0.3,
1698 cost_cache_write: 3.75,
1699 context_window: 200000,
1700 max_tokens: 64000,
1701 },
1702 ModelEntry {
1703 id: "claude-sonnet-4-5",
1704 name: "Claude Sonnet 4.5 (latest)",
1705 api: Api::AnthropicMessages,
1706 provider: "anthropic",
1707 reasoning: true,
1708 input: &[InputModality::Text, InputModality::Image],
1709 cost_input: 0.0,
1710 cost_output: 0.0,
1711 cost_cache_read: 0.3,
1712 cost_cache_write: 3.75,
1713 context_window: 200000,
1714 max_tokens: 64000,
1715 },
1716 ModelEntry {
1717 id: "claude-sonnet-4-5-20250929",
1718 name: "Claude Sonnet 4.5",
1719 api: Api::AnthropicMessages,
1720 provider: "anthropic",
1721 reasoning: true,
1722 input: &[InputModality::Text, InputModality::Image],
1723 cost_input: 0.0,
1724 cost_output: 0.0,
1725 cost_cache_read: 0.3,
1726 cost_cache_write: 3.75,
1727 context_window: 200000,
1728 max_tokens: 64000,
1729 },
1730 ModelEntry {
1731 id: "claude-sonnet-4-6",
1732 name: "Claude Sonnet 4.6",
1733 api: Api::AnthropicMessages,
1734 provider: "anthropic",
1735 reasoning: true,
1736 input: &[InputModality::Text, InputModality::Image],
1737 cost_input: 0.0,
1738 cost_output: 0.0,
1739 cost_cache_read: 0.3,
1740 cost_cache_write: 3.75,
1741 context_window: 1000000,
1742 max_tokens: 64000,
1743 },
1744];
1745
1746static AZURE_OPENAI_RESPONSES_MODELS: &[ModelEntry] = &[
1748 ModelEntry {
1749 id: "gpt-4",
1750 name: "GPT-4",
1751 api: Api::AzureOpenAiResponses,
1752 provider: "azure-openai-responses",
1753 reasoning: false,
1754 input: &[InputModality::Text],
1755 cost_input: 0.0,
1756 cost_output: 0.0,
1757 cost_cache_read: 0.0,
1758 cost_cache_write: 0.0,
1759 context_window: 8192,
1760 max_tokens: 8192,
1761 },
1762 ModelEntry {
1763 id: "gpt-4-turbo",
1764 name: "GPT-4 Turbo",
1765 api: Api::AzureOpenAiResponses,
1766 provider: "azure-openai-responses",
1767 reasoning: false,
1768 input: &[InputModality::Text, InputModality::Image],
1769 cost_input: 0.0,
1770 cost_output: 0.0,
1771 cost_cache_read: 0.0,
1772 cost_cache_write: 0.0,
1773 context_window: 128000,
1774 max_tokens: 4096,
1775 },
1776 ModelEntry {
1777 id: "gpt-4.1",
1778 name: "GPT-4.1",
1779 api: Api::AzureOpenAiResponses,
1780 provider: "azure-openai-responses",
1781 reasoning: false,
1782 input: &[InputModality::Text, InputModality::Image],
1783 cost_input: 0.0,
1784 cost_output: 0.0,
1785 cost_cache_read: 0.5,
1786 cost_cache_write: 0.0,
1787 context_window: 1047576,
1788 max_tokens: 32768,
1789 },
1790 ModelEntry {
1791 id: "gpt-4.1-mini",
1792 name: "GPT-4.1 mini",
1793 api: Api::AzureOpenAiResponses,
1794 provider: "azure-openai-responses",
1795 reasoning: false,
1796 input: &[InputModality::Text, InputModality::Image],
1797 cost_input: 0.0,
1798 cost_output: 0.0,
1799 cost_cache_read: 0.1,
1800 cost_cache_write: 0.0,
1801 context_window: 1047576,
1802 max_tokens: 32768,
1803 },
1804 ModelEntry {
1805 id: "gpt-4.1-nano",
1806 name: "GPT-4.1 nano",
1807 api: Api::AzureOpenAiResponses,
1808 provider: "azure-openai-responses",
1809 reasoning: false,
1810 input: &[InputModality::Text, InputModality::Image],
1811 cost_input: 0.0,
1812 cost_output: 0.0,
1813 cost_cache_read: 0.03,
1814 cost_cache_write: 0.0,
1815 context_window: 1047576,
1816 max_tokens: 32768,
1817 },
1818 ModelEntry {
1819 id: "gpt-4o",
1820 name: "GPT-4o",
1821 api: Api::AzureOpenAiResponses,
1822 provider: "azure-openai-responses",
1823 reasoning: false,
1824 input: &[InputModality::Text, InputModality::Image],
1825 cost_input: 0.0,
1826 cost_output: 0.0,
1827 cost_cache_read: 1.25,
1828 cost_cache_write: 0.0,
1829 context_window: 128000,
1830 max_tokens: 16384,
1831 },
1832 ModelEntry {
1833 id: "gpt-4o-2024-05-13",
1834 name: "GPT-4o (2024-05-13)",
1835 api: Api::AzureOpenAiResponses,
1836 provider: "azure-openai-responses",
1837 reasoning: false,
1838 input: &[InputModality::Text, InputModality::Image],
1839 cost_input: 0.0,
1840 cost_output: 0.0,
1841 cost_cache_read: 0.0,
1842 cost_cache_write: 0.0,
1843 context_window: 128000,
1844 max_tokens: 4096,
1845 },
1846 ModelEntry {
1847 id: "gpt-4o-2024-08-06",
1848 name: "GPT-4o (2024-08-06)",
1849 api: Api::AzureOpenAiResponses,
1850 provider: "azure-openai-responses",
1851 reasoning: false,
1852 input: &[InputModality::Text, InputModality::Image],
1853 cost_input: 0.0,
1854 cost_output: 0.0,
1855 cost_cache_read: 1.25,
1856 cost_cache_write: 0.0,
1857 context_window: 128000,
1858 max_tokens: 16384,
1859 },
1860 ModelEntry {
1861 id: "gpt-4o-2024-11-20",
1862 name: "GPT-4o (2024-11-20)",
1863 api: Api::AzureOpenAiResponses,
1864 provider: "azure-openai-responses",
1865 reasoning: false,
1866 input: &[InputModality::Text, InputModality::Image],
1867 cost_input: 0.0,
1868 cost_output: 0.0,
1869 cost_cache_read: 1.25,
1870 cost_cache_write: 0.0,
1871 context_window: 128000,
1872 max_tokens: 16384,
1873 },
1874 ModelEntry {
1875 id: "gpt-4o-mini",
1876 name: "GPT-4o mini",
1877 api: Api::AzureOpenAiResponses,
1878 provider: "azure-openai-responses",
1879 reasoning: false,
1880 input: &[InputModality::Text, InputModality::Image],
1881 cost_input: 0.0,
1882 cost_output: 0.0,
1883 cost_cache_read: 0.08,
1884 cost_cache_write: 0.0,
1885 context_window: 128000,
1886 max_tokens: 16384,
1887 },
1888 ModelEntry {
1889 id: "gpt-5",
1890 name: "GPT-5",
1891 api: Api::AzureOpenAiResponses,
1892 provider: "azure-openai-responses",
1893 reasoning: true,
1894 input: &[InputModality::Text, InputModality::Image],
1895 cost_input: 0.0,
1896 cost_output: 0.0,
1897 cost_cache_read: 0.125,
1898 cost_cache_write: 0.0,
1899 context_window: 400000,
1900 max_tokens: 128000,
1901 },
1902 ModelEntry {
1903 id: "gpt-5-chat-latest",
1904 name: "GPT-5 Chat Latest",
1905 api: Api::AzureOpenAiResponses,
1906 provider: "azure-openai-responses",
1907 reasoning: false,
1908 input: &[InputModality::Text, InputModality::Image],
1909 cost_input: 0.0,
1910 cost_output: 0.0,
1911 cost_cache_read: 0.125,
1912 cost_cache_write: 0.0,
1913 context_window: 128000,
1914 max_tokens: 16384,
1915 },
1916 ModelEntry {
1917 id: "gpt-5-codex",
1918 name: "GPT-5-Codex",
1919 api: Api::AzureOpenAiResponses,
1920 provider: "azure-openai-responses",
1921 reasoning: true,
1922 input: &[InputModality::Text, InputModality::Image],
1923 cost_input: 0.0,
1924 cost_output: 0.0,
1925 cost_cache_read: 0.125,
1926 cost_cache_write: 0.0,
1927 context_window: 400000,
1928 max_tokens: 128000,
1929 },
1930 ModelEntry {
1931 id: "gpt-5-mini",
1932 name: "GPT-5 Mini",
1933 api: Api::AzureOpenAiResponses,
1934 provider: "azure-openai-responses",
1935 reasoning: true,
1936 input: &[InputModality::Text, InputModality::Image],
1937 cost_input: 0.0,
1938 cost_output: 0.0,
1939 cost_cache_read: 0.025,
1940 cost_cache_write: 0.0,
1941 context_window: 400000,
1942 max_tokens: 128000,
1943 },
1944 ModelEntry {
1945 id: "gpt-5-nano",
1946 name: "GPT-5 Nano",
1947 api: Api::AzureOpenAiResponses,
1948 provider: "azure-openai-responses",
1949 reasoning: true,
1950 input: &[InputModality::Text, InputModality::Image],
1951 cost_input: 0.0,
1952 cost_output: 0.0,
1953 cost_cache_read: 0.005,
1954 cost_cache_write: 0.0,
1955 context_window: 400000,
1956 max_tokens: 128000,
1957 },
1958 ModelEntry {
1959 id: "gpt-5-pro",
1960 name: "GPT-5 Pro",
1961 api: Api::AzureOpenAiResponses,
1962 provider: "azure-openai-responses",
1963 reasoning: true,
1964 input: &[InputModality::Text, InputModality::Image],
1965 cost_input: 0.0,
1966 cost_output: 0.0,
1967 cost_cache_read: 0.0,
1968 cost_cache_write: 0.0,
1969 context_window: 400000,
1970 max_tokens: 272000,
1971 },
1972 ModelEntry {
1973 id: "gpt-5.1",
1974 name: "GPT-5.1",
1975 api: Api::AzureOpenAiResponses,
1976 provider: "azure-openai-responses",
1977 reasoning: true,
1978 input: &[InputModality::Text, InputModality::Image],
1979 cost_input: 0.0,
1980 cost_output: 0.0,
1981 cost_cache_read: 0.13,
1982 cost_cache_write: 0.0,
1983 context_window: 400000,
1984 max_tokens: 128000,
1985 },
1986 ModelEntry {
1987 id: "gpt-5.1-chat-latest",
1988 name: "GPT-5.1 Chat",
1989 api: Api::AzureOpenAiResponses,
1990 provider: "azure-openai-responses",
1991 reasoning: true,
1992 input: &[InputModality::Text, InputModality::Image],
1993 cost_input: 0.0,
1994 cost_output: 0.0,
1995 cost_cache_read: 0.125,
1996 cost_cache_write: 0.0,
1997 context_window: 128000,
1998 max_tokens: 16384,
1999 },
2000 ModelEntry {
2001 id: "gpt-5.1-codex",
2002 name: "GPT-5.1 Codex",
2003 api: Api::AzureOpenAiResponses,
2004 provider: "azure-openai-responses",
2005 reasoning: true,
2006 input: &[InputModality::Text, InputModality::Image],
2007 cost_input: 0.0,
2008 cost_output: 0.0,
2009 cost_cache_read: 0.125,
2010 cost_cache_write: 0.0,
2011 context_window: 400000,
2012 max_tokens: 128000,
2013 },
2014 ModelEntry {
2015 id: "gpt-5.1-codex-max",
2016 name: "GPT-5.1 Codex Max",
2017 api: Api::AzureOpenAiResponses,
2018 provider: "azure-openai-responses",
2019 reasoning: true,
2020 input: &[InputModality::Text, InputModality::Image],
2021 cost_input: 0.0,
2022 cost_output: 0.0,
2023 cost_cache_read: 0.125,
2024 cost_cache_write: 0.0,
2025 context_window: 400000,
2026 max_tokens: 128000,
2027 },
2028 ModelEntry {
2029 id: "gpt-5.1-codex-mini",
2030 name: "GPT-5.1 Codex mini",
2031 api: Api::AzureOpenAiResponses,
2032 provider: "azure-openai-responses",
2033 reasoning: true,
2034 input: &[InputModality::Text, InputModality::Image],
2035 cost_input: 0.0,
2036 cost_output: 0.0,
2037 cost_cache_read: 0.025,
2038 cost_cache_write: 0.0,
2039 context_window: 400000,
2040 max_tokens: 128000,
2041 },
2042 ModelEntry {
2043 id: "gpt-5.2",
2044 name: "GPT-5.2",
2045 api: Api::AzureOpenAiResponses,
2046 provider: "azure-openai-responses",
2047 reasoning: true,
2048 input: &[InputModality::Text, InputModality::Image],
2049 cost_input: 0.0,
2050 cost_output: 0.0,
2051 cost_cache_read: 0.175,
2052 cost_cache_write: 0.0,
2053 context_window: 400000,
2054 max_tokens: 128000,
2055 },
2056 ModelEntry {
2057 id: "gpt-5.2-chat-latest",
2058 name: "GPT-5.2 Chat",
2059 api: Api::AzureOpenAiResponses,
2060 provider: "azure-openai-responses",
2061 reasoning: true,
2062 input: &[InputModality::Text, InputModality::Image],
2063 cost_input: 0.0,
2064 cost_output: 0.0,
2065 cost_cache_read: 0.175,
2066 cost_cache_write: 0.0,
2067 context_window: 128000,
2068 max_tokens: 16384,
2069 },
2070 ModelEntry {
2071 id: "gpt-5.2-codex",
2072 name: "GPT-5.2 Codex",
2073 api: Api::AzureOpenAiResponses,
2074 provider: "azure-openai-responses",
2075 reasoning: true,
2076 input: &[InputModality::Text, InputModality::Image],
2077 cost_input: 0.0,
2078 cost_output: 0.0,
2079 cost_cache_read: 0.175,
2080 cost_cache_write: 0.0,
2081 context_window: 400000,
2082 max_tokens: 128000,
2083 },
2084 ModelEntry {
2085 id: "gpt-5.2-pro",
2086 name: "GPT-5.2 Pro",
2087 api: Api::AzureOpenAiResponses,
2088 provider: "azure-openai-responses",
2089 reasoning: true,
2090 input: &[InputModality::Text, InputModality::Image],
2091 cost_input: 0.0,
2092 cost_output: 0.0,
2093 cost_cache_read: 0.0,
2094 cost_cache_write: 0.0,
2095 context_window: 400000,
2096 max_tokens: 128000,
2097 },
2098 ModelEntry {
2099 id: "gpt-5.3-chat-latest",
2100 name: "GPT-5.3 Chat (latest)",
2101 api: Api::AzureOpenAiResponses,
2102 provider: "azure-openai-responses",
2103 reasoning: false,
2104 input: &[InputModality::Text, InputModality::Image],
2105 cost_input: 0.0,
2106 cost_output: 0.0,
2107 cost_cache_read: 0.175,
2108 cost_cache_write: 0.0,
2109 context_window: 128000,
2110 max_tokens: 16384,
2111 },
2112 ModelEntry {
2113 id: "gpt-5.3-codex",
2114 name: "GPT-5.3 Codex",
2115 api: Api::AzureOpenAiResponses,
2116 provider: "azure-openai-responses",
2117 reasoning: true,
2118 input: &[InputModality::Text, InputModality::Image],
2119 cost_input: 0.0,
2120 cost_output: 0.0,
2121 cost_cache_read: 0.175,
2122 cost_cache_write: 0.0,
2123 context_window: 400000,
2124 max_tokens: 128000,
2125 },
2126 ModelEntry {
2127 id: "gpt-5.3-codex-spark",
2128 name: "GPT-5.3 Codex Spark",
2129 api: Api::AzureOpenAiResponses,
2130 provider: "azure-openai-responses",
2131 reasoning: true,
2132 input: &[InputModality::Text, InputModality::Image],
2133 cost_input: 0.0,
2134 cost_output: 0.0,
2135 cost_cache_read: 0.175,
2136 cost_cache_write: 0.0,
2137 context_window: 128000,
2138 max_tokens: 32000,
2139 },
2140 ModelEntry {
2141 id: "gpt-5.4",
2142 name: "GPT-5.4",
2143 api: Api::AzureOpenAiResponses,
2144 provider: "azure-openai-responses",
2145 reasoning: true,
2146 input: &[InputModality::Text, InputModality::Image],
2147 cost_input: 0.0,
2148 cost_output: 0.0,
2149 cost_cache_read: 0.25,
2150 cost_cache_write: 0.0,
2151 context_window: 272000,
2152 max_tokens: 128000,
2153 },
2154 ModelEntry {
2155 id: "gpt-5.4-mini",
2156 name: "GPT-5.4 mini",
2157 api: Api::AzureOpenAiResponses,
2158 provider: "azure-openai-responses",
2159 reasoning: true,
2160 input: &[InputModality::Text, InputModality::Image],
2161 cost_input: 0.0,
2162 cost_output: 0.0,
2163 cost_cache_read: 0.075,
2164 cost_cache_write: 0.0,
2165 context_window: 400000,
2166 max_tokens: 128000,
2167 },
2168 ModelEntry {
2169 id: "gpt-5.4-nano",
2170 name: "GPT-5.4 nano",
2171 api: Api::AzureOpenAiResponses,
2172 provider: "azure-openai-responses",
2173 reasoning: true,
2174 input: &[InputModality::Text, InputModality::Image],
2175 cost_input: 0.0,
2176 cost_output: 0.0,
2177 cost_cache_read: 0.02,
2178 cost_cache_write: 0.0,
2179 context_window: 400000,
2180 max_tokens: 128000,
2181 },
2182 ModelEntry {
2183 id: "gpt-5.4-pro",
2184 name: "GPT-5.4 Pro",
2185 api: Api::AzureOpenAiResponses,
2186 provider: "azure-openai-responses",
2187 reasoning: true,
2188 input: &[InputModality::Text, InputModality::Image],
2189 cost_input: 0.0,
2190 cost_output: 0.0,
2191 cost_cache_read: 0.0,
2192 cost_cache_write: 0.0,
2193 context_window: 1050000,
2194 max_tokens: 128000,
2195 },
2196 ModelEntry {
2197 id: "gpt-5.5",
2198 name: "GPT-5.5",
2199 api: Api::AzureOpenAiResponses,
2200 provider: "azure-openai-responses",
2201 reasoning: true,
2202 input: &[InputModality::Text, InputModality::Image],
2203 cost_input: 0.0,
2204 cost_output: 0.0,
2205 cost_cache_read: 0.5,
2206 cost_cache_write: 0.0,
2207 context_window: 272000,
2208 max_tokens: 128000,
2209 },
2210 ModelEntry {
2211 id: "gpt-5.5-pro",
2212 name: "GPT-5.5 Pro",
2213 api: Api::AzureOpenAiResponses,
2214 provider: "azure-openai-responses",
2215 reasoning: true,
2216 input: &[InputModality::Text, InputModality::Image],
2217 cost_input: 0.0,
2218 cost_output: 0.0,
2219 cost_cache_read: 0.0,
2220 cost_cache_write: 0.0,
2221 context_window: 1050000,
2222 max_tokens: 128000,
2223 },
2224 ModelEntry {
2225 id: "o1",
2226 name: "o1",
2227 api: Api::AzureOpenAiResponses,
2228 provider: "azure-openai-responses",
2229 reasoning: true,
2230 input: &[InputModality::Text, InputModality::Image],
2231 cost_input: 0.0,
2232 cost_output: 0.0,
2233 cost_cache_read: 7.5,
2234 cost_cache_write: 0.0,
2235 context_window: 200000,
2236 max_tokens: 100000,
2237 },
2238 ModelEntry {
2239 id: "o1-pro",
2240 name: "o1-pro",
2241 api: Api::AzureOpenAiResponses,
2242 provider: "azure-openai-responses",
2243 reasoning: true,
2244 input: &[InputModality::Text, InputModality::Image],
2245 cost_input: 0.0,
2246 cost_output: 0.0,
2247 cost_cache_read: 0.0,
2248 cost_cache_write: 0.0,
2249 context_window: 200000,
2250 max_tokens: 100000,
2251 },
2252 ModelEntry {
2253 id: "o3",
2254 name: "o3",
2255 api: Api::AzureOpenAiResponses,
2256 provider: "azure-openai-responses",
2257 reasoning: true,
2258 input: &[InputModality::Text, InputModality::Image],
2259 cost_input: 0.0,
2260 cost_output: 0.0,
2261 cost_cache_read: 0.5,
2262 cost_cache_write: 0.0,
2263 context_window: 200000,
2264 max_tokens: 100000,
2265 },
2266 ModelEntry {
2267 id: "o3-deep-research",
2268 name: "o3-deep-research",
2269 api: Api::AzureOpenAiResponses,
2270 provider: "azure-openai-responses",
2271 reasoning: true,
2272 input: &[InputModality::Text, InputModality::Image],
2273 cost_input: 0.0,
2274 cost_output: 0.0,
2275 cost_cache_read: 2.5,
2276 cost_cache_write: 0.0,
2277 context_window: 200000,
2278 max_tokens: 100000,
2279 },
2280 ModelEntry {
2281 id: "o3-mini",
2282 name: "o3-mini",
2283 api: Api::AzureOpenAiResponses,
2284 provider: "azure-openai-responses",
2285 reasoning: true,
2286 input: &[InputModality::Text],
2287 cost_input: 0.0,
2288 cost_output: 0.0,
2289 cost_cache_read: 0.55,
2290 cost_cache_write: 0.0,
2291 context_window: 200000,
2292 max_tokens: 100000,
2293 },
2294 ModelEntry {
2295 id: "o3-pro",
2296 name: "o3-pro",
2297 api: Api::AzureOpenAiResponses,
2298 provider: "azure-openai-responses",
2299 reasoning: true,
2300 input: &[InputModality::Text, InputModality::Image],
2301 cost_input: 0.0,
2302 cost_output: 0.0,
2303 cost_cache_read: 0.0,
2304 cost_cache_write: 0.0,
2305 context_window: 200000,
2306 max_tokens: 100000,
2307 },
2308 ModelEntry {
2309 id: "o4-mini",
2310 name: "o4-mini",
2311 api: Api::AzureOpenAiResponses,
2312 provider: "azure-openai-responses",
2313 reasoning: true,
2314 input: &[InputModality::Text, InputModality::Image],
2315 cost_input: 0.0,
2316 cost_output: 0.0,
2317 cost_cache_read: 0.28,
2318 cost_cache_write: 0.0,
2319 context_window: 200000,
2320 max_tokens: 100000,
2321 },
2322 ModelEntry {
2323 id: "o4-mini-deep-research",
2324 name: "o4-mini-deep-research",
2325 api: Api::AzureOpenAiResponses,
2326 provider: "azure-openai-responses",
2327 reasoning: true,
2328 input: &[InputModality::Text, InputModality::Image],
2329 cost_input: 0.0,
2330 cost_output: 0.0,
2331 cost_cache_read: 0.5,
2332 cost_cache_write: 0.0,
2333 context_window: 200000,
2334 max_tokens: 100000,
2335 },
2336];
2337
2338static CEREBRAS_MODELS: &[ModelEntry] = &[
2340 ModelEntry {
2341 id: "gpt-oss-120b",
2342 name: "GPT OSS 120B",
2343 api: Api::OpenAiCompletions,
2344 provider: "cerebras",
2345 reasoning: true,
2346 input: &[InputModality::Text],
2347 cost_input: 0.0,
2348 cost_output: 0.0,
2349 cost_cache_read: 0.0,
2350 cost_cache_write: 0.0,
2351 context_window: 131072,
2352 max_tokens: 32768,
2353 },
2354 ModelEntry {
2355 id: "llama3.1-8b",
2356 name: "Llama 3.1 8B",
2357 api: Api::OpenAiCompletions,
2358 provider: "cerebras",
2359 reasoning: false,
2360 input: &[InputModality::Text],
2361 cost_input: 0.0,
2362 cost_output: 0.0,
2363 cost_cache_read: 0.0,
2364 cost_cache_write: 0.0,
2365 context_window: 32000,
2366 max_tokens: 8000,
2367 },
2368 ModelEntry {
2369 id: "qwen-3-235b-a22b-instruct-2507",
2370 name: "Qwen 3 235B Instruct",
2371 api: Api::OpenAiCompletions,
2372 provider: "cerebras",
2373 reasoning: false,
2374 input: &[InputModality::Text],
2375 cost_input: 0.0,
2376 cost_output: 0.0,
2377 cost_cache_read: 0.0,
2378 cost_cache_write: 0.0,
2379 context_window: 131000,
2380 max_tokens: 32000,
2381 },
2382 ModelEntry {
2383 id: "zai-glm-4.7",
2384 name: "Z.AI GLM-4.7",
2385 api: Api::OpenAiCompletions,
2386 provider: "cerebras",
2387 reasoning: false,
2388 input: &[InputModality::Text],
2389 cost_input: 0.0,
2390 cost_output: 0.0,
2391 cost_cache_read: 0.0,
2392 cost_cache_write: 0.0,
2393 context_window: 131072,
2394 max_tokens: 40000,
2395 },
2396];
2397
2398static CLOUDFLARE_AI_GATEWAY_MODELS: &[ModelEntry] = &[
2400 ModelEntry {
2401 id: "claude-3-5-haiku",
2402 name: "Claude Haiku 3.5 (latest)",
2403 api: Api::AnthropicMessages,
2404 provider: "cloudflare-ai-gateway",
2405 reasoning: false,
2406 input: &[InputModality::Text, InputModality::Image],
2407 cost_input: 0.0,
2408 cost_output: 0.0,
2409 cost_cache_read: 0.08,
2410 cost_cache_write: 1.0,
2411 context_window: 200000,
2412 max_tokens: 8192,
2413 },
2414 ModelEntry {
2415 id: "claude-3-haiku",
2416 name: "Claude Haiku 3",
2417 api: Api::AnthropicMessages,
2418 provider: "cloudflare-ai-gateway",
2419 reasoning: false,
2420 input: &[InputModality::Text, InputModality::Image],
2421 cost_input: 0.0,
2422 cost_output: 0.0,
2423 cost_cache_read: 0.03,
2424 cost_cache_write: 0.3,
2425 context_window: 200000,
2426 max_tokens: 4096,
2427 },
2428 ModelEntry {
2429 id: "claude-3-sonnet",
2430 name: "Claude Sonnet 3",
2431 api: Api::AnthropicMessages,
2432 provider: "cloudflare-ai-gateway",
2433 reasoning: false,
2434 input: &[InputModality::Text, InputModality::Image],
2435 cost_input: 0.0,
2436 cost_output: 0.0,
2437 cost_cache_read: 0.3,
2438 cost_cache_write: 0.3,
2439 context_window: 200000,
2440 max_tokens: 4096,
2441 },
2442 ModelEntry {
2443 id: "claude-3.5-sonnet",
2444 name: "Claude Sonnet 3.5 v2",
2445 api: Api::AnthropicMessages,
2446 provider: "cloudflare-ai-gateway",
2447 reasoning: false,
2448 input: &[InputModality::Text, InputModality::Image],
2449 cost_input: 0.0,
2450 cost_output: 0.0,
2451 cost_cache_read: 0.3,
2452 cost_cache_write: 3.75,
2453 context_window: 200000,
2454 max_tokens: 8192,
2455 },
2456 ModelEntry {
2457 id: "claude-opus-4",
2458 name: "Claude Opus 4 (latest)",
2459 api: Api::AnthropicMessages,
2460 provider: "cloudflare-ai-gateway",
2461 reasoning: true,
2462 input: &[InputModality::Text, InputModality::Image],
2463 cost_input: 0.0,
2464 cost_output: 0.0,
2465 cost_cache_read: 1.5,
2466 cost_cache_write: 18.75,
2467 context_window: 200000,
2468 max_tokens: 32000,
2469 },
2470 ModelEntry {
2471 id: "claude-opus-4-1",
2472 name: "Claude Opus 4.1 (latest)",
2473 api: Api::AnthropicMessages,
2474 provider: "cloudflare-ai-gateway",
2475 reasoning: true,
2476 input: &[InputModality::Text, InputModality::Image],
2477 cost_input: 0.0,
2478 cost_output: 0.0,
2479 cost_cache_read: 1.5,
2480 cost_cache_write: 18.75,
2481 context_window: 200000,
2482 max_tokens: 32000,
2483 },
2484 ModelEntry {
2485 id: "claude-opus-4-6",
2486 name: "Claude Opus 4.6 (latest)",
2487 api: Api::AnthropicMessages,
2488 provider: "cloudflare-ai-gateway",
2489 reasoning: true,
2490 input: &[InputModality::Text, InputModality::Image],
2491 cost_input: 0.0,
2492 cost_output: 0.0,
2493 cost_cache_read: 0.5,
2494 cost_cache_write: 6.25,
2495 context_window: 1000000,
2496 max_tokens: 128000,
2497 },
2498 ModelEntry {
2499 id: "claude-sonnet-4",
2500 name: "Claude Sonnet 4 (latest)",
2501 api: Api::AnthropicMessages,
2502 provider: "cloudflare-ai-gateway",
2503 reasoning: true,
2504 input: &[InputModality::Text, InputModality::Image],
2505 cost_input: 0.0,
2506 cost_output: 0.0,
2507 cost_cache_read: 0.3,
2508 cost_cache_write: 3.75,
2509 context_window: 200000,
2510 max_tokens: 64000,
2511 },
2512 ModelEntry {
2513 id: "claude-sonnet-4-6",
2514 name: "Claude Sonnet 4.6",
2515 api: Api::AnthropicMessages,
2516 provider: "cloudflare-ai-gateway",
2517 reasoning: true,
2518 input: &[InputModality::Text, InputModality::Image],
2519 cost_input: 0.0,
2520 cost_output: 0.0,
2521 cost_cache_read: 0.3,
2522 cost_cache_write: 3.75,
2523 context_window: 1000000,
2524 max_tokens: 64000,
2525 },
2526 ModelEntry {
2527 id: "gpt-4",
2528 name: "GPT-4",
2529 api: Api::OpenAiResponses,
2530 provider: "cloudflare-ai-gateway",
2531 reasoning: false,
2532 input: &[InputModality::Text],
2533 cost_input: 0.0,
2534 cost_output: 0.0,
2535 cost_cache_read: 0.0,
2536 cost_cache_write: 0.0,
2537 context_window: 8192,
2538 max_tokens: 8192,
2539 },
2540 ModelEntry {
2541 id: "gpt-4o",
2542 name: "GPT-4o",
2543 api: Api::OpenAiResponses,
2544 provider: "cloudflare-ai-gateway",
2545 reasoning: false,
2546 input: &[InputModality::Text, InputModality::Image],
2547 cost_input: 0.0,
2548 cost_output: 0.0,
2549 cost_cache_read: 1.25,
2550 cost_cache_write: 0.0,
2551 context_window: 128000,
2552 max_tokens: 16384,
2553 },
2554 ModelEntry {
2555 id: "gpt-5.1",
2556 name: "GPT-5.1",
2557 api: Api::OpenAiResponses,
2558 provider: "cloudflare-ai-gateway",
2559 reasoning: true,
2560 input: &[InputModality::Text, InputModality::Image],
2561 cost_input: 0.0,
2562 cost_output: 0.0,
2563 cost_cache_read: 0.13,
2564 cost_cache_write: 0.0,
2565 context_window: 400000,
2566 max_tokens: 128000,
2567 },
2568 ModelEntry {
2569 id: "gpt-5.2",
2570 name: "GPT-5.2",
2571 api: Api::OpenAiResponses,
2572 provider: "cloudflare-ai-gateway",
2573 reasoning: true,
2574 input: &[InputModality::Text, InputModality::Image],
2575 cost_input: 0.0,
2576 cost_output: 0.0,
2577 cost_cache_read: 0.175,
2578 cost_cache_write: 0.0,
2579 context_window: 400000,
2580 max_tokens: 128000,
2581 },
2582 ModelEntry {
2583 id: "gpt-5.2-codex",
2584 name: "GPT-5.2 Codex",
2585 api: Api::OpenAiResponses,
2586 provider: "cloudflare-ai-gateway",
2587 reasoning: true,
2588 input: &[InputModality::Text, InputModality::Image],
2589 cost_input: 0.0,
2590 cost_output: 0.0,
2591 cost_cache_read: 0.175,
2592 cost_cache_write: 0.0,
2593 context_window: 400000,
2594 max_tokens: 128000,
2595 },
2596 ModelEntry {
2597 id: "gpt-5.4",
2598 name: "GPT-5.4",
2599 api: Api::OpenAiResponses,
2600 provider: "cloudflare-ai-gateway",
2601 reasoning: true,
2602 input: &[InputModality::Text, InputModality::Image],
2603 cost_input: 0.0,
2604 cost_output: 0.0,
2605 cost_cache_read: 0.25,
2606 cost_cache_write: 0.0,
2607 context_window: 1050000,
2608 max_tokens: 128000,
2609 },
2610 ModelEntry {
2611 id: "o1",
2612 name: "o1",
2613 api: Api::OpenAiResponses,
2614 provider: "cloudflare-ai-gateway",
2615 reasoning: true,
2616 input: &[InputModality::Text, InputModality::Image],
2617 cost_input: 0.0,
2618 cost_output: 0.0,
2619 cost_cache_read: 7.5,
2620 cost_cache_write: 0.0,
2621 context_window: 200000,
2622 max_tokens: 100000,
2623 },
2624 ModelEntry {
2625 id: "o3-mini",
2626 name: "o3-mini",
2627 api: Api::OpenAiResponses,
2628 provider: "cloudflare-ai-gateway",
2629 reasoning: true,
2630 input: &[InputModality::Text],
2631 cost_input: 0.0,
2632 cost_output: 0.0,
2633 cost_cache_read: 0.55,
2634 cost_cache_write: 0.0,
2635 context_window: 200000,
2636 max_tokens: 100000,
2637 },
2638 ModelEntry {
2639 id: "o3-pro",
2640 name: "o3-pro",
2641 api: Api::OpenAiResponses,
2642 provider: "cloudflare-ai-gateway",
2643 reasoning: true,
2644 input: &[InputModality::Text, InputModality::Image],
2645 cost_input: 0.0,
2646 cost_output: 0.0,
2647 cost_cache_read: 0.0,
2648 cost_cache_write: 0.0,
2649 context_window: 200000,
2650 max_tokens: 100000,
2651 },
2652 ModelEntry {
2653 id: "workers-ai/@cf/moonshotai/kimi-k2.5",
2654 name: "Kimi K2.5",
2655 api: Api::OpenAiCompletions,
2656 provider: "cloudflare-ai-gateway",
2657 reasoning: true,
2658 input: &[InputModality::Text, InputModality::Image],
2659 cost_input: 0.0,
2660 cost_output: 0.0,
2661 cost_cache_read: 0.1,
2662 cost_cache_write: 0.0,
2663 context_window: 256000,
2664 max_tokens: 256000,
2665 },
2666 ModelEntry {
2667 id: "workers-ai/@cf/nvidia/nemotron-3-120b-a12b",
2668 name: "Nemotron 3 Super 120B",
2669 api: Api::OpenAiCompletions,
2670 provider: "cloudflare-ai-gateway",
2671 reasoning: true,
2672 input: &[InputModality::Text],
2673 cost_input: 0.0,
2674 cost_output: 0.0,
2675 cost_cache_read: 0.0,
2676 cost_cache_write: 0.0,
2677 context_window: 256000,
2678 max_tokens: 256000,
2679 },
2680 ModelEntry {
2681 id: "claude-3-opus",
2682 name: "Claude Opus 3",
2683 api: Api::AnthropicMessages,
2684 provider: "cloudflare-ai-gateway",
2685 reasoning: false,
2686 input: &[InputModality::Text, InputModality::Image],
2687 cost_input: 15.0,
2688 cost_output: 75.0,
2689 cost_cache_read: 1.5,
2690 cost_cache_write: 18.75,
2691 context_window: 200000,
2692 max_tokens: 4096,
2693 },
2694 ModelEntry {
2695 id: "claude-3.5-haiku",
2696 name: "Claude Haiku 3.5 (latest)",
2697 api: Api::AnthropicMessages,
2698 provider: "cloudflare-ai-gateway",
2699 reasoning: false,
2700 input: &[InputModality::Text, InputModality::Image],
2701 cost_input: 0.8,
2702 cost_output: 4.0,
2703 cost_cache_read: 0.08,
2704 cost_cache_write: 1.0,
2705 context_window: 200000,
2706 max_tokens: 8192,
2707 },
2708 ModelEntry {
2709 id: "workers-ai/@cf/moonshotai/kimi-k2.6",
2710 name: "Kimi K2.6",
2711 api: Api::OpenAiCompletions,
2712 provider: "cloudflare-ai-gateway",
2713 reasoning: true,
2714 input: &[InputModality::Text, InputModality::Image],
2715 cost_input: 0.95,
2716 cost_output: 4.0,
2717 cost_cache_read: 0.16,
2718 cost_cache_write: 0.0,
2719 context_window: 256000,
2720 max_tokens: 256000,
2721 },
2722 ModelEntry {
2723 id: "workers-ai/@cf/zai-org/glm-4.7-flash",
2724 name: "GLM-4.7-Flash",
2725 api: Api::OpenAiCompletions,
2726 provider: "cloudflare-ai-gateway",
2727 reasoning: true,
2728 input: &[InputModality::Text],
2729 cost_input: 0.06,
2730 cost_output: 0.4,
2731 cost_cache_read: 0.0,
2732 cost_cache_write: 0.0,
2733 context_window: 131072,
2734 max_tokens: 131072,
2735 },
2736];
2737
2738static CLOUDFLARE_WORKERS_AI_MODELS: &[ModelEntry] = &[
2740 ModelEntry {
2741 id: "@cf/google/gemma-4-26b-a4b-it",
2742 name: "Gemma 4 26B A4B IT",
2743 api: Api::OpenAiCompletions,
2744 provider: "cloudflare-workers-ai",
2745 reasoning: true,
2746 input: &[InputModality::Text, InputModality::Image],
2747 cost_input: 0.0,
2748 cost_output: 0.0,
2749 cost_cache_read: 0.0,
2750 cost_cache_write: 0.0,
2751 context_window: 256000,
2752 max_tokens: 16384,
2753 },
2754 ModelEntry {
2755 id: "@cf/meta/llama-4-scout-17b-16e-instruct",
2756 name: "Llama 4 Scout 17B 16E Instruct",
2757 api: Api::OpenAiCompletions,
2758 provider: "cloudflare-workers-ai",
2759 reasoning: false,
2760 input: &[InputModality::Text, InputModality::Image],
2761 cost_input: 0.0,
2762 cost_output: 0.0,
2763 cost_cache_read: 0.0,
2764 cost_cache_write: 0.0,
2765 context_window: 128000,
2766 max_tokens: 16384,
2767 },
2768 ModelEntry {
2769 id: "@cf/moonshotai/kimi-k2.5",
2770 name: "Kimi K2.5",
2771 api: Api::OpenAiCompletions,
2772 provider: "cloudflare-workers-ai",
2773 reasoning: true,
2774 input: &[InputModality::Text, InputModality::Image],
2775 cost_input: 0.0,
2776 cost_output: 0.0,
2777 cost_cache_read: 0.1,
2778 cost_cache_write: 0.0,
2779 context_window: 256000,
2780 max_tokens: 256000,
2781 },
2782 ModelEntry {
2783 id: "@cf/moonshotai/kimi-k2.6",
2784 name: "Kimi K2.6",
2785 api: Api::OpenAiCompletions,
2786 provider: "cloudflare-workers-ai",
2787 reasoning: true,
2788 input: &[InputModality::Text, InputModality::Image],
2789 cost_input: 0.0,
2790 cost_output: 0.0,
2791 cost_cache_read: 0.16,
2792 cost_cache_write: 0.0,
2793 context_window: 256000,
2794 max_tokens: 256000,
2795 },
2796 ModelEntry {
2797 id: "@cf/nvidia/nemotron-3-120b-a12b",
2798 name: "Nemotron 3 Super 120B",
2799 api: Api::OpenAiCompletions,
2800 provider: "cloudflare-workers-ai",
2801 reasoning: true,
2802 input: &[InputModality::Text],
2803 cost_input: 0.0,
2804 cost_output: 0.0,
2805 cost_cache_read: 0.0,
2806 cost_cache_write: 0.0,
2807 context_window: 256000,
2808 max_tokens: 256000,
2809 },
2810 ModelEntry {
2811 id: "@cf/openai/gpt-oss-120b",
2812 name: "GPT OSS 120B",
2813 api: Api::OpenAiCompletions,
2814 provider: "cloudflare-workers-ai",
2815 reasoning: true,
2816 input: &[InputModality::Text],
2817 cost_input: 0.0,
2818 cost_output: 0.0,
2819 cost_cache_read: 0.0,
2820 cost_cache_write: 0.0,
2821 context_window: 128000,
2822 max_tokens: 16384,
2823 },
2824 ModelEntry {
2825 id: "@cf/openai/gpt-oss-20b",
2826 name: "GPT OSS 20B",
2827 api: Api::OpenAiCompletions,
2828 provider: "cloudflare-workers-ai",
2829 reasoning: true,
2830 input: &[InputModality::Text],
2831 cost_input: 0.0,
2832 cost_output: 0.0,
2833 cost_cache_read: 0.0,
2834 cost_cache_write: 0.0,
2835 context_window: 128000,
2836 max_tokens: 16384,
2837 },
2838 ModelEntry {
2839 id: "@cf/zai-org/glm-4.7-flash",
2840 name: "GLM-4.7-Flash",
2841 api: Api::OpenAiCompletions,
2842 provider: "cloudflare-workers-ai",
2843 reasoning: true,
2844 input: &[InputModality::Text],
2845 cost_input: 0.0,
2846 cost_output: 0.0,
2847 cost_cache_read: 0.0,
2848 cost_cache_write: 0.0,
2849 context_window: 131072,
2850 max_tokens: 131072,
2851 },
2852 ModelEntry {
2853 id: "@cf/ibm-granite/granite-4.0-h-micro",
2854 name: "Granite 4.0 H Micro",
2855 api: Api::OpenAiCompletions,
2856 provider: "cloudflare-workers-ai",
2857 reasoning: false,
2858 input: &[InputModality::Text],
2859 cost_input: 0.017,
2860 cost_output: 0.112,
2861 cost_cache_read: 0.0,
2862 cost_cache_write: 0.0,
2863 context_window: 131000,
2864 max_tokens: 131000,
2865 },
2866 ModelEntry {
2867 id: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
2868 name: "Llama 3.3 70B Instruct fp8 Fast",
2869 api: Api::OpenAiCompletions,
2870 provider: "cloudflare-workers-ai",
2871 reasoning: false,
2872 input: &[InputModality::Text],
2873 cost_input: 0.293,
2874 cost_output: 2.253,
2875 cost_cache_read: 0.0,
2876 cost_cache_write: 0.0,
2877 context_window: 24000,
2878 max_tokens: 24000,
2879 },
2880 ModelEntry {
2881 id: "@cf/mistralai/mistral-small-3.1-24b-instruct",
2882 name: "Mistral Small 3.1 24B Instruct",
2883 api: Api::OpenAiCompletions,
2884 provider: "cloudflare-workers-ai",
2885 reasoning: false,
2886 input: &[InputModality::Text],
2887 cost_input: 0.351,
2888 cost_output: 0.555,
2889 cost_cache_read: 0.0,
2890 cost_cache_write: 0.0,
2891 context_window: 128000,
2892 max_tokens: 128000,
2893 },
2894 ModelEntry {
2895 id: "@cf/qwen/qwen3-30b-a3b-fp8",
2896 name: "Qwen3 30B A3b fp8",
2897 api: Api::OpenAiCompletions,
2898 provider: "cloudflare-workers-ai",
2899 reasoning: true,
2900 input: &[InputModality::Text],
2901 cost_input: 0.0509,
2902 cost_output: 0.335,
2903 cost_cache_read: 0.0,
2904 cost_cache_write: 0.0,
2905 context_window: 32768,
2906 max_tokens: 32768,
2907 },
2908];
2909
2910static DEEPSEEK_MODELS: &[ModelEntry] = &[
2912 ModelEntry {
2913 id: "deepseek-v4-flash",
2914 name: "DeepSeek V4 Flash",
2915 api: Api::OpenAiCompletions,
2916 provider: "deepseek",
2917 reasoning: true,
2918 input: &[InputModality::Text],
2919 cost_input: 0.0,
2920 cost_output: 0.0,
2921 cost_cache_read: 0.0028,
2922 cost_cache_write: 0.0,
2923 context_window: 1000000,
2924 max_tokens: 384000,
2925 },
2926 ModelEntry {
2927 id: "deepseek-v4-pro",
2928 name: "DeepSeek V4 Pro",
2929 api: Api::OpenAiCompletions,
2930 provider: "deepseek",
2931 reasoning: true,
2932 input: &[InputModality::Text],
2933 cost_input: 0.0,
2934 cost_output: 0.0,
2935 cost_cache_read: 0.003625,
2936 cost_cache_write: 0.0,
2937 context_window: 1000000,
2938 max_tokens: 384000,
2939 },
2940];
2941
2942static FIREWORKS_MODELS: &[ModelEntry] = &[
2944 ModelEntry {
2945 id: "accounts/fireworks/models/deepseek-v3p1",
2946 name: "DeepSeek V3.1",
2947 api: Api::AnthropicMessages,
2948 provider: "fireworks",
2949 reasoning: true,
2950 input: &[InputModality::Text],
2951 cost_input: 0.0,
2952 cost_output: 0.0,
2953 cost_cache_read: 0.0,
2954 cost_cache_write: 0.0,
2955 context_window: 163840,
2956 max_tokens: 163840,
2957 },
2958 ModelEntry {
2959 id: "accounts/fireworks/models/deepseek-v3p2",
2960 name: "DeepSeek V3.2",
2961 api: Api::AnthropicMessages,
2962 provider: "fireworks",
2963 reasoning: true,
2964 input: &[InputModality::Text],
2965 cost_input: 0.0,
2966 cost_output: 0.0,
2967 cost_cache_read: 0.28,
2968 cost_cache_write: 0.0,
2969 context_window: 160000,
2970 max_tokens: 160000,
2971 },
2972 ModelEntry {
2973 id: "accounts/fireworks/models/deepseek-v4-pro",
2974 name: "DeepSeek V4 Pro",
2975 api: Api::AnthropicMessages,
2976 provider: "fireworks",
2977 reasoning: true,
2978 input: &[InputModality::Text],
2979 cost_input: 0.0,
2980 cost_output: 0.0,
2981 cost_cache_read: 0.15,
2982 cost_cache_write: 0.0,
2983 context_window: 1000000,
2984 max_tokens: 384000,
2985 },
2986 ModelEntry {
2987 id: "accounts/fireworks/models/glm-4p5",
2988 name: "GLM 4.5",
2989 api: Api::AnthropicMessages,
2990 provider: "fireworks",
2991 reasoning: true,
2992 input: &[InputModality::Text],
2993 cost_input: 0.0,
2994 cost_output: 0.0,
2995 cost_cache_read: 0.0,
2996 cost_cache_write: 0.0,
2997 context_window: 131072,
2998 max_tokens: 131072,
2999 },
3000 ModelEntry {
3001 id: "accounts/fireworks/models/glm-4p5-air",
3002 name: "GLM 4.5 Air",
3003 api: Api::AnthropicMessages,
3004 provider: "fireworks",
3005 reasoning: true,
3006 input: &[InputModality::Text],
3007 cost_input: 0.0,
3008 cost_output: 0.0,
3009 cost_cache_read: 0.0,
3010 cost_cache_write: 0.0,
3011 context_window: 131072,
3012 max_tokens: 131072,
3013 },
3014 ModelEntry {
3015 id: "accounts/fireworks/models/glm-4p7",
3016 name: "GLM 4.7",
3017 api: Api::AnthropicMessages,
3018 provider: "fireworks",
3019 reasoning: true,
3020 input: &[InputModality::Text],
3021 cost_input: 0.0,
3022 cost_output: 0.0,
3023 cost_cache_read: 0.3,
3024 cost_cache_write: 0.0,
3025 context_window: 198000,
3026 max_tokens: 198000,
3027 },
3028 ModelEntry {
3029 id: "accounts/fireworks/models/glm-5",
3030 name: "GLM 5",
3031 api: Api::AnthropicMessages,
3032 provider: "fireworks",
3033 reasoning: true,
3034 input: &[InputModality::Text],
3035 cost_input: 0.0,
3036 cost_output: 0.0,
3037 cost_cache_read: 0.5,
3038 cost_cache_write: 0.0,
3039 context_window: 202752,
3040 max_tokens: 131072,
3041 },
3042 ModelEntry {
3043 id: "accounts/fireworks/models/glm-5p1",
3044 name: "GLM 5.1",
3045 api: Api::AnthropicMessages,
3046 provider: "fireworks",
3047 reasoning: true,
3048 input: &[InputModality::Text],
3049 cost_input: 0.0,
3050 cost_output: 0.0,
3051 cost_cache_read: 0.26,
3052 cost_cache_write: 0.0,
3053 context_window: 202800,
3054 max_tokens: 131072,
3055 },
3056 ModelEntry {
3057 id: "accounts/fireworks/models/gpt-oss-120b",
3058 name: "GPT OSS 120B",
3059 api: Api::AnthropicMessages,
3060 provider: "fireworks",
3061 reasoning: true,
3062 input: &[InputModality::Text],
3063 cost_input: 0.0,
3064 cost_output: 0.0,
3065 cost_cache_read: 0.0,
3066 cost_cache_write: 0.0,
3067 context_window: 131072,
3068 max_tokens: 32768,
3069 },
3070 ModelEntry {
3071 id: "accounts/fireworks/models/gpt-oss-20b",
3072 name: "GPT OSS 20B",
3073 api: Api::AnthropicMessages,
3074 provider: "fireworks",
3075 reasoning: true,
3076 input: &[InputModality::Text],
3077 cost_input: 0.0,
3078 cost_output: 0.0,
3079 cost_cache_read: 0.0,
3080 cost_cache_write: 0.0,
3081 context_window: 131072,
3082 max_tokens: 32768,
3083 },
3084 ModelEntry {
3085 id: "accounts/fireworks/models/kimi-k2-instruct",
3086 name: "Kimi K2 Instruct",
3087 api: Api::AnthropicMessages,
3088 provider: "fireworks",
3089 reasoning: false,
3090 input: &[InputModality::Text],
3091 cost_input: 0.0,
3092 cost_output: 0.0,
3093 cost_cache_read: 0.0,
3094 cost_cache_write: 0.0,
3095 context_window: 128000,
3096 max_tokens: 16384,
3097 },
3098 ModelEntry {
3099 id: "accounts/fireworks/models/kimi-k2-thinking",
3100 name: "Kimi K2 Thinking",
3101 api: Api::AnthropicMessages,
3102 provider: "fireworks",
3103 reasoning: true,
3104 input: &[InputModality::Text],
3105 cost_input: 0.0,
3106 cost_output: 0.0,
3107 cost_cache_read: 0.3,
3108 cost_cache_write: 0.0,
3109 context_window: 256000,
3110 max_tokens: 256000,
3111 },
3112 ModelEntry {
3113 id: "accounts/fireworks/models/kimi-k2p5",
3114 name: "Kimi K2.5",
3115 api: Api::AnthropicMessages,
3116 provider: "fireworks",
3117 reasoning: true,
3118 input: &[InputModality::Text, InputModality::Image],
3119 cost_input: 0.0,
3120 cost_output: 0.0,
3121 cost_cache_read: 0.1,
3122 cost_cache_write: 0.0,
3123 context_window: 256000,
3124 max_tokens: 256000,
3125 },
3126 ModelEntry {
3127 id: "accounts/fireworks/models/kimi-k2p6",
3128 name: "Kimi K2.6",
3129 api: Api::AnthropicMessages,
3130 provider: "fireworks",
3131 reasoning: true,
3132 input: &[InputModality::Text, InputModality::Image],
3133 cost_input: 0.0,
3134 cost_output: 0.0,
3135 cost_cache_read: 0.16,
3136 cost_cache_write: 0.0,
3137 context_window: 262000,
3138 max_tokens: 262000,
3139 },
3140 ModelEntry {
3141 id: "accounts/fireworks/models/minimax-m2p1",
3142 name: "MiniMax-M2.1",
3143 api: Api::AnthropicMessages,
3144 provider: "fireworks",
3145 reasoning: true,
3146 input: &[InputModality::Text],
3147 cost_input: 0.0,
3148 cost_output: 0.0,
3149 cost_cache_read: 0.03,
3150 cost_cache_write: 0.0,
3151 context_window: 200000,
3152 max_tokens: 200000,
3153 },
3154 ModelEntry {
3155 id: "accounts/fireworks/models/minimax-m2p5",
3156 name: "MiniMax-M2.5",
3157 api: Api::AnthropicMessages,
3158 provider: "fireworks",
3159 reasoning: true,
3160 input: &[InputModality::Text],
3161 cost_input: 0.0,
3162 cost_output: 0.0,
3163 cost_cache_read: 0.03,
3164 cost_cache_write: 0.0,
3165 context_window: 196608,
3166 max_tokens: 196608,
3167 },
3168 ModelEntry {
3169 id: "accounts/fireworks/models/minimax-m2p7",
3170 name: "MiniMax-M2.7",
3171 api: Api::AnthropicMessages,
3172 provider: "fireworks",
3173 reasoning: true,
3174 input: &[InputModality::Text],
3175 cost_input: 0.0,
3176 cost_output: 0.0,
3177 cost_cache_read: 0.03,
3178 cost_cache_write: 0.0,
3179 context_window: 196608,
3180 max_tokens: 196608,
3181 },
3182 ModelEntry {
3183 id: "accounts/fireworks/models/qwen3p6-plus",
3184 name: "Qwen 3.6 Plus",
3185 api: Api::AnthropicMessages,
3186 provider: "fireworks",
3187 reasoning: true,
3188 input: &[InputModality::Text, InputModality::Image],
3189 cost_input: 0.0,
3190 cost_output: 0.0,
3191 cost_cache_read: 0.1,
3192 cost_cache_write: 0.0,
3193 context_window: 128000,
3194 max_tokens: 8192,
3195 },
3196 ModelEntry {
3197 id: "accounts/fireworks/routers/kimi-k2p5-turbo",
3198 name: "Kimi K2.5 Turbo",
3199 api: Api::AnthropicMessages,
3200 provider: "fireworks",
3201 reasoning: true,
3202 input: &[InputModality::Text, InputModality::Image],
3203 cost_input: 0.0,
3204 cost_output: 0.0,
3205 cost_cache_read: 0.0,
3206 cost_cache_write: 0.0,
3207 context_window: 256000,
3208 max_tokens: 256000,
3209 },
3210 ModelEntry {
3211 id: "accounts/fireworks/models/deepseek-v4-flash",
3212 name: "DeepSeek V4 Flash",
3213 api: Api::AnthropicMessages,
3214 provider: "fireworks",
3215 reasoning: true,
3216 input: &[InputModality::Text],
3217 cost_input: 0.14,
3218 cost_output: 0.28,
3219 cost_cache_read: 0.03,
3220 cost_cache_write: 0.0,
3221 context_window: 1000000,
3222 max_tokens: 384000,
3223 },
3224 ModelEntry {
3225 id: "accounts/fireworks/routers/glm-5p1-fast",
3226 name: "GLM 5.1 Fast",
3227 api: Api::AnthropicMessages,
3228 provider: "fireworks",
3229 reasoning: true,
3230 input: &[InputModality::Text],
3231 cost_input: 2.8,
3232 cost_output: 8.8,
3233 cost_cache_read: 0.52,
3234 cost_cache_write: 0.0,
3235 context_window: 202800,
3236 max_tokens: 131072,
3237 },
3238 ModelEntry {
3239 id: "accounts/fireworks/routers/kimi-k2p6-turbo",
3240 name: "Kimi K2.6 Turbo",
3241 api: Api::AnthropicMessages,
3242 provider: "fireworks",
3243 reasoning: true,
3244 input: &[InputModality::Text, InputModality::Image],
3245 cost_input: 2.0,
3246 cost_output: 8.0,
3247 cost_cache_read: 0.3,
3248 cost_cache_write: 0.0,
3249 context_window: 262000,
3250 max_tokens: 262000,
3251 },
3252];
3253
3254static GITHUB_COPILOT_MODELS: &[ModelEntry] = &[
3256 ModelEntry {
3257 id: "claude-haiku-4.5",
3258 name: "Claude Haiku 4.5",
3259 api: Api::AnthropicMessages,
3260 provider: "github-copilot",
3261 reasoning: true,
3262 input: &[InputModality::Text, InputModality::Image],
3263 cost_input: 0.0,
3264 cost_output: 0.0,
3265 cost_cache_read: 0.0,
3266 cost_cache_write: 0.0,
3267 context_window: 144000,
3268 max_tokens: 32000,
3269 },
3270 ModelEntry {
3271 id: "claude-opus-4.5",
3272 name: "Claude Opus 4.5",
3273 api: Api::AnthropicMessages,
3274 provider: "github-copilot",
3275 reasoning: true,
3276 input: &[InputModality::Text, InputModality::Image],
3277 cost_input: 0.0,
3278 cost_output: 0.0,
3279 cost_cache_read: 0.0,
3280 cost_cache_write: 0.0,
3281 context_window: 160000,
3282 max_tokens: 32000,
3283 },
3284 ModelEntry {
3285 id: "claude-opus-4.6",
3286 name: "Claude Opus 4.6",
3287 api: Api::AnthropicMessages,
3288 provider: "github-copilot",
3289 reasoning: true,
3290 input: &[InputModality::Text, InputModality::Image],
3291 cost_input: 0.0,
3292 cost_output: 0.0,
3293 cost_cache_read: 0.0,
3294 cost_cache_write: 0.0,
3295 context_window: 1000000,
3296 max_tokens: 64000,
3297 },
3298 ModelEntry {
3299 id: "claude-opus-4.7",
3300 name: "Claude Opus 4.7",
3301 api: Api::AnthropicMessages,
3302 provider: "github-copilot",
3303 reasoning: true,
3304 input: &[InputModality::Text, InputModality::Image],
3305 cost_input: 0.0,
3306 cost_output: 0.0,
3307 cost_cache_read: 0.0,
3308 cost_cache_write: 0.0,
3309 context_window: 144000,
3310 max_tokens: 64000,
3311 },
3312 ModelEntry {
3313 id: "claude-sonnet-4",
3314 name: "Claude Sonnet 4",
3315 api: Api::AnthropicMessages,
3316 provider: "github-copilot",
3317 reasoning: true,
3318 input: &[InputModality::Text, InputModality::Image],
3319 cost_input: 0.0,
3320 cost_output: 0.0,
3321 cost_cache_read: 0.0,
3322 cost_cache_write: 0.0,
3323 context_window: 216000,
3324 max_tokens: 16000,
3325 },
3326 ModelEntry {
3327 id: "claude-sonnet-4.5",
3328 name: "Claude Sonnet 4.5",
3329 api: Api::AnthropicMessages,
3330 provider: "github-copilot",
3331 reasoning: true,
3332 input: &[InputModality::Text, InputModality::Image],
3333 cost_input: 0.0,
3334 cost_output: 0.0,
3335 cost_cache_read: 0.0,
3336 cost_cache_write: 0.0,
3337 context_window: 144000,
3338 max_tokens: 32000,
3339 },
3340 ModelEntry {
3341 id: "claude-sonnet-4.6",
3342 name: "Claude Sonnet 4.6",
3343 api: Api::AnthropicMessages,
3344 provider: "github-copilot",
3345 reasoning: true,
3346 input: &[InputModality::Text, InputModality::Image],
3347 cost_input: 0.0,
3348 cost_output: 0.0,
3349 cost_cache_read: 0.0,
3350 cost_cache_write: 0.0,
3351 context_window: 1000000,
3352 max_tokens: 32000,
3353 },
3354 ModelEntry {
3355 id: "gemini-2.5-pro",
3356 name: "Gemini 2.5 Pro",
3357 api: Api::OpenAiCompletions,
3358 provider: "github-copilot",
3359 reasoning: false,
3360 input: &[InputModality::Text, InputModality::Image],
3361 cost_input: 0.0,
3362 cost_output: 0.0,
3363 cost_cache_read: 0.0,
3364 cost_cache_write: 0.0,
3365 context_window: 128000,
3366 max_tokens: 64000,
3367 },
3368 ModelEntry {
3369 id: "gemini-3-flash-preview",
3370 name: "Gemini 3 Flash",
3371 api: Api::OpenAiCompletions,
3372 provider: "github-copilot",
3373 reasoning: true,
3374 input: &[InputModality::Text, InputModality::Image],
3375 cost_input: 0.0,
3376 cost_output: 0.0,
3377 cost_cache_read: 0.0,
3378 cost_cache_write: 0.0,
3379 context_window: 128000,
3380 max_tokens: 64000,
3381 },
3382 ModelEntry {
3383 id: "gemini-3-pro-preview",
3384 name: "Gemini 3 Pro Preview",
3385 api: Api::OpenAiCompletions,
3386 provider: "github-copilot",
3387 reasoning: true,
3388 input: &[InputModality::Text, InputModality::Image],
3389 cost_input: 0.0,
3390 cost_output: 0.0,
3391 cost_cache_read: 0.0,
3392 cost_cache_write: 0.0,
3393 context_window: 128000,
3394 max_tokens: 64000,
3395 },
3396 ModelEntry {
3397 id: "gemini-3.1-pro-preview",
3398 name: "Gemini 3.1 Pro Preview",
3399 api: Api::OpenAiCompletions,
3400 provider: "github-copilot",
3401 reasoning: true,
3402 input: &[InputModality::Text, InputModality::Image],
3403 cost_input: 0.0,
3404 cost_output: 0.0,
3405 cost_cache_read: 0.0,
3406 cost_cache_write: 0.0,
3407 context_window: 128000,
3408 max_tokens: 64000,
3409 },
3410 ModelEntry {
3411 id: "gpt-4.1",
3412 name: "GPT-4.1",
3413 api: Api::OpenAiCompletions,
3414 provider: "github-copilot",
3415 reasoning: false,
3416 input: &[InputModality::Text, InputModality::Image],
3417 cost_input: 0.0,
3418 cost_output: 0.0,
3419 cost_cache_read: 0.0,
3420 cost_cache_write: 0.0,
3421 context_window: 128000,
3422 max_tokens: 16384,
3423 },
3424 ModelEntry {
3425 id: "gpt-4o",
3426 name: "GPT-4o",
3427 api: Api::OpenAiCompletions,
3428 provider: "github-copilot",
3429 reasoning: false,
3430 input: &[InputModality::Text, InputModality::Image],
3431 cost_input: 0.0,
3432 cost_output: 0.0,
3433 cost_cache_read: 0.0,
3434 cost_cache_write: 0.0,
3435 context_window: 128000,
3436 max_tokens: 4096,
3437 },
3438 ModelEntry {
3439 id: "gpt-5",
3440 name: "GPT-5",
3441 api: Api::OpenAiResponses,
3442 provider: "github-copilot",
3443 reasoning: true,
3444 input: &[InputModality::Text, InputModality::Image],
3445 cost_input: 0.0,
3446 cost_output: 0.0,
3447 cost_cache_read: 0.0,
3448 cost_cache_write: 0.0,
3449 context_window: 128000,
3450 max_tokens: 128000,
3451 },
3452 ModelEntry {
3453 id: "gpt-5-mini",
3454 name: "GPT-5-mini",
3455 api: Api::OpenAiResponses,
3456 provider: "github-copilot",
3457 reasoning: true,
3458 input: &[InputModality::Text, InputModality::Image],
3459 cost_input: 0.0,
3460 cost_output: 0.0,
3461 cost_cache_read: 0.0,
3462 cost_cache_write: 0.0,
3463 context_window: 264000,
3464 max_tokens: 64000,
3465 },
3466 ModelEntry {
3467 id: "gpt-5.1",
3468 name: "GPT-5.1",
3469 api: Api::OpenAiResponses,
3470 provider: "github-copilot",
3471 reasoning: true,
3472 input: &[InputModality::Text, InputModality::Image],
3473 cost_input: 0.0,
3474 cost_output: 0.0,
3475 cost_cache_read: 0.0,
3476 cost_cache_write: 0.0,
3477 context_window: 264000,
3478 max_tokens: 64000,
3479 },
3480 ModelEntry {
3481 id: "gpt-5.1-codex",
3482 name: "GPT-5.1-Codex",
3483 api: Api::OpenAiResponses,
3484 provider: "github-copilot",
3485 reasoning: true,
3486 input: &[InputModality::Text, InputModality::Image],
3487 cost_input: 0.0,
3488 cost_output: 0.0,
3489 cost_cache_read: 0.0,
3490 cost_cache_write: 0.0,
3491 context_window: 400000,
3492 max_tokens: 128000,
3493 },
3494 ModelEntry {
3495 id: "gpt-5.1-codex-max",
3496 name: "GPT-5.1-Codex-max",
3497 api: Api::OpenAiResponses,
3498 provider: "github-copilot",
3499 reasoning: true,
3500 input: &[InputModality::Text, InputModality::Image],
3501 cost_input: 0.0,
3502 cost_output: 0.0,
3503 cost_cache_read: 0.0,
3504 cost_cache_write: 0.0,
3505 context_window: 400000,
3506 max_tokens: 128000,
3507 },
3508 ModelEntry {
3509 id: "gpt-5.1-codex-mini",
3510 name: "GPT-5.1-Codex-mini",
3511 api: Api::OpenAiResponses,
3512 provider: "github-copilot",
3513 reasoning: true,
3514 input: &[InputModality::Text, InputModality::Image],
3515 cost_input: 0.0,
3516 cost_output: 0.0,
3517 cost_cache_read: 0.0,
3518 cost_cache_write: 0.0,
3519 context_window: 400000,
3520 max_tokens: 128000,
3521 },
3522 ModelEntry {
3523 id: "gpt-5.2",
3524 name: "GPT-5.2",
3525 api: Api::OpenAiResponses,
3526 provider: "github-copilot",
3527 reasoning: true,
3528 input: &[InputModality::Text, InputModality::Image],
3529 cost_input: 0.0,
3530 cost_output: 0.0,
3531 cost_cache_read: 0.0,
3532 cost_cache_write: 0.0,
3533 context_window: 264000,
3534 max_tokens: 64000,
3535 },
3536 ModelEntry {
3537 id: "gpt-5.2-codex",
3538 name: "GPT-5.2-Codex",
3539 api: Api::OpenAiResponses,
3540 provider: "github-copilot",
3541 reasoning: true,
3542 input: &[InputModality::Text, InputModality::Image],
3543 cost_input: 0.0,
3544 cost_output: 0.0,
3545 cost_cache_read: 0.0,
3546 cost_cache_write: 0.0,
3547 context_window: 400000,
3548 max_tokens: 128000,
3549 },
3550 ModelEntry {
3551 id: "gpt-5.3-codex",
3552 name: "GPT-5.3-Codex",
3553 api: Api::OpenAiResponses,
3554 provider: "github-copilot",
3555 reasoning: true,
3556 input: &[InputModality::Text, InputModality::Image],
3557 cost_input: 0.0,
3558 cost_output: 0.0,
3559 cost_cache_read: 0.0,
3560 cost_cache_write: 0.0,
3561 context_window: 400000,
3562 max_tokens: 128000,
3563 },
3564 ModelEntry {
3565 id: "gpt-5.4",
3566 name: "GPT-5.4",
3567 api: Api::OpenAiResponses,
3568 provider: "github-copilot",
3569 reasoning: true,
3570 input: &[InputModality::Text, InputModality::Image],
3571 cost_input: 0.0,
3572 cost_output: 0.0,
3573 cost_cache_read: 0.0,
3574 cost_cache_write: 0.0,
3575 context_window: 400000,
3576 max_tokens: 128000,
3577 },
3578 ModelEntry {
3579 id: "gpt-5.4-mini",
3580 name: "GPT-5.4 Mini",
3581 api: Api::OpenAiResponses,
3582 provider: "github-copilot",
3583 reasoning: true,
3584 input: &[InputModality::Text, InputModality::Image],
3585 cost_input: 0.0,
3586 cost_output: 0.0,
3587 cost_cache_read: 0.0,
3588 cost_cache_write: 0.0,
3589 context_window: 400000,
3590 max_tokens: 128000,
3591 },
3592 ModelEntry {
3593 id: "gpt-5.5",
3594 name: "GPT-5.5",
3595 api: Api::OpenAiResponses,
3596 provider: "github-copilot",
3597 reasoning: true,
3598 input: &[InputModality::Text, InputModality::Image],
3599 cost_input: 0.0,
3600 cost_output: 0.0,
3601 cost_cache_read: 0.0,
3602 cost_cache_write: 0.0,
3603 context_window: 400000,
3604 max_tokens: 128000,
3605 },
3606 ModelEntry {
3607 id: "grok-code-fast-1",
3608 name: "Grok Code Fast 1",
3609 api: Api::OpenAiCompletions,
3610 provider: "github-copilot",
3611 reasoning: true,
3612 input: &[InputModality::Text],
3613 cost_input: 0.0,
3614 cost_output: 0.0,
3615 cost_cache_read: 0.0,
3616 cost_cache_write: 0.0,
3617 context_window: 128000,
3618 max_tokens: 64000,
3619 },
3620 ModelEntry {
3621 id: "gemini-3.5-flash",
3622 name: "Gemini 3.5 Flash",
3623 api: Api::OpenAiCompletions,
3624 provider: "github-copilot",
3625 reasoning: true,
3626 input: &[InputModality::Text, InputModality::Image],
3627 cost_input: 0.0,
3628 cost_output: 0.0,
3629 cost_cache_read: 0.0,
3630 cost_cache_write: 0.0,
3631 context_window: 128000,
3632 max_tokens: 64000,
3633 },
3634];
3635
3636static GOOGLE_MODELS: &[ModelEntry] = &[
3638 ModelEntry {
3639 id: "gemini-1.5-flash",
3640 name: "Gemini 1.5 Flash",
3641 api: Api::GoogleGenerativeAi,
3642 provider: "google",
3643 reasoning: false,
3644 input: &[InputModality::Text, InputModality::Image],
3645 cost_input: 0.0,
3646 cost_output: 0.0,
3647 cost_cache_read: 0.01875,
3648 cost_cache_write: 0.0,
3649 context_window: 1000000,
3650 max_tokens: 8192,
3651 },
3652 ModelEntry {
3653 id: "gemini-1.5-flash-8b",
3654 name: "Gemini 1.5 Flash-8B",
3655 api: Api::GoogleGenerativeAi,
3656 provider: "google",
3657 reasoning: false,
3658 input: &[InputModality::Text, InputModality::Image],
3659 cost_input: 0.0,
3660 cost_output: 0.0,
3661 cost_cache_read: 0.01,
3662 cost_cache_write: 0.0,
3663 context_window: 1000000,
3664 max_tokens: 8192,
3665 },
3666 ModelEntry {
3667 id: "gemini-1.5-pro",
3668 name: "Gemini 1.5 Pro",
3669 api: Api::GoogleGenerativeAi,
3670 provider: "google",
3671 reasoning: false,
3672 input: &[InputModality::Text, InputModality::Image],
3673 cost_input: 0.0,
3674 cost_output: 0.0,
3675 cost_cache_read: 0.3125,
3676 cost_cache_write: 0.0,
3677 context_window: 1000000,
3678 max_tokens: 8192,
3679 },
3680 ModelEntry {
3681 id: "gemini-2.0-flash",
3682 name: "Gemini 2.0 Flash",
3683 api: Api::GoogleGenerativeAi,
3684 provider: "google",
3685 reasoning: false,
3686 input: &[InputModality::Text, InputModality::Image],
3687 cost_input: 0.0,
3688 cost_output: 0.0,
3689 cost_cache_read: 0.025,
3690 cost_cache_write: 0.0,
3691 context_window: 1048576,
3692 max_tokens: 8192,
3693 },
3694 ModelEntry {
3695 id: "gemini-2.0-flash-lite",
3696 name: "Gemini 2.0 Flash Lite",
3697 api: Api::GoogleGenerativeAi,
3698 provider: "google",
3699 reasoning: false,
3700 input: &[InputModality::Text, InputModality::Image],
3701 cost_input: 0.0,
3702 cost_output: 0.0,
3703 cost_cache_read: 0.0,
3704 cost_cache_write: 0.0,
3705 context_window: 1048576,
3706 max_tokens: 8192,
3707 },
3708 ModelEntry {
3709 id: "gemini-2.5-flash",
3710 name: "Gemini 2.5 Flash",
3711 api: Api::GoogleGenerativeAi,
3712 provider: "google",
3713 reasoning: true,
3714 input: &[InputModality::Text, InputModality::Image],
3715 cost_input: 0.0,
3716 cost_output: 0.0,
3717 cost_cache_read: 0.03,
3718 cost_cache_write: 0.0,
3719 context_window: 1048576,
3720 max_tokens: 65536,
3721 },
3722 ModelEntry {
3723 id: "gemini-2.5-flash-lite",
3724 name: "Gemini 2.5 Flash Lite",
3725 api: Api::GoogleGenerativeAi,
3726 provider: "google",
3727 reasoning: true,
3728 input: &[InputModality::Text, InputModality::Image],
3729 cost_input: 0.0,
3730 cost_output: 0.0,
3731 cost_cache_read: 0.025,
3732 cost_cache_write: 0.0,
3733 context_window: 1048576,
3734 max_tokens: 65536,
3735 },
3736 ModelEntry {
3737 id: "gemini-2.5-flash-lite-preview-06-17",
3738 name: "Gemini 2.5 Flash Lite Preview 06-17",
3739 api: Api::GoogleGenerativeAi,
3740 provider: "google",
3741 reasoning: true,
3742 input: &[InputModality::Text, InputModality::Image],
3743 cost_input: 0.0,
3744 cost_output: 0.0,
3745 cost_cache_read: 0.025,
3746 cost_cache_write: 0.0,
3747 context_window: 1048576,
3748 max_tokens: 65536,
3749 },
3750 ModelEntry {
3751 id: "gemini-2.5-flash-lite-preview-09-2025",
3752 name: "Gemini 2.5 Flash Lite Preview 09-25",
3753 api: Api::GoogleGenerativeAi,
3754 provider: "google",
3755 reasoning: true,
3756 input: &[InputModality::Text, InputModality::Image],
3757 cost_input: 0.0,
3758 cost_output: 0.0,
3759 cost_cache_read: 0.025,
3760 cost_cache_write: 0.0,
3761 context_window: 1048576,
3762 max_tokens: 65536,
3763 },
3764 ModelEntry {
3765 id: "gemini-2.5-flash-preview-04-17",
3766 name: "Gemini 2.5 Flash Preview 04-17",
3767 api: Api::GoogleGenerativeAi,
3768 provider: "google",
3769 reasoning: true,
3770 input: &[InputModality::Text, InputModality::Image],
3771 cost_input: 0.0,
3772 cost_output: 0.0,
3773 cost_cache_read: 0.0375,
3774 cost_cache_write: 0.0,
3775 context_window: 1048576,
3776 max_tokens: 65536,
3777 },
3778 ModelEntry {
3779 id: "gemini-2.5-flash-preview-05-20",
3780 name: "Gemini 2.5 Flash Preview 05-20",
3781 api: Api::GoogleGenerativeAi,
3782 provider: "google",
3783 reasoning: true,
3784 input: &[InputModality::Text, InputModality::Image],
3785 cost_input: 0.0,
3786 cost_output: 0.0,
3787 cost_cache_read: 0.0375,
3788 cost_cache_write: 0.0,
3789 context_window: 1048576,
3790 max_tokens: 65536,
3791 },
3792 ModelEntry {
3793 id: "gemini-2.5-flash-preview-09-2025",
3794 name: "Gemini 2.5 Flash Preview 09-25",
3795 api: Api::GoogleGenerativeAi,
3796 provider: "google",
3797 reasoning: true,
3798 input: &[InputModality::Text, InputModality::Image],
3799 cost_input: 0.0,
3800 cost_output: 0.0,
3801 cost_cache_read: 0.075,
3802 cost_cache_write: 0.0,
3803 context_window: 1048576,
3804 max_tokens: 65536,
3805 },
3806 ModelEntry {
3807 id: "gemini-2.5-pro",
3808 name: "Gemini 2.5 Pro",
3809 api: Api::GoogleGenerativeAi,
3810 provider: "google",
3811 reasoning: true,
3812 input: &[InputModality::Text, InputModality::Image],
3813 cost_input: 0.0,
3814 cost_output: 0.0,
3815 cost_cache_read: 0.125,
3816 cost_cache_write: 0.0,
3817 context_window: 1048576,
3818 max_tokens: 65536,
3819 },
3820 ModelEntry {
3821 id: "gemini-2.5-pro-preview-05-06",
3822 name: "Gemini 2.5 Pro Preview 05-06",
3823 api: Api::GoogleGenerativeAi,
3824 provider: "google",
3825 reasoning: true,
3826 input: &[InputModality::Text, InputModality::Image],
3827 cost_input: 0.0,
3828 cost_output: 0.0,
3829 cost_cache_read: 0.31,
3830 cost_cache_write: 0.0,
3831 context_window: 1048576,
3832 max_tokens: 65536,
3833 },
3834 ModelEntry {
3835 id: "gemini-2.5-pro-preview-06-05",
3836 name: "Gemini 2.5 Pro Preview 06-05",
3837 api: Api::GoogleGenerativeAi,
3838 provider: "google",
3839 reasoning: true,
3840 input: &[InputModality::Text, InputModality::Image],
3841 cost_input: 0.0,
3842 cost_output: 0.0,
3843 cost_cache_read: 0.31,
3844 cost_cache_write: 0.0,
3845 context_window: 1048576,
3846 max_tokens: 65536,
3847 },
3848 ModelEntry {
3849 id: "gemini-3-flash-preview",
3850 name: "Gemini 3 Flash Preview",
3851 api: Api::GoogleGenerativeAi,
3852 provider: "google",
3853 reasoning: true,
3854 input: &[InputModality::Text, InputModality::Image],
3855 cost_input: 0.0,
3856 cost_output: 0.0,
3857 cost_cache_read: 0.05,
3858 cost_cache_write: 0.0,
3859 context_window: 1048576,
3860 max_tokens: 65536,
3861 },
3862 ModelEntry {
3863 id: "gemini-3-pro-preview",
3864 name: "Gemini 3 Pro Preview",
3865 api: Api::GoogleGenerativeAi,
3866 provider: "google",
3867 reasoning: true,
3868 input: &[InputModality::Text, InputModality::Image],
3869 cost_input: 0.0,
3870 cost_output: 0.0,
3871 cost_cache_read: 0.2,
3872 cost_cache_write: 0.0,
3873 context_window: 1000000,
3874 max_tokens: 64000,
3875 },
3876 ModelEntry {
3877 id: "gemini-3.1-flash-lite-preview",
3878 name: "Gemini 3.1 Flash Lite Preview",
3879 api: Api::GoogleGenerativeAi,
3880 provider: "google",
3881 reasoning: true,
3882 input: &[InputModality::Text, InputModality::Image],
3883 cost_input: 0.0,
3884 cost_output: 0.0,
3885 cost_cache_read: 0.025,
3886 cost_cache_write: 1.0,
3887 context_window: 1048576,
3888 max_tokens: 65536,
3889 },
3890 ModelEntry {
3891 id: "gemini-3.1-pro-preview",
3892 name: "Gemini 3.1 Pro Preview",
3893 api: Api::GoogleGenerativeAi,
3894 provider: "google",
3895 reasoning: true,
3896 input: &[InputModality::Text, InputModality::Image],
3897 cost_input: 0.0,
3898 cost_output: 0.0,
3899 cost_cache_read: 0.2,
3900 cost_cache_write: 0.0,
3901 context_window: 1048576,
3902 max_tokens: 65536,
3903 },
3904 ModelEntry {
3905 id: "gemini-3.1-pro-preview-customtools",
3906 name: "Gemini 3.1 Pro Preview Custom Tools",
3907 api: Api::GoogleGenerativeAi,
3908 provider: "google",
3909 reasoning: true,
3910 input: &[InputModality::Text, InputModality::Image],
3911 cost_input: 0.0,
3912 cost_output: 0.0,
3913 cost_cache_read: 0.2,
3914 cost_cache_write: 0.0,
3915 context_window: 1048576,
3916 max_tokens: 65536,
3917 },
3918 ModelEntry {
3919 id: "gemini-flash-latest",
3920 name: "Gemini Flash Latest",
3921 api: Api::GoogleGenerativeAi,
3922 provider: "google",
3923 reasoning: true,
3924 input: &[InputModality::Text, InputModality::Image],
3925 cost_input: 0.0,
3926 cost_output: 0.0,
3927 cost_cache_read: 0.075,
3928 cost_cache_write: 0.0,
3929 context_window: 1048576,
3930 max_tokens: 65536,
3931 },
3932 ModelEntry {
3933 id: "gemini-flash-lite-latest",
3934 name: "Gemini Flash-Lite Latest",
3935 api: Api::GoogleGenerativeAi,
3936 provider: "google",
3937 reasoning: true,
3938 input: &[InputModality::Text, InputModality::Image],
3939 cost_input: 0.0,
3940 cost_output: 0.0,
3941 cost_cache_read: 0.025,
3942 cost_cache_write: 0.0,
3943 context_window: 1048576,
3944 max_tokens: 65536,
3945 },
3946 ModelEntry {
3947 id: "gemini-live-2.5-flash",
3948 name: "Gemini Live 2.5 Flash",
3949 api: Api::GoogleGenerativeAi,
3950 provider: "google",
3951 reasoning: true,
3952 input: &[InputModality::Text, InputModality::Image],
3953 cost_input: 0.0,
3954 cost_output: 0.0,
3955 cost_cache_read: 0.0,
3956 cost_cache_write: 0.0,
3957 context_window: 128000,
3958 max_tokens: 8000,
3959 },
3960 ModelEntry {
3961 id: "gemini-live-2.5-flash-preview-native-audio",
3962 name: "Gemini Live 2.5 Flash Preview Native Audio",
3963 api: Api::GoogleGenerativeAi,
3964 provider: "google",
3965 reasoning: true,
3966 input: &[InputModality::Text],
3967 cost_input: 0.0,
3968 cost_output: 0.0,
3969 cost_cache_read: 0.0,
3970 cost_cache_write: 0.0,
3971 context_window: 131072,
3972 max_tokens: 65536,
3973 },
3974 ModelEntry {
3975 id: "gemma-3-27b-it",
3976 name: "Gemma 3 27B",
3977 api: Api::GoogleGenerativeAi,
3978 provider: "google",
3979 reasoning: false,
3980 input: &[InputModality::Text, InputModality::Image],
3981 cost_input: 0.0,
3982 cost_output: 0.0,
3983 cost_cache_read: 0.0,
3984 cost_cache_write: 0.0,
3985 context_window: 131072,
3986 max_tokens: 8192,
3987 },
3988 ModelEntry {
3989 id: "gemma-4-26b-a4b-it",
3990 name: "Gemma 4 26B",
3991 api: Api::GoogleGenerativeAi,
3992 provider: "google",
3993 reasoning: true,
3994 input: &[InputModality::Text, InputModality::Image],
3995 cost_input: 0.0,
3996 cost_output: 0.0,
3997 cost_cache_read: 0.0,
3998 cost_cache_write: 0.0,
3999 context_window: 256000,
4000 max_tokens: 8192,
4001 },
4002 ModelEntry {
4003 id: "gemma-4-31b-it",
4004 name: "Gemma 4 31B",
4005 api: Api::GoogleGenerativeAi,
4006 provider: "google",
4007 reasoning: true,
4008 input: &[InputModality::Text, InputModality::Image],
4009 cost_input: 0.0,
4010 cost_output: 0.0,
4011 cost_cache_read: 0.0,
4012 cost_cache_write: 0.0,
4013 context_window: 256000,
4014 max_tokens: 8192,
4015 },
4016 ModelEntry {
4017 id: "gemini-3.1-flash-lite",
4018 name: "Gemini 3.1 Flash Lite",
4019 api: Api::GoogleGenerativeAi,
4020 provider: "google",
4021 reasoning: true,
4022 input: &[InputModality::Text, InputModality::Image],
4023 cost_input: 0.25,
4024 cost_output: 1.5,
4025 cost_cache_read: 0.025,
4026 cost_cache_write: 0.0,
4027 context_window: 1048576,
4028 max_tokens: 65536,
4029 },
4030 ModelEntry {
4031 id: "gemini-3.5-flash",
4032 name: "Gemini 3.5 Flash",
4033 api: Api::GoogleGenerativeAi,
4034 provider: "google",
4035 reasoning: true,
4036 input: &[InputModality::Text, InputModality::Image],
4037 cost_input: 1.5,
4038 cost_output: 9.0,
4039 cost_cache_read: 0.15,
4040 cost_cache_write: 0.0,
4041 context_window: 1048576,
4042 max_tokens: 65536,
4043 },
4044];
4045
4046static GOOGLE_VERTEX_MODELS: &[ModelEntry] = &[
4048 ModelEntry {
4049 id: "gemini-1.5-flash",
4050 name: "Gemini 1.5 Flash (Vertex)",
4051 api: Api::GoogleVertex,
4052 provider: "google-vertex",
4053 reasoning: false,
4054 input: &[InputModality::Text, InputModality::Image],
4055 cost_input: 0.0,
4056 cost_output: 0.0,
4057 cost_cache_read: 0.01875,
4058 cost_cache_write: 0.0,
4059 context_window: 1000000,
4060 max_tokens: 8192,
4061 },
4062 ModelEntry {
4063 id: "gemini-1.5-flash-8b",
4064 name: "Gemini 1.5 Flash-8B (Vertex)",
4065 api: Api::GoogleVertex,
4066 provider: "google-vertex",
4067 reasoning: false,
4068 input: &[InputModality::Text, InputModality::Image],
4069 cost_input: 0.0,
4070 cost_output: 0.0,
4071 cost_cache_read: 0.01,
4072 cost_cache_write: 0.0,
4073 context_window: 1000000,
4074 max_tokens: 8192,
4075 },
4076 ModelEntry {
4077 id: "gemini-1.5-pro",
4078 name: "Gemini 1.5 Pro (Vertex)",
4079 api: Api::GoogleVertex,
4080 provider: "google-vertex",
4081 reasoning: false,
4082 input: &[InputModality::Text, InputModality::Image],
4083 cost_input: 0.0,
4084 cost_output: 0.0,
4085 cost_cache_read: 0.3125,
4086 cost_cache_write: 0.0,
4087 context_window: 1000000,
4088 max_tokens: 8192,
4089 },
4090 ModelEntry {
4091 id: "gemini-2.0-flash",
4092 name: "Gemini 2.0 Flash (Vertex)",
4093 api: Api::GoogleVertex,
4094 provider: "google-vertex",
4095 reasoning: false,
4096 input: &[InputModality::Text, InputModality::Image],
4097 cost_input: 0.0,
4098 cost_output: 0.0,
4099 cost_cache_read: 0.0375,
4100 cost_cache_write: 0.0,
4101 context_window: 1048576,
4102 max_tokens: 8192,
4103 },
4104 ModelEntry {
4105 id: "gemini-2.0-flash-lite",
4106 name: "Gemini 2.0 Flash Lite (Vertex)",
4107 api: Api::GoogleVertex,
4108 provider: "google-vertex",
4109 reasoning: true,
4110 input: &[InputModality::Text, InputModality::Image],
4111 cost_input: 0.0,
4112 cost_output: 0.0,
4113 cost_cache_read: 0.01875,
4114 cost_cache_write: 0.0,
4115 context_window: 1048576,
4116 max_tokens: 65536,
4117 },
4118 ModelEntry {
4119 id: "gemini-2.5-flash",
4120 name: "Gemini 2.5 Flash (Vertex)",
4121 api: Api::GoogleVertex,
4122 provider: "google-vertex",
4123 reasoning: true,
4124 input: &[InputModality::Text, InputModality::Image],
4125 cost_input: 0.0,
4126 cost_output: 0.0,
4127 cost_cache_read: 0.03,
4128 cost_cache_write: 0.0,
4129 context_window: 1048576,
4130 max_tokens: 65536,
4131 },
4132 ModelEntry {
4133 id: "gemini-2.5-flash-lite",
4134 name: "Gemini 2.5 Flash Lite (Vertex)",
4135 api: Api::GoogleVertex,
4136 provider: "google-vertex",
4137 reasoning: true,
4138 input: &[InputModality::Text, InputModality::Image],
4139 cost_input: 0.0,
4140 cost_output: 0.0,
4141 cost_cache_read: 0.01,
4142 cost_cache_write: 0.0,
4143 context_window: 1048576,
4144 max_tokens: 65536,
4145 },
4146 ModelEntry {
4147 id: "gemini-2.5-flash-lite-preview-09-2025",
4148 name: "Gemini 2.5 Flash Lite Preview 09-25 (Vertex)",
4149 api: Api::GoogleVertex,
4150 provider: "google-vertex",
4151 reasoning: true,
4152 input: &[InputModality::Text, InputModality::Image],
4153 cost_input: 0.0,
4154 cost_output: 0.0,
4155 cost_cache_read: 0.01,
4156 cost_cache_write: 0.0,
4157 context_window: 1048576,
4158 max_tokens: 65536,
4159 },
4160 ModelEntry {
4161 id: "gemini-2.5-pro",
4162 name: "Gemini 2.5 Pro (Vertex)",
4163 api: Api::GoogleVertex,
4164 provider: "google-vertex",
4165 reasoning: true,
4166 input: &[InputModality::Text, InputModality::Image],
4167 cost_input: 0.0,
4168 cost_output: 0.0,
4169 cost_cache_read: 0.125,
4170 cost_cache_write: 0.0,
4171 context_window: 1048576,
4172 max_tokens: 65536,
4173 },
4174 ModelEntry {
4175 id: "gemini-3-flash-preview",
4176 name: "Gemini 3 Flash Preview (Vertex)",
4177 api: Api::GoogleVertex,
4178 provider: "google-vertex",
4179 reasoning: true,
4180 input: &[InputModality::Text, InputModality::Image],
4181 cost_input: 0.0,
4182 cost_output: 0.0,
4183 cost_cache_read: 0.05,
4184 cost_cache_write: 0.0,
4185 context_window: 1048576,
4186 max_tokens: 65536,
4187 },
4188 ModelEntry {
4189 id: "gemini-3-pro-preview",
4190 name: "Gemini 3 Pro Preview (Vertex)",
4191 api: Api::GoogleVertex,
4192 provider: "google-vertex",
4193 reasoning: true,
4194 input: &[InputModality::Text, InputModality::Image],
4195 cost_input: 0.0,
4196 cost_output: 0.0,
4197 cost_cache_read: 0.2,
4198 cost_cache_write: 0.0,
4199 context_window: 1000000,
4200 max_tokens: 64000,
4201 },
4202 ModelEntry {
4203 id: "gemini-3.1-pro-preview",
4204 name: "Gemini 3.1 Pro Preview (Vertex)",
4205 api: Api::GoogleVertex,
4206 provider: "google-vertex",
4207 reasoning: true,
4208 input: &[InputModality::Text, InputModality::Image],
4209 cost_input: 0.0,
4210 cost_output: 0.0,
4211 cost_cache_read: 0.2,
4212 cost_cache_write: 0.0,
4213 context_window: 1048576,
4214 max_tokens: 65536,
4215 },
4216 ModelEntry {
4217 id: "gemini-3.1-pro-preview-customtools",
4218 name: "Gemini 3.1 Pro Preview Custom Tools (Vertex)",
4219 api: Api::GoogleVertex,
4220 provider: "google-vertex",
4221 reasoning: true,
4222 input: &[InputModality::Text, InputModality::Image],
4223 cost_input: 0.0,
4224 cost_output: 0.0,
4225 cost_cache_read: 0.2,
4226 cost_cache_write: 0.0,
4227 context_window: 1048576,
4228 max_tokens: 65536,
4229 },
4230];
4231
4232static GROQ_MODELS: &[ModelEntry] = &[
4234 ModelEntry {
4235 id: "deepseek-r1-distill-llama-70b",
4236 name: "DeepSeek R1 Distill Llama 70B",
4237 api: Api::OpenAiCompletions,
4238 provider: "groq",
4239 reasoning: true,
4240 input: &[InputModality::Text],
4241 cost_input: 0.0,
4242 cost_output: 0.0,
4243 cost_cache_read: 0.0,
4244 cost_cache_write: 0.0,
4245 context_window: 131072,
4246 max_tokens: 8192,
4247 },
4248 ModelEntry {
4249 id: "gemma2-9b-it",
4250 name: "Gemma 2 9B",
4251 api: Api::OpenAiCompletions,
4252 provider: "groq",
4253 reasoning: false,
4254 input: &[InputModality::Text],
4255 cost_input: 0.0,
4256 cost_output: 0.0,
4257 cost_cache_read: 0.0,
4258 cost_cache_write: 0.0,
4259 context_window: 8192,
4260 max_tokens: 8192,
4261 },
4262 ModelEntry {
4263 id: "groq/compound",
4264 name: "Compound",
4265 api: Api::OpenAiCompletions,
4266 provider: "groq",
4267 reasoning: true,
4268 input: &[InputModality::Text],
4269 cost_input: 0.0,
4270 cost_output: 0.0,
4271 cost_cache_read: 0.0,
4272 cost_cache_write: 0.0,
4273 context_window: 131072,
4274 max_tokens: 8192,
4275 },
4276 ModelEntry {
4277 id: "groq/compound-mini",
4278 name: "Compound Mini",
4279 api: Api::OpenAiCompletions,
4280 provider: "groq",
4281 reasoning: true,
4282 input: &[InputModality::Text],
4283 cost_input: 0.0,
4284 cost_output: 0.0,
4285 cost_cache_read: 0.0,
4286 cost_cache_write: 0.0,
4287 context_window: 131072,
4288 max_tokens: 8192,
4289 },
4290 ModelEntry {
4291 id: "llama-3.1-8b-instant",
4292 name: "Llama 3.1 8B Instant",
4293 api: Api::OpenAiCompletions,
4294 provider: "groq",
4295 reasoning: false,
4296 input: &[InputModality::Text],
4297 cost_input: 0.0,
4298 cost_output: 0.0,
4299 cost_cache_read: 0.0,
4300 cost_cache_write: 0.0,
4301 context_window: 131072,
4302 max_tokens: 131072,
4303 },
4304 ModelEntry {
4305 id: "llama-3.3-70b-versatile",
4306 name: "Llama 3.3 70B Versatile",
4307 api: Api::OpenAiCompletions,
4308 provider: "groq",
4309 reasoning: false,
4310 input: &[InputModality::Text],
4311 cost_input: 0.0,
4312 cost_output: 0.0,
4313 cost_cache_read: 0.0,
4314 cost_cache_write: 0.0,
4315 context_window: 131072,
4316 max_tokens: 32768,
4317 },
4318 ModelEntry {
4319 id: "llama3-70b-8192",
4320 name: "Llama 3 70B",
4321 api: Api::OpenAiCompletions,
4322 provider: "groq",
4323 reasoning: false,
4324 input: &[InputModality::Text],
4325 cost_input: 0.0,
4326 cost_output: 0.0,
4327 cost_cache_read: 0.0,
4328 cost_cache_write: 0.0,
4329 context_window: 8192,
4330 max_tokens: 8192,
4331 },
4332 ModelEntry {
4333 id: "llama3-8b-8192",
4334 name: "Llama 3 8B",
4335 api: Api::OpenAiCompletions,
4336 provider: "groq",
4337 reasoning: false,
4338 input: &[InputModality::Text],
4339 cost_input: 0.0,
4340 cost_output: 0.0,
4341 cost_cache_read: 0.0,
4342 cost_cache_write: 0.0,
4343 context_window: 8192,
4344 max_tokens: 8192,
4345 },
4346 ModelEntry {
4347 id: "meta-llama/llama-4-maverick-17b-128e-instruct",
4348 name: "Llama 4 Maverick 17B",
4349 api: Api::OpenAiCompletions,
4350 provider: "groq",
4351 reasoning: false,
4352 input: &[InputModality::Text, InputModality::Image],
4353 cost_input: 0.0,
4354 cost_output: 0.0,
4355 cost_cache_read: 0.0,
4356 cost_cache_write: 0.0,
4357 context_window: 131072,
4358 max_tokens: 8192,
4359 },
4360 ModelEntry {
4361 id: "meta-llama/llama-4-scout-17b-16e-instruct",
4362 name: "Llama 4 Scout 17B",
4363 api: Api::OpenAiCompletions,
4364 provider: "groq",
4365 reasoning: false,
4366 input: &[InputModality::Text, InputModality::Image],
4367 cost_input: 0.0,
4368 cost_output: 0.0,
4369 cost_cache_read: 0.0,
4370 cost_cache_write: 0.0,
4371 context_window: 131072,
4372 max_tokens: 8192,
4373 },
4374 ModelEntry {
4375 id: "mistral-saba-24b",
4376 name: "Mistral Saba 24B",
4377 api: Api::OpenAiCompletions,
4378 provider: "groq",
4379 reasoning: false,
4380 input: &[InputModality::Text],
4381 cost_input: 0.0,
4382 cost_output: 0.0,
4383 cost_cache_read: 0.0,
4384 cost_cache_write: 0.0,
4385 context_window: 32768,
4386 max_tokens: 32768,
4387 },
4388 ModelEntry {
4389 id: "moonshotai/kimi-k2-instruct",
4390 name: "Kimi K2 Instruct",
4391 api: Api::OpenAiCompletions,
4392 provider: "groq",
4393 reasoning: false,
4394 input: &[InputModality::Text],
4395 cost_input: 0.0,
4396 cost_output: 0.0,
4397 cost_cache_read: 0.0,
4398 cost_cache_write: 0.0,
4399 context_window: 131072,
4400 max_tokens: 16384,
4401 },
4402 ModelEntry {
4403 id: "moonshotai/kimi-k2-instruct-0905",
4404 name: "Kimi K2 Instruct 0905",
4405 api: Api::OpenAiCompletions,
4406 provider: "groq",
4407 reasoning: false,
4408 input: &[InputModality::Text],
4409 cost_input: 0.0,
4410 cost_output: 0.0,
4411 cost_cache_read: 0.0,
4412 cost_cache_write: 0.0,
4413 context_window: 262144,
4414 max_tokens: 16384,
4415 },
4416 ModelEntry {
4417 id: "openai/gpt-oss-120b",
4418 name: "GPT OSS 120B",
4419 api: Api::OpenAiCompletions,
4420 provider: "groq",
4421 reasoning: true,
4422 input: &[InputModality::Text],
4423 cost_input: 0.0,
4424 cost_output: 0.0,
4425 cost_cache_read: 0.0,
4426 cost_cache_write: 0.0,
4427 context_window: 131072,
4428 max_tokens: 65536,
4429 },
4430 ModelEntry {
4431 id: "openai/gpt-oss-20b",
4432 name: "GPT OSS 20B",
4433 api: Api::OpenAiCompletions,
4434 provider: "groq",
4435 reasoning: true,
4436 input: &[InputModality::Text],
4437 cost_input: 0.0,
4438 cost_output: 0.0,
4439 cost_cache_read: 0.0,
4440 cost_cache_write: 0.0,
4441 context_window: 131072,
4442 max_tokens: 65536,
4443 },
4444 ModelEntry {
4445 id: "openai/gpt-oss-safeguard-20b",
4446 name: "Safety GPT OSS 20B",
4447 api: Api::OpenAiCompletions,
4448 provider: "groq",
4449 reasoning: true,
4450 input: &[InputModality::Text],
4451 cost_input: 0.0,
4452 cost_output: 0.0,
4453 cost_cache_read: 0.037,
4454 cost_cache_write: 0.0,
4455 context_window: 131072,
4456 max_tokens: 65536,
4457 },
4458 ModelEntry {
4459 id: "qwen-qwq-32b",
4460 name: "Qwen QwQ 32B",
4461 api: Api::OpenAiCompletions,
4462 provider: "groq",
4463 reasoning: true,
4464 input: &[InputModality::Text],
4465 cost_input: 0.0,
4466 cost_output: 0.0,
4467 cost_cache_read: 0.0,
4468 cost_cache_write: 0.0,
4469 context_window: 131072,
4470 max_tokens: 16384,
4471 },
4472 ModelEntry {
4473 id: "qwen/qwen3-32b",
4474 name: "Qwen3 32B",
4475 api: Api::OpenAiCompletions,
4476 provider: "groq",
4477 reasoning: true,
4478 input: &[InputModality::Text],
4479 cost_input: 0.0,
4480 cost_output: 0.0,
4481 cost_cache_read: 0.0,
4482 cost_cache_write: 0.0,
4483 context_window: 131072,
4484 max_tokens: 40960,
4485 },
4486];
4487
4488static HUGGINGFACE_MODELS: &[ModelEntry] = &[
4490 ModelEntry {
4491 id: "MiniMaxAI/MiniMax-M2.1",
4492 name: "MiniMax-M2.1",
4493 api: Api::OpenAiCompletions,
4494 provider: "huggingface",
4495 reasoning: true,
4496 input: &[InputModality::Text],
4497 cost_input: 0.0,
4498 cost_output: 0.0,
4499 cost_cache_read: 0.0,
4500 cost_cache_write: 0.0,
4501 context_window: 204800,
4502 max_tokens: 131072,
4503 },
4504 ModelEntry {
4505 id: "MiniMaxAI/MiniMax-M2.5",
4506 name: "MiniMax-M2.5",
4507 api: Api::OpenAiCompletions,
4508 provider: "huggingface",
4509 reasoning: true,
4510 input: &[InputModality::Text],
4511 cost_input: 0.0,
4512 cost_output: 0.0,
4513 cost_cache_read: 0.03,
4514 cost_cache_write: 0.0,
4515 context_window: 204800,
4516 max_tokens: 131072,
4517 },
4518 ModelEntry {
4519 id: "MiniMaxAI/MiniMax-M2.7",
4520 name: "MiniMax-M2.7",
4521 api: Api::OpenAiCompletions,
4522 provider: "huggingface",
4523 reasoning: true,
4524 input: &[InputModality::Text],
4525 cost_input: 0.0,
4526 cost_output: 0.0,
4527 cost_cache_read: 0.06,
4528 cost_cache_write: 0.0,
4529 context_window: 204800,
4530 max_tokens: 131072,
4531 },
4532 ModelEntry {
4533 id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
4534 name: "Qwen3-235B-A22B-Thinking-2507",
4535 api: Api::OpenAiCompletions,
4536 provider: "huggingface",
4537 reasoning: true,
4538 input: &[InputModality::Text],
4539 cost_input: 0.0,
4540 cost_output: 0.0,
4541 cost_cache_read: 0.0,
4542 cost_cache_write: 0.0,
4543 context_window: 262144,
4544 max_tokens: 131072,
4545 },
4546 ModelEntry {
4547 id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
4548 name: "Qwen3-Coder-480B-A35B-Instruct",
4549 api: Api::OpenAiCompletions,
4550 provider: "huggingface",
4551 reasoning: false,
4552 input: &[InputModality::Text],
4553 cost_input: 0.0,
4554 cost_output: 0.0,
4555 cost_cache_read: 0.0,
4556 cost_cache_write: 0.0,
4557 context_window: 262144,
4558 max_tokens: 66536,
4559 },
4560 ModelEntry {
4561 id: "Qwen/Qwen3-Coder-Next",
4562 name: "Qwen3-Coder-Next",
4563 api: Api::OpenAiCompletions,
4564 provider: "huggingface",
4565 reasoning: false,
4566 input: &[InputModality::Text],
4567 cost_input: 0.0,
4568 cost_output: 0.0,
4569 cost_cache_read: 0.0,
4570 cost_cache_write: 0.0,
4571 context_window: 262144,
4572 max_tokens: 65536,
4573 },
4574 ModelEntry {
4575 id: "Qwen/Qwen3-Next-80B-A3B-Instruct",
4576 name: "Qwen3-Next-80B-A3B-Instruct",
4577 api: Api::OpenAiCompletions,
4578 provider: "huggingface",
4579 reasoning: false,
4580 input: &[InputModality::Text],
4581 cost_input: 0.0,
4582 cost_output: 0.0,
4583 cost_cache_read: 0.0,
4584 cost_cache_write: 0.0,
4585 context_window: 262144,
4586 max_tokens: 66536,
4587 },
4588 ModelEntry {
4589 id: "Qwen/Qwen3-Next-80B-A3B-Thinking",
4590 name: "Qwen3-Next-80B-A3B-Thinking",
4591 api: Api::OpenAiCompletions,
4592 provider: "huggingface",
4593 reasoning: false,
4594 input: &[InputModality::Text],
4595 cost_input: 0.0,
4596 cost_output: 0.0,
4597 cost_cache_read: 0.0,
4598 cost_cache_write: 0.0,
4599 context_window: 262144,
4600 max_tokens: 131072,
4601 },
4602 ModelEntry {
4603 id: "Qwen/Qwen3.5-397B-A17B",
4604 name: "Qwen3.5-397B-A17B",
4605 api: Api::OpenAiCompletions,
4606 provider: "huggingface",
4607 reasoning: true,
4608 input: &[InputModality::Text, InputModality::Image],
4609 cost_input: 0.0,
4610 cost_output: 0.0,
4611 cost_cache_read: 0.0,
4612 cost_cache_write: 0.0,
4613 context_window: 262144,
4614 max_tokens: 32768,
4615 },
4616 ModelEntry {
4617 id: "XiaomiMiMo/MiMo-V2-Flash",
4618 name: "MiMo-V2-Flash",
4619 api: Api::OpenAiCompletions,
4620 provider: "huggingface",
4621 reasoning: true,
4622 input: &[InputModality::Text],
4623 cost_input: 0.0,
4624 cost_output: 0.0,
4625 cost_cache_read: 0.0,
4626 cost_cache_write: 0.0,
4627 context_window: 262144,
4628 max_tokens: 4096,
4629 },
4630 ModelEntry {
4631 id: "deepseek-ai/DeepSeek-R1-0528",
4632 name: "DeepSeek-R1-0528",
4633 api: Api::OpenAiCompletions,
4634 provider: "huggingface",
4635 reasoning: true,
4636 input: &[InputModality::Text],
4637 cost_input: 0.0,
4638 cost_output: 0.0,
4639 cost_cache_read: 0.0,
4640 cost_cache_write: 0.0,
4641 context_window: 163840,
4642 max_tokens: 163840,
4643 },
4644 ModelEntry {
4645 id: "deepseek-ai/DeepSeek-V3.2",
4646 name: "DeepSeek-V3.2",
4647 api: Api::OpenAiCompletions,
4648 provider: "huggingface",
4649 reasoning: true,
4650 input: &[InputModality::Text],
4651 cost_input: 0.0,
4652 cost_output: 0.0,
4653 cost_cache_read: 0.0,
4654 cost_cache_write: 0.0,
4655 context_window: 163840,
4656 max_tokens: 65536,
4657 },
4658 ModelEntry {
4659 id: "deepseek-ai/DeepSeek-V4-Pro",
4660 name: "DeepSeek V4 Pro",
4661 api: Api::OpenAiCompletions,
4662 provider: "huggingface",
4663 reasoning: true,
4664 input: &[InputModality::Text],
4665 cost_input: 0.0,
4666 cost_output: 0.0,
4667 cost_cache_read: 0.145,
4668 cost_cache_write: 0.0,
4669 context_window: 1048576,
4670 max_tokens: 393216,
4671 },
4672 ModelEntry {
4673 id: "moonshotai/Kimi-K2-Instruct",
4674 name: "Kimi-K2-Instruct",
4675 api: Api::OpenAiCompletions,
4676 provider: "huggingface",
4677 reasoning: false,
4678 input: &[InputModality::Text],
4679 cost_input: 0.0,
4680 cost_output: 0.0,
4681 cost_cache_read: 0.0,
4682 cost_cache_write: 0.0,
4683 context_window: 131072,
4684 max_tokens: 16384,
4685 },
4686 ModelEntry {
4687 id: "moonshotai/Kimi-K2-Instruct-0905",
4688 name: "Kimi-K2-Instruct-0905",
4689 api: Api::OpenAiCompletions,
4690 provider: "huggingface",
4691 reasoning: false,
4692 input: &[InputModality::Text],
4693 cost_input: 0.0,
4694 cost_output: 0.0,
4695 cost_cache_read: 0.0,
4696 cost_cache_write: 0.0,
4697 context_window: 262144,
4698 max_tokens: 16384,
4699 },
4700 ModelEntry {
4701 id: "moonshotai/Kimi-K2-Thinking",
4702 name: "Kimi-K2-Thinking",
4703 api: Api::OpenAiCompletions,
4704 provider: "huggingface",
4705 reasoning: true,
4706 input: &[InputModality::Text],
4707 cost_input: 0.0,
4708 cost_output: 0.0,
4709 cost_cache_read: 0.15,
4710 cost_cache_write: 0.0,
4711 context_window: 262144,
4712 max_tokens: 262144,
4713 },
4714 ModelEntry {
4715 id: "moonshotai/Kimi-K2.5",
4716 name: "Kimi-K2.5",
4717 api: Api::OpenAiCompletions,
4718 provider: "huggingface",
4719 reasoning: true,
4720 input: &[InputModality::Text, InputModality::Image],
4721 cost_input: 0.0,
4722 cost_output: 0.0,
4723 cost_cache_read: 0.1,
4724 cost_cache_write: 0.0,
4725 context_window: 262144,
4726 max_tokens: 262144,
4727 },
4728 ModelEntry {
4729 id: "moonshotai/Kimi-K2.6",
4730 name: "Kimi-K2.6",
4731 api: Api::OpenAiCompletions,
4732 provider: "huggingface",
4733 reasoning: true,
4734 input: &[InputModality::Text, InputModality::Image],
4735 cost_input: 0.0,
4736 cost_output: 0.0,
4737 cost_cache_read: 0.16,
4738 cost_cache_write: 0.0,
4739 context_window: 262144,
4740 max_tokens: 262144,
4741 },
4742 ModelEntry {
4743 id: "zai-org/GLM-4.7",
4744 name: "GLM-4.7",
4745 api: Api::OpenAiCompletions,
4746 provider: "huggingface",
4747 reasoning: true,
4748 input: &[InputModality::Text],
4749 cost_input: 0.0,
4750 cost_output: 0.0,
4751 cost_cache_read: 0.11,
4752 cost_cache_write: 0.0,
4753 context_window: 204800,
4754 max_tokens: 131072,
4755 },
4756 ModelEntry {
4757 id: "zai-org/GLM-4.7-Flash",
4758 name: "GLM-4.7-Flash",
4759 api: Api::OpenAiCompletions,
4760 provider: "huggingface",
4761 reasoning: true,
4762 input: &[InputModality::Text],
4763 cost_input: 0.0,
4764 cost_output: 0.0,
4765 cost_cache_read: 0.0,
4766 cost_cache_write: 0.0,
4767 context_window: 200000,
4768 max_tokens: 128000,
4769 },
4770 ModelEntry {
4771 id: "zai-org/GLM-5",
4772 name: "GLM-5",
4773 api: Api::OpenAiCompletions,
4774 provider: "huggingface",
4775 reasoning: true,
4776 input: &[InputModality::Text],
4777 cost_input: 0.0,
4778 cost_output: 0.0,
4779 cost_cache_read: 0.2,
4780 cost_cache_write: 0.0,
4781 context_window: 202752,
4782 max_tokens: 131072,
4783 },
4784 ModelEntry {
4785 id: "zai-org/GLM-5.1",
4786 name: "GLM-5.1",
4787 api: Api::OpenAiCompletions,
4788 provider: "huggingface",
4789 reasoning: true,
4790 input: &[InputModality::Text],
4791 cost_input: 0.0,
4792 cost_output: 0.0,
4793 cost_cache_read: 0.2,
4794 cost_cache_write: 0.0,
4795 context_window: 202752,
4796 max_tokens: 131072,
4797 },
4798];
4799
4800static KIMI_CODING_MODELS: &[ModelEntry] = &[
4802 ModelEntry {
4803 id: "k2p6",
4804 name: "Kimi K2.6",
4805 api: Api::AnthropicMessages,
4806 provider: "kimi-coding",
4807 reasoning: true,
4808 input: &[InputModality::Text, InputModality::Image],
4809 cost_input: 0.0,
4810 cost_output: 0.0,
4811 cost_cache_read: 0.0,
4812 cost_cache_write: 0.0,
4813 context_window: 262144,
4814 max_tokens: 32768,
4815 },
4816 ModelEntry {
4817 id: "kimi-for-coding",
4818 name: "Kimi For Coding",
4819 api: Api::AnthropicMessages,
4820 provider: "kimi-coding",
4821 reasoning: true,
4822 input: &[InputModality::Text, InputModality::Image],
4823 cost_input: 0.0,
4824 cost_output: 0.0,
4825 cost_cache_read: 0.0,
4826 cost_cache_write: 0.0,
4827 context_window: 262144,
4828 max_tokens: 32768,
4829 },
4830 ModelEntry {
4831 id: "kimi-k2-thinking",
4832 name: "Kimi K2 Thinking",
4833 api: Api::AnthropicMessages,
4834 provider: "kimi-coding",
4835 reasoning: true,
4836 input: &[InputModality::Text],
4837 cost_input: 0.0,
4838 cost_output: 0.0,
4839 cost_cache_read: 0.0,
4840 cost_cache_write: 0.0,
4841 context_window: 262144,
4842 max_tokens: 32768,
4843 },
4844];
4845
4846static MINIMAX_MODELS: &[ModelEntry] = &[
4848 ModelEntry {
4849 id: "MiniMax-M2.7",
4850 name: "MiniMax-M2.7",
4851 api: Api::AnthropicMessages,
4852 provider: "minimax",
4853 reasoning: true,
4854 input: &[InputModality::Text],
4855 cost_input: 0.0,
4856 cost_output: 0.0,
4857 cost_cache_read: 0.06,
4858 cost_cache_write: 0.375,
4859 context_window: 204800,
4860 max_tokens: 131072,
4861 },
4862 ModelEntry {
4863 id: "MiniMax-M2.7-highspeed",
4864 name: "MiniMax-M2.7-highspeed",
4865 api: Api::AnthropicMessages,
4866 provider: "minimax",
4867 reasoning: true,
4868 input: &[InputModality::Text],
4869 cost_input: 0.0,
4870 cost_output: 0.0,
4871 cost_cache_read: 0.06,
4872 cost_cache_write: 0.375,
4873 context_window: 204800,
4874 max_tokens: 131072,
4875 },
4876];
4877
4878static MINIMAX_CN_MODELS: &[ModelEntry] = &[
4880 ModelEntry {
4881 id: "MiniMax-M2.7",
4882 name: "MiniMax-M2.7",
4883 api: Api::AnthropicMessages,
4884 provider: "minimax-cn",
4885 reasoning: true,
4886 input: &[InputModality::Text],
4887 cost_input: 0.0,
4888 cost_output: 0.0,
4889 cost_cache_read: 0.06,
4890 cost_cache_write: 0.375,
4891 context_window: 204800,
4892 max_tokens: 131072,
4893 },
4894 ModelEntry {
4895 id: "MiniMax-M2.7-highspeed",
4896 name: "MiniMax-M2.7-highspeed",
4897 api: Api::AnthropicMessages,
4898 provider: "minimax-cn",
4899 reasoning: true,
4900 input: &[InputModality::Text],
4901 cost_input: 0.0,
4902 cost_output: 0.0,
4903 cost_cache_read: 0.06,
4904 cost_cache_write: 0.375,
4905 context_window: 204800,
4906 max_tokens: 131072,
4907 },
4908];
4909
4910static MISTRAL_MODELS: &[ModelEntry] = &[
4912 ModelEntry {
4913 id: "codestral-latest",
4914 name: "Codestral (latest)",
4915 api: Api::MistralConversations,
4916 provider: "mistral",
4917 reasoning: false,
4918 input: &[InputModality::Text],
4919 cost_input: 0.0,
4920 cost_output: 0.0,
4921 cost_cache_read: 0.0,
4922 cost_cache_write: 0.0,
4923 context_window: 256000,
4924 max_tokens: 4096,
4925 },
4926 ModelEntry {
4927 id: "devstral-2512",
4928 name: "Devstral 2",
4929 api: Api::MistralConversations,
4930 provider: "mistral",
4931 reasoning: false,
4932 input: &[InputModality::Text],
4933 cost_input: 0.0,
4934 cost_output: 0.0,
4935 cost_cache_read: 0.0,
4936 cost_cache_write: 0.0,
4937 context_window: 262144,
4938 max_tokens: 262144,
4939 },
4940 ModelEntry {
4941 id: "devstral-medium-2507",
4942 name: "Devstral Medium",
4943 api: Api::MistralConversations,
4944 provider: "mistral",
4945 reasoning: false,
4946 input: &[InputModality::Text],
4947 cost_input: 0.0,
4948 cost_output: 0.0,
4949 cost_cache_read: 0.0,
4950 cost_cache_write: 0.0,
4951 context_window: 128000,
4952 max_tokens: 128000,
4953 },
4954 ModelEntry {
4955 id: "devstral-medium-latest",
4956 name: "Devstral 2 (latest)",
4957 api: Api::MistralConversations,
4958 provider: "mistral",
4959 reasoning: false,
4960 input: &[InputModality::Text],
4961 cost_input: 0.0,
4962 cost_output: 0.0,
4963 cost_cache_read: 0.0,
4964 cost_cache_write: 0.0,
4965 context_window: 262144,
4966 max_tokens: 262144,
4967 },
4968 ModelEntry {
4969 id: "devstral-small-2505",
4970 name: "Devstral Small 2505",
4971 api: Api::MistralConversations,
4972 provider: "mistral",
4973 reasoning: false,
4974 input: &[InputModality::Text],
4975 cost_input: 0.0,
4976 cost_output: 0.0,
4977 cost_cache_read: 0.0,
4978 cost_cache_write: 0.0,
4979 context_window: 128000,
4980 max_tokens: 128000,
4981 },
4982 ModelEntry {
4983 id: "devstral-small-2507",
4984 name: "Devstral Small",
4985 api: Api::MistralConversations,
4986 provider: "mistral",
4987 reasoning: false,
4988 input: &[InputModality::Text],
4989 cost_input: 0.0,
4990 cost_output: 0.0,
4991 cost_cache_read: 0.0,
4992 cost_cache_write: 0.0,
4993 context_window: 128000,
4994 max_tokens: 128000,
4995 },
4996 ModelEntry {
4997 id: "labs-devstral-small-2512",
4998 name: "Devstral Small 2",
4999 api: Api::MistralConversations,
5000 provider: "mistral",
5001 reasoning: false,
5002 input: &[InputModality::Text, InputModality::Image],
5003 cost_input: 0.0,
5004 cost_output: 0.0,
5005 cost_cache_read: 0.0,
5006 cost_cache_write: 0.0,
5007 context_window: 256000,
5008 max_tokens: 256000,
5009 },
5010 ModelEntry {
5011 id: "magistral-medium-latest",
5012 name: "Magistral Medium (latest)",
5013 api: Api::MistralConversations,
5014 provider: "mistral",
5015 reasoning: true,
5016 input: &[InputModality::Text],
5017 cost_input: 0.0,
5018 cost_output: 0.0,
5019 cost_cache_read: 0.0,
5020 cost_cache_write: 0.0,
5021 context_window: 128000,
5022 max_tokens: 16384,
5023 },
5024 ModelEntry {
5025 id: "magistral-small",
5026 name: "Magistral Small",
5027 api: Api::MistralConversations,
5028 provider: "mistral",
5029 reasoning: true,
5030 input: &[InputModality::Text],
5031 cost_input: 0.0,
5032 cost_output: 0.0,
5033 cost_cache_read: 0.0,
5034 cost_cache_write: 0.0,
5035 context_window: 128000,
5036 max_tokens: 128000,
5037 },
5038 ModelEntry {
5039 id: "ministral-3b-latest",
5040 name: "Ministral 3B (latest)",
5041 api: Api::MistralConversations,
5042 provider: "mistral",
5043 reasoning: false,
5044 input: &[InputModality::Text],
5045 cost_input: 0.0,
5046 cost_output: 0.0,
5047 cost_cache_read: 0.0,
5048 cost_cache_write: 0.0,
5049 context_window: 128000,
5050 max_tokens: 128000,
5051 },
5052 ModelEntry {
5053 id: "ministral-8b-latest",
5054 name: "Ministral 8B (latest)",
5055 api: Api::MistralConversations,
5056 provider: "mistral",
5057 reasoning: false,
5058 input: &[InputModality::Text],
5059 cost_input: 0.0,
5060 cost_output: 0.0,
5061 cost_cache_read: 0.0,
5062 cost_cache_write: 0.0,
5063 context_window: 128000,
5064 max_tokens: 128000,
5065 },
5066 ModelEntry {
5067 id: "mistral-large-2411",
5068 name: "Mistral Large 2.1",
5069 api: Api::MistralConversations,
5070 provider: "mistral",
5071 reasoning: false,
5072 input: &[InputModality::Text],
5073 cost_input: 0.0,
5074 cost_output: 0.0,
5075 cost_cache_read: 0.0,
5076 cost_cache_write: 0.0,
5077 context_window: 131072,
5078 max_tokens: 16384,
5079 },
5080 ModelEntry {
5081 id: "mistral-large-2512",
5082 name: "Mistral Large 3",
5083 api: Api::MistralConversations,
5084 provider: "mistral",
5085 reasoning: false,
5086 input: &[InputModality::Text, InputModality::Image],
5087 cost_input: 0.0,
5088 cost_output: 0.0,
5089 cost_cache_read: 0.0,
5090 cost_cache_write: 0.0,
5091 context_window: 262144,
5092 max_tokens: 262144,
5093 },
5094 ModelEntry {
5095 id: "mistral-large-latest",
5096 name: "Mistral Large (latest)",
5097 api: Api::MistralConversations,
5098 provider: "mistral",
5099 reasoning: false,
5100 input: &[InputModality::Text, InputModality::Image],
5101 cost_input: 0.0,
5102 cost_output: 0.0,
5103 cost_cache_read: 0.0,
5104 cost_cache_write: 0.0,
5105 context_window: 262144,
5106 max_tokens: 262144,
5107 },
5108 ModelEntry {
5109 id: "mistral-medium-2505",
5110 name: "Mistral Medium 3",
5111 api: Api::MistralConversations,
5112 provider: "mistral",
5113 reasoning: false,
5114 input: &[InputModality::Text, InputModality::Image],
5115 cost_input: 0.0,
5116 cost_output: 0.0,
5117 cost_cache_read: 0.0,
5118 cost_cache_write: 0.0,
5119 context_window: 131072,
5120 max_tokens: 131072,
5121 },
5122 ModelEntry {
5123 id: "mistral-medium-2508",
5124 name: "Mistral Medium 3.1",
5125 api: Api::MistralConversations,
5126 provider: "mistral",
5127 reasoning: false,
5128 input: &[InputModality::Text, InputModality::Image],
5129 cost_input: 0.0,
5130 cost_output: 0.0,
5131 cost_cache_read: 0.0,
5132 cost_cache_write: 0.0,
5133 context_window: 262144,
5134 max_tokens: 262144,
5135 },
5136 ModelEntry {
5137 id: "mistral-medium-2604",
5138 name: "Mistral Medium 3.5",
5139 api: Api::MistralConversations,
5140 provider: "mistral",
5141 reasoning: true,
5142 input: &[InputModality::Text, InputModality::Image],
5143 cost_input: 0.0,
5144 cost_output: 0.0,
5145 cost_cache_read: 0.0,
5146 cost_cache_write: 0.0,
5147 context_window: 262144,
5148 max_tokens: 262144,
5149 },
5150 ModelEntry {
5151 id: "mistral-medium-3.5",
5152 name: "Mistral Medium 3.5",
5153 api: Api::MistralConversations,
5154 provider: "mistral",
5155 reasoning: true,
5156 input: &[InputModality::Text, InputModality::Image],
5157 cost_input: 0.0,
5158 cost_output: 0.0,
5159 cost_cache_read: 0.0,
5160 cost_cache_write: 0.0,
5161 context_window: 262144,
5162 max_tokens: 262144,
5163 },
5164 ModelEntry {
5165 id: "mistral-medium-latest",
5166 name: "Mistral Medium (latest)",
5167 api: Api::MistralConversations,
5168 provider: "mistral",
5169 reasoning: true,
5170 input: &[InputModality::Text, InputModality::Image],
5171 cost_input: 0.0,
5172 cost_output: 0.0,
5173 cost_cache_read: 0.0,
5174 cost_cache_write: 0.0,
5175 context_window: 262144,
5176 max_tokens: 262144,
5177 },
5178 ModelEntry {
5179 id: "mistral-nemo",
5180 name: "Mistral Nemo",
5181 api: Api::MistralConversations,
5182 provider: "mistral",
5183 reasoning: false,
5184 input: &[InputModality::Text],
5185 cost_input: 0.0,
5186 cost_output: 0.0,
5187 cost_cache_read: 0.0,
5188 cost_cache_write: 0.0,
5189 context_window: 128000,
5190 max_tokens: 128000,
5191 },
5192 ModelEntry {
5193 id: "mistral-small-2506",
5194 name: "Mistral Small 3.2",
5195 api: Api::MistralConversations,
5196 provider: "mistral",
5197 reasoning: false,
5198 input: &[InputModality::Text, InputModality::Image],
5199 cost_input: 0.0,
5200 cost_output: 0.0,
5201 cost_cache_read: 0.0,
5202 cost_cache_write: 0.0,
5203 context_window: 128000,
5204 max_tokens: 16384,
5205 },
5206 ModelEntry {
5207 id: "mistral-small-2603",
5208 name: "Mistral Small 4",
5209 api: Api::MistralConversations,
5210 provider: "mistral",
5211 reasoning: true,
5212 input: &[InputModality::Text, InputModality::Image],
5213 cost_input: 0.0,
5214 cost_output: 0.0,
5215 cost_cache_read: 0.0,
5216 cost_cache_write: 0.0,
5217 context_window: 256000,
5218 max_tokens: 256000,
5219 },
5220 ModelEntry {
5221 id: "mistral-small-latest",
5222 name: "Mistral Small (latest)",
5223 api: Api::MistralConversations,
5224 provider: "mistral",
5225 reasoning: true,
5226 input: &[InputModality::Text, InputModality::Image],
5227 cost_input: 0.0,
5228 cost_output: 0.0,
5229 cost_cache_read: 0.0,
5230 cost_cache_write: 0.0,
5231 context_window: 256000,
5232 max_tokens: 256000,
5233 },
5234 ModelEntry {
5235 id: "open-mistral-7b",
5236 name: "Mistral 7B",
5237 api: Api::MistralConversations,
5238 provider: "mistral",
5239 reasoning: false,
5240 input: &[InputModality::Text],
5241 cost_input: 0.0,
5242 cost_output: 0.0,
5243 cost_cache_read: 0.0,
5244 cost_cache_write: 0.0,
5245 context_window: 8000,
5246 max_tokens: 8000,
5247 },
5248 ModelEntry {
5249 id: "open-mixtral-8x22b",
5250 name: "Mixtral 8x22B",
5251 api: Api::MistralConversations,
5252 provider: "mistral",
5253 reasoning: false,
5254 input: &[InputModality::Text],
5255 cost_input: 0.0,
5256 cost_output: 0.0,
5257 cost_cache_read: 0.0,
5258 cost_cache_write: 0.0,
5259 context_window: 64000,
5260 max_tokens: 64000,
5261 },
5262 ModelEntry {
5263 id: "open-mixtral-8x7b",
5264 name: "Mixtral 8x7B",
5265 api: Api::MistralConversations,
5266 provider: "mistral",
5267 reasoning: false,
5268 input: &[InputModality::Text],
5269 cost_input: 0.0,
5270 cost_output: 0.0,
5271 cost_cache_read: 0.0,
5272 cost_cache_write: 0.0,
5273 context_window: 32000,
5274 max_tokens: 32000,
5275 },
5276 ModelEntry {
5277 id: "pixtral-12b",
5278 name: "Pixtral 12B",
5279 api: Api::MistralConversations,
5280 provider: "mistral",
5281 reasoning: false,
5282 input: &[InputModality::Text, InputModality::Image],
5283 cost_input: 0.0,
5284 cost_output: 0.0,
5285 cost_cache_read: 0.0,
5286 cost_cache_write: 0.0,
5287 context_window: 128000,
5288 max_tokens: 128000,
5289 },
5290 ModelEntry {
5291 id: "pixtral-large-latest",
5292 name: "Pixtral Large (latest)",
5293 api: Api::MistralConversations,
5294 provider: "mistral",
5295 reasoning: false,
5296 input: &[InputModality::Text, InputModality::Image],
5297 cost_input: 0.0,
5298 cost_output: 0.0,
5299 cost_cache_read: 0.0,
5300 cost_cache_write: 0.0,
5301 context_window: 128000,
5302 max_tokens: 128000,
5303 },
5304];
5305
5306static MOONSHOTAI_MODELS: &[ModelEntry] = &[
5308 ModelEntry {
5309 id: "kimi-k2-0711-preview",
5310 name: "Kimi K2 0711",
5311 api: Api::OpenAiCompletions,
5312 provider: "moonshotai",
5313 reasoning: false,
5314 input: &[InputModality::Text],
5315 cost_input: 0.0,
5316 cost_output: 0.0,
5317 cost_cache_read: 0.15,
5318 cost_cache_write: 0.0,
5319 context_window: 131072,
5320 max_tokens: 16384,
5321 },
5322 ModelEntry {
5323 id: "kimi-k2-0905-preview",
5324 name: "Kimi K2 0905",
5325 api: Api::OpenAiCompletions,
5326 provider: "moonshotai",
5327 reasoning: false,
5328 input: &[InputModality::Text],
5329 cost_input: 0.0,
5330 cost_output: 0.0,
5331 cost_cache_read: 0.15,
5332 cost_cache_write: 0.0,
5333 context_window: 262144,
5334 max_tokens: 262144,
5335 },
5336 ModelEntry {
5337 id: "kimi-k2-thinking",
5338 name: "Kimi K2 Thinking",
5339 api: Api::OpenAiCompletions,
5340 provider: "moonshotai",
5341 reasoning: true,
5342 input: &[InputModality::Text],
5343 cost_input: 0.0,
5344 cost_output: 0.0,
5345 cost_cache_read: 0.15,
5346 cost_cache_write: 0.0,
5347 context_window: 262144,
5348 max_tokens: 262144,
5349 },
5350 ModelEntry {
5351 id: "kimi-k2-thinking-turbo",
5352 name: "Kimi K2 Thinking Turbo",
5353 api: Api::OpenAiCompletions,
5354 provider: "moonshotai",
5355 reasoning: true,
5356 input: &[InputModality::Text],
5357 cost_input: 0.0,
5358 cost_output: 0.0,
5359 cost_cache_read: 0.15,
5360 cost_cache_write: 0.0,
5361 context_window: 262144,
5362 max_tokens: 262144,
5363 },
5364 ModelEntry {
5365 id: "kimi-k2-turbo-preview",
5366 name: "Kimi K2 Turbo",
5367 api: Api::OpenAiCompletions,
5368 provider: "moonshotai",
5369 reasoning: false,
5370 input: &[InputModality::Text],
5371 cost_input: 0.0,
5372 cost_output: 0.0,
5373 cost_cache_read: 0.6,
5374 cost_cache_write: 0.0,
5375 context_window: 262144,
5376 max_tokens: 262144,
5377 },
5378 ModelEntry {
5379 id: "kimi-k2.5",
5380 name: "Kimi K2.5",
5381 api: Api::OpenAiCompletions,
5382 provider: "moonshotai",
5383 reasoning: true,
5384 input: &[InputModality::Text, InputModality::Image],
5385 cost_input: 0.0,
5386 cost_output: 0.0,
5387 cost_cache_read: 0.1,
5388 cost_cache_write: 0.0,
5389 context_window: 262144,
5390 max_tokens: 262144,
5391 },
5392 ModelEntry {
5393 id: "kimi-k2.6",
5394 name: "Kimi K2.6",
5395 api: Api::OpenAiCompletions,
5396 provider: "moonshotai",
5397 reasoning: true,
5398 input: &[InputModality::Text, InputModality::Image],
5399 cost_input: 0.0,
5400 cost_output: 0.0,
5401 cost_cache_read: 0.16,
5402 cost_cache_write: 0.0,
5403 context_window: 262144,
5404 max_tokens: 262144,
5405 },
5406];
5407
5408static MOONSHOTAI_CN_MODELS: &[ModelEntry] = &[
5410 ModelEntry {
5411 id: "kimi-k2-0711-preview",
5412 name: "Kimi K2 0711",
5413 api: Api::OpenAiCompletions,
5414 provider: "moonshotai-cn",
5415 reasoning: false,
5416 input: &[InputModality::Text],
5417 cost_input: 0.0,
5418 cost_output: 0.0,
5419 cost_cache_read: 0.15,
5420 cost_cache_write: 0.0,
5421 context_window: 131072,
5422 max_tokens: 16384,
5423 },
5424 ModelEntry {
5425 id: "kimi-k2-0905-preview",
5426 name: "Kimi K2 0905",
5427 api: Api::OpenAiCompletions,
5428 provider: "moonshotai-cn",
5429 reasoning: false,
5430 input: &[InputModality::Text],
5431 cost_input: 0.0,
5432 cost_output: 0.0,
5433 cost_cache_read: 0.15,
5434 cost_cache_write: 0.0,
5435 context_window: 262144,
5436 max_tokens: 262144,
5437 },
5438 ModelEntry {
5439 id: "kimi-k2-thinking",
5440 name: "Kimi K2 Thinking",
5441 api: Api::OpenAiCompletions,
5442 provider: "moonshotai-cn",
5443 reasoning: true,
5444 input: &[InputModality::Text],
5445 cost_input: 0.0,
5446 cost_output: 0.0,
5447 cost_cache_read: 0.15,
5448 cost_cache_write: 0.0,
5449 context_window: 262144,
5450 max_tokens: 262144,
5451 },
5452 ModelEntry {
5453 id: "kimi-k2-thinking-turbo",
5454 name: "Kimi K2 Thinking Turbo",
5455 api: Api::OpenAiCompletions,
5456 provider: "moonshotai-cn",
5457 reasoning: true,
5458 input: &[InputModality::Text],
5459 cost_input: 0.0,
5460 cost_output: 0.0,
5461 cost_cache_read: 0.15,
5462 cost_cache_write: 0.0,
5463 context_window: 262144,
5464 max_tokens: 262144,
5465 },
5466 ModelEntry {
5467 id: "kimi-k2-turbo-preview",
5468 name: "Kimi K2 Turbo",
5469 api: Api::OpenAiCompletions,
5470 provider: "moonshotai-cn",
5471 reasoning: false,
5472 input: &[InputModality::Text],
5473 cost_input: 0.0,
5474 cost_output: 0.0,
5475 cost_cache_read: 0.6,
5476 cost_cache_write: 0.0,
5477 context_window: 262144,
5478 max_tokens: 262144,
5479 },
5480 ModelEntry {
5481 id: "kimi-k2.5",
5482 name: "Kimi K2.5",
5483 api: Api::OpenAiCompletions,
5484 provider: "moonshotai-cn",
5485 reasoning: true,
5486 input: &[InputModality::Text, InputModality::Image],
5487 cost_input: 0.0,
5488 cost_output: 0.0,
5489 cost_cache_read: 0.1,
5490 cost_cache_write: 0.0,
5491 context_window: 262144,
5492 max_tokens: 262144,
5493 },
5494 ModelEntry {
5495 id: "kimi-k2.6",
5496 name: "Kimi K2.6",
5497 api: Api::OpenAiCompletions,
5498 provider: "moonshotai-cn",
5499 reasoning: true,
5500 input: &[InputModality::Text, InputModality::Image],
5501 cost_input: 0.0,
5502 cost_output: 0.0,
5503 cost_cache_read: 0.16,
5504 cost_cache_write: 0.0,
5505 context_window: 262144,
5506 max_tokens: 262144,
5507 },
5508];
5509
5510static OPENAI_MODELS: &[ModelEntry] = &[
5512 ModelEntry {
5513 id: "gpt-4",
5514 name: "GPT-4",
5515 api: Api::OpenAiResponses,
5516 provider: "openai",
5517 reasoning: false,
5518 input: &[InputModality::Text],
5519 cost_input: 0.0,
5520 cost_output: 0.0,
5521 cost_cache_read: 0.0,
5522 cost_cache_write: 0.0,
5523 context_window: 8192,
5524 max_tokens: 8192,
5525 },
5526 ModelEntry {
5527 id: "gpt-4-turbo",
5528 name: "GPT-4 Turbo",
5529 api: Api::OpenAiResponses,
5530 provider: "openai",
5531 reasoning: false,
5532 input: &[InputModality::Text, InputModality::Image],
5533 cost_input: 0.0,
5534 cost_output: 0.0,
5535 cost_cache_read: 0.0,
5536 cost_cache_write: 0.0,
5537 context_window: 128000,
5538 max_tokens: 4096,
5539 },
5540 ModelEntry {
5541 id: "gpt-4.1",
5542 name: "GPT-4.1",
5543 api: Api::OpenAiResponses,
5544 provider: "openai",
5545 reasoning: false,
5546 input: &[InputModality::Text, InputModality::Image],
5547 cost_input: 0.0,
5548 cost_output: 0.0,
5549 cost_cache_read: 0.5,
5550 cost_cache_write: 0.0,
5551 context_window: 1047576,
5552 max_tokens: 32768,
5553 },
5554 ModelEntry {
5555 id: "gpt-4.1-mini",
5556 name: "GPT-4.1 mini",
5557 api: Api::OpenAiResponses,
5558 provider: "openai",
5559 reasoning: false,
5560 input: &[InputModality::Text, InputModality::Image],
5561 cost_input: 0.0,
5562 cost_output: 0.0,
5563 cost_cache_read: 0.1,
5564 cost_cache_write: 0.0,
5565 context_window: 1047576,
5566 max_tokens: 32768,
5567 },
5568 ModelEntry {
5569 id: "gpt-4.1-nano",
5570 name: "GPT-4.1 nano",
5571 api: Api::OpenAiResponses,
5572 provider: "openai",
5573 reasoning: false,
5574 input: &[InputModality::Text, InputModality::Image],
5575 cost_input: 0.0,
5576 cost_output: 0.0,
5577 cost_cache_read: 0.03,
5578 cost_cache_write: 0.0,
5579 context_window: 1047576,
5580 max_tokens: 32768,
5581 },
5582 ModelEntry {
5583 id: "gpt-4o",
5584 name: "GPT-4o",
5585 api: Api::OpenAiResponses,
5586 provider: "openai",
5587 reasoning: false,
5588 input: &[InputModality::Text, InputModality::Image],
5589 cost_input: 0.0,
5590 cost_output: 0.0,
5591 cost_cache_read: 1.25,
5592 cost_cache_write: 0.0,
5593 context_window: 128000,
5594 max_tokens: 16384,
5595 },
5596 ModelEntry {
5597 id: "gpt-4o-2024-05-13",
5598 name: "GPT-4o (2024-05-13)",
5599 api: Api::OpenAiResponses,
5600 provider: "openai",
5601 reasoning: false,
5602 input: &[InputModality::Text, InputModality::Image],
5603 cost_input: 0.0,
5604 cost_output: 0.0,
5605 cost_cache_read: 0.0,
5606 cost_cache_write: 0.0,
5607 context_window: 128000,
5608 max_tokens: 4096,
5609 },
5610 ModelEntry {
5611 id: "gpt-4o-2024-08-06",
5612 name: "GPT-4o (2024-08-06)",
5613 api: Api::OpenAiResponses,
5614 provider: "openai",
5615 reasoning: false,
5616 input: &[InputModality::Text, InputModality::Image],
5617 cost_input: 0.0,
5618 cost_output: 0.0,
5619 cost_cache_read: 1.25,
5620 cost_cache_write: 0.0,
5621 context_window: 128000,
5622 max_tokens: 16384,
5623 },
5624 ModelEntry {
5625 id: "gpt-4o-2024-11-20",
5626 name: "GPT-4o (2024-11-20)",
5627 api: Api::OpenAiResponses,
5628 provider: "openai",
5629 reasoning: false,
5630 input: &[InputModality::Text, InputModality::Image],
5631 cost_input: 0.0,
5632 cost_output: 0.0,
5633 cost_cache_read: 1.25,
5634 cost_cache_write: 0.0,
5635 context_window: 128000,
5636 max_tokens: 16384,
5637 },
5638 ModelEntry {
5639 id: "gpt-4o-mini",
5640 name: "GPT-4o mini",
5641 api: Api::OpenAiResponses,
5642 provider: "openai",
5643 reasoning: false,
5644 input: &[InputModality::Text, InputModality::Image],
5645 cost_input: 0.0,
5646 cost_output: 0.0,
5647 cost_cache_read: 0.08,
5648 cost_cache_write: 0.0,
5649 context_window: 128000,
5650 max_tokens: 16384,
5651 },
5652 ModelEntry {
5653 id: "gpt-5",
5654 name: "GPT-5",
5655 api: Api::OpenAiResponses,
5656 provider: "openai",
5657 reasoning: true,
5658 input: &[InputModality::Text, InputModality::Image],
5659 cost_input: 0.0,
5660 cost_output: 0.0,
5661 cost_cache_read: 0.125,
5662 cost_cache_write: 0.0,
5663 context_window: 400000,
5664 max_tokens: 128000,
5665 },
5666 ModelEntry {
5667 id: "gpt-5-chat-latest",
5668 name: "GPT-5 Chat Latest",
5669 api: Api::OpenAiResponses,
5670 provider: "openai",
5671 reasoning: false,
5672 input: &[InputModality::Text, InputModality::Image],
5673 cost_input: 0.0,
5674 cost_output: 0.0,
5675 cost_cache_read: 0.125,
5676 cost_cache_write: 0.0,
5677 context_window: 128000,
5678 max_tokens: 16384,
5679 },
5680 ModelEntry {
5681 id: "gpt-5-codex",
5682 name: "GPT-5-Codex",
5683 api: Api::OpenAiResponses,
5684 provider: "openai",
5685 reasoning: true,
5686 input: &[InputModality::Text, InputModality::Image],
5687 cost_input: 0.0,
5688 cost_output: 0.0,
5689 cost_cache_read: 0.125,
5690 cost_cache_write: 0.0,
5691 context_window: 400000,
5692 max_tokens: 128000,
5693 },
5694 ModelEntry {
5695 id: "gpt-5-mini",
5696 name: "GPT-5 Mini",
5697 api: Api::OpenAiResponses,
5698 provider: "openai",
5699 reasoning: true,
5700 input: &[InputModality::Text, InputModality::Image],
5701 cost_input: 0.0,
5702 cost_output: 0.0,
5703 cost_cache_read: 0.025,
5704 cost_cache_write: 0.0,
5705 context_window: 400000,
5706 max_tokens: 128000,
5707 },
5708 ModelEntry {
5709 id: "gpt-5-nano",
5710 name: "GPT-5 Nano",
5711 api: Api::OpenAiResponses,
5712 provider: "openai",
5713 reasoning: true,
5714 input: &[InputModality::Text, InputModality::Image],
5715 cost_input: 0.0,
5716 cost_output: 0.0,
5717 cost_cache_read: 0.005,
5718 cost_cache_write: 0.0,
5719 context_window: 400000,
5720 max_tokens: 128000,
5721 },
5722 ModelEntry {
5723 id: "gpt-5-pro",
5724 name: "GPT-5 Pro",
5725 api: Api::OpenAiResponses,
5726 provider: "openai",
5727 reasoning: true,
5728 input: &[InputModality::Text, InputModality::Image],
5729 cost_input: 0.0,
5730 cost_output: 0.0,
5731 cost_cache_read: 0.0,
5732 cost_cache_write: 0.0,
5733 context_window: 400000,
5734 max_tokens: 272000,
5735 },
5736 ModelEntry {
5737 id: "gpt-5.1",
5738 name: "GPT-5.1",
5739 api: Api::OpenAiResponses,
5740 provider: "openai",
5741 reasoning: true,
5742 input: &[InputModality::Text, InputModality::Image],
5743 cost_input: 0.0,
5744 cost_output: 0.0,
5745 cost_cache_read: 0.13,
5746 cost_cache_write: 0.0,
5747 context_window: 400000,
5748 max_tokens: 128000,
5749 },
5750 ModelEntry {
5751 id: "gpt-5.1-chat-latest",
5752 name: "GPT-5.1 Chat",
5753 api: Api::OpenAiResponses,
5754 provider: "openai",
5755 reasoning: true,
5756 input: &[InputModality::Text, InputModality::Image],
5757 cost_input: 0.0,
5758 cost_output: 0.0,
5759 cost_cache_read: 0.125,
5760 cost_cache_write: 0.0,
5761 context_window: 128000,
5762 max_tokens: 16384,
5763 },
5764 ModelEntry {
5765 id: "gpt-5.1-codex",
5766 name: "GPT-5.1 Codex",
5767 api: Api::OpenAiResponses,
5768 provider: "openai",
5769 reasoning: true,
5770 input: &[InputModality::Text, InputModality::Image],
5771 cost_input: 0.0,
5772 cost_output: 0.0,
5773 cost_cache_read: 0.125,
5774 cost_cache_write: 0.0,
5775 context_window: 400000,
5776 max_tokens: 128000,
5777 },
5778 ModelEntry {
5779 id: "gpt-5.1-codex-max",
5780 name: "GPT-5.1 Codex Max",
5781 api: Api::OpenAiResponses,
5782 provider: "openai",
5783 reasoning: true,
5784 input: &[InputModality::Text, InputModality::Image],
5785 cost_input: 0.0,
5786 cost_output: 0.0,
5787 cost_cache_read: 0.125,
5788 cost_cache_write: 0.0,
5789 context_window: 400000,
5790 max_tokens: 128000,
5791 },
5792 ModelEntry {
5793 id: "gpt-5.1-codex-mini",
5794 name: "GPT-5.1 Codex mini",
5795 api: Api::OpenAiResponses,
5796 provider: "openai",
5797 reasoning: true,
5798 input: &[InputModality::Text, InputModality::Image],
5799 cost_input: 0.0,
5800 cost_output: 0.0,
5801 cost_cache_read: 0.025,
5802 cost_cache_write: 0.0,
5803 context_window: 400000,
5804 max_tokens: 128000,
5805 },
5806 ModelEntry {
5807 id: "gpt-5.2",
5808 name: "GPT-5.2",
5809 api: Api::OpenAiResponses,
5810 provider: "openai",
5811 reasoning: true,
5812 input: &[InputModality::Text, InputModality::Image],
5813 cost_input: 0.0,
5814 cost_output: 0.0,
5815 cost_cache_read: 0.175,
5816 cost_cache_write: 0.0,
5817 context_window: 400000,
5818 max_tokens: 128000,
5819 },
5820 ModelEntry {
5821 id: "gpt-5.2-chat-latest",
5822 name: "GPT-5.2 Chat",
5823 api: Api::OpenAiResponses,
5824 provider: "openai",
5825 reasoning: true,
5826 input: &[InputModality::Text, InputModality::Image],
5827 cost_input: 0.0,
5828 cost_output: 0.0,
5829 cost_cache_read: 0.175,
5830 cost_cache_write: 0.0,
5831 context_window: 128000,
5832 max_tokens: 16384,
5833 },
5834 ModelEntry {
5835 id: "gpt-5.2-codex",
5836 name: "GPT-5.2 Codex",
5837 api: Api::OpenAiResponses,
5838 provider: "openai",
5839 reasoning: true,
5840 input: &[InputModality::Text, InputModality::Image],
5841 cost_input: 0.0,
5842 cost_output: 0.0,
5843 cost_cache_read: 0.175,
5844 cost_cache_write: 0.0,
5845 context_window: 400000,
5846 max_tokens: 128000,
5847 },
5848 ModelEntry {
5849 id: "gpt-5.2-pro",
5850 name: "GPT-5.2 Pro",
5851 api: Api::OpenAiResponses,
5852 provider: "openai",
5853 reasoning: true,
5854 input: &[InputModality::Text, InputModality::Image],
5855 cost_input: 0.0,
5856 cost_output: 0.0,
5857 cost_cache_read: 0.0,
5858 cost_cache_write: 0.0,
5859 context_window: 400000,
5860 max_tokens: 128000,
5861 },
5862 ModelEntry {
5863 id: "gpt-5.3-chat-latest",
5864 name: "GPT-5.3 Chat (latest)",
5865 api: Api::OpenAiResponses,
5866 provider: "openai",
5867 reasoning: false,
5868 input: &[InputModality::Text, InputModality::Image],
5869 cost_input: 0.0,
5870 cost_output: 0.0,
5871 cost_cache_read: 0.175,
5872 cost_cache_write: 0.0,
5873 context_window: 128000,
5874 max_tokens: 16384,
5875 },
5876 ModelEntry {
5877 id: "gpt-5.3-codex",
5878 name: "GPT-5.3 Codex",
5879 api: Api::OpenAiResponses,
5880 provider: "openai",
5881 reasoning: true,
5882 input: &[InputModality::Text, InputModality::Image],
5883 cost_input: 0.0,
5884 cost_output: 0.0,
5885 cost_cache_read: 0.175,
5886 cost_cache_write: 0.0,
5887 context_window: 400000,
5888 max_tokens: 128000,
5889 },
5890 ModelEntry {
5891 id: "gpt-5.3-codex-spark",
5892 name: "GPT-5.3 Codex Spark",
5893 api: Api::OpenAiResponses,
5894 provider: "openai",
5895 reasoning: true,
5896 input: &[InputModality::Text, InputModality::Image],
5897 cost_input: 0.0,
5898 cost_output: 0.0,
5899 cost_cache_read: 0.175,
5900 cost_cache_write: 0.0,
5901 context_window: 128000,
5902 max_tokens: 32000,
5903 },
5904 ModelEntry {
5905 id: "gpt-5.4",
5906 name: "GPT-5.4",
5907 api: Api::OpenAiResponses,
5908 provider: "openai",
5909 reasoning: true,
5910 input: &[InputModality::Text, InputModality::Image],
5911 cost_input: 0.0,
5912 cost_output: 0.0,
5913 cost_cache_read: 0.25,
5914 cost_cache_write: 0.0,
5915 context_window: 272000,
5916 max_tokens: 128000,
5917 },
5918 ModelEntry {
5919 id: "gpt-5.4-mini",
5920 name: "GPT-5.4 mini",
5921 api: Api::OpenAiResponses,
5922 provider: "openai",
5923 reasoning: true,
5924 input: &[InputModality::Text, InputModality::Image],
5925 cost_input: 0.0,
5926 cost_output: 0.0,
5927 cost_cache_read: 0.075,
5928 cost_cache_write: 0.0,
5929 context_window: 400000,
5930 max_tokens: 128000,
5931 },
5932 ModelEntry {
5933 id: "gpt-5.4-nano",
5934 name: "GPT-5.4 nano",
5935 api: Api::OpenAiResponses,
5936 provider: "openai",
5937 reasoning: true,
5938 input: &[InputModality::Text, InputModality::Image],
5939 cost_input: 0.0,
5940 cost_output: 0.0,
5941 cost_cache_read: 0.02,
5942 cost_cache_write: 0.0,
5943 context_window: 400000,
5944 max_tokens: 128000,
5945 },
5946 ModelEntry {
5947 id: "gpt-5.4-pro",
5948 name: "GPT-5.4 Pro",
5949 api: Api::OpenAiResponses,
5950 provider: "openai",
5951 reasoning: true,
5952 input: &[InputModality::Text, InputModality::Image],
5953 cost_input: 0.0,
5954 cost_output: 0.0,
5955 cost_cache_read: 0.0,
5956 cost_cache_write: 0.0,
5957 context_window: 1050000,
5958 max_tokens: 128000,
5959 },
5960 ModelEntry {
5961 id: "gpt-5.5",
5962 name: "GPT-5.5",
5963 api: Api::OpenAiResponses,
5964 provider: "openai",
5965 reasoning: true,
5966 input: &[InputModality::Text, InputModality::Image],
5967 cost_input: 0.0,
5968 cost_output: 0.0,
5969 cost_cache_read: 0.5,
5970 cost_cache_write: 0.0,
5971 context_window: 272000,
5972 max_tokens: 128000,
5973 },
5974 ModelEntry {
5975 id: "gpt-5.5-pro",
5976 name: "GPT-5.5 Pro",
5977 api: Api::OpenAiResponses,
5978 provider: "openai",
5979 reasoning: true,
5980 input: &[InputModality::Text, InputModality::Image],
5981 cost_input: 0.0,
5982 cost_output: 0.0,
5983 cost_cache_read: 0.0,
5984 cost_cache_write: 0.0,
5985 context_window: 1050000,
5986 max_tokens: 128000,
5987 },
5988 ModelEntry {
5989 id: "o1",
5990 name: "o1",
5991 api: Api::OpenAiResponses,
5992 provider: "openai",
5993 reasoning: true,
5994 input: &[InputModality::Text, InputModality::Image],
5995 cost_input: 0.0,
5996 cost_output: 0.0,
5997 cost_cache_read: 7.5,
5998 cost_cache_write: 0.0,
5999 context_window: 200000,
6000 max_tokens: 100000,
6001 },
6002 ModelEntry {
6003 id: "o1-pro",
6004 name: "o1-pro",
6005 api: Api::OpenAiResponses,
6006 provider: "openai",
6007 reasoning: true,
6008 input: &[InputModality::Text, InputModality::Image],
6009 cost_input: 0.0,
6010 cost_output: 0.0,
6011 cost_cache_read: 0.0,
6012 cost_cache_write: 0.0,
6013 context_window: 200000,
6014 max_tokens: 100000,
6015 },
6016 ModelEntry {
6017 id: "o3",
6018 name: "o3",
6019 api: Api::OpenAiResponses,
6020 provider: "openai",
6021 reasoning: true,
6022 input: &[InputModality::Text, InputModality::Image],
6023 cost_input: 0.0,
6024 cost_output: 0.0,
6025 cost_cache_read: 0.5,
6026 cost_cache_write: 0.0,
6027 context_window: 200000,
6028 max_tokens: 100000,
6029 },
6030 ModelEntry {
6031 id: "o3-deep-research",
6032 name: "o3-deep-research",
6033 api: Api::OpenAiResponses,
6034 provider: "openai",
6035 reasoning: true,
6036 input: &[InputModality::Text, InputModality::Image],
6037 cost_input: 0.0,
6038 cost_output: 0.0,
6039 cost_cache_read: 2.5,
6040 cost_cache_write: 0.0,
6041 context_window: 200000,
6042 max_tokens: 100000,
6043 },
6044 ModelEntry {
6045 id: "o3-mini",
6046 name: "o3-mini",
6047 api: Api::OpenAiResponses,
6048 provider: "openai",
6049 reasoning: true,
6050 input: &[InputModality::Text],
6051 cost_input: 0.0,
6052 cost_output: 0.0,
6053 cost_cache_read: 0.55,
6054 cost_cache_write: 0.0,
6055 context_window: 200000,
6056 max_tokens: 100000,
6057 },
6058 ModelEntry {
6059 id: "o3-pro",
6060 name: "o3-pro",
6061 api: Api::OpenAiResponses,
6062 provider: "openai",
6063 reasoning: true,
6064 input: &[InputModality::Text, InputModality::Image],
6065 cost_input: 0.0,
6066 cost_output: 0.0,
6067 cost_cache_read: 0.0,
6068 cost_cache_write: 0.0,
6069 context_window: 200000,
6070 max_tokens: 100000,
6071 },
6072 ModelEntry {
6073 id: "o4-mini",
6074 name: "o4-mini",
6075 api: Api::OpenAiResponses,
6076 provider: "openai",
6077 reasoning: true,
6078 input: &[InputModality::Text, InputModality::Image],
6079 cost_input: 0.0,
6080 cost_output: 0.0,
6081 cost_cache_read: 0.28,
6082 cost_cache_write: 0.0,
6083 context_window: 200000,
6084 max_tokens: 100000,
6085 },
6086 ModelEntry {
6087 id: "o4-mini-deep-research",
6088 name: "o4-mini-deep-research",
6089 api: Api::OpenAiResponses,
6090 provider: "openai",
6091 reasoning: true,
6092 input: &[InputModality::Text, InputModality::Image],
6093 cost_input: 0.0,
6094 cost_output: 0.0,
6095 cost_cache_read: 0.5,
6096 cost_cache_write: 0.0,
6097 context_window: 200000,
6098 max_tokens: 100000,
6099 },
6100];
6101
6102static OPENAI_CODEX_MODELS: &[ModelEntry] = &[
6104 ModelEntry {
6105 id: "gpt-5.1",
6106 name: "GPT-5.1",
6107 api: Api::OpenAiCompletions,
6108 provider: "openai-codex",
6109 reasoning: true,
6110 input: &[InputModality::Text, InputModality::Image],
6111 cost_input: 0.0,
6112 cost_output: 0.0,
6113 cost_cache_read: 0.125,
6114 cost_cache_write: 0.0,
6115 context_window: 272000,
6116 max_tokens: 128000,
6117 },
6118 ModelEntry {
6119 id: "gpt-5.1-codex-max",
6120 name: "GPT-5.1 Codex Max",
6121 api: Api::OpenAiCompletions,
6122 provider: "openai-codex",
6123 reasoning: true,
6124 input: &[InputModality::Text, InputModality::Image],
6125 cost_input: 0.0,
6126 cost_output: 0.0,
6127 cost_cache_read: 0.125,
6128 cost_cache_write: 0.0,
6129 context_window: 272000,
6130 max_tokens: 128000,
6131 },
6132 ModelEntry {
6133 id: "gpt-5.1-codex-mini",
6134 name: "GPT-5.1 Codex Mini",
6135 api: Api::OpenAiCompletions,
6136 provider: "openai-codex",
6137 reasoning: true,
6138 input: &[InputModality::Text, InputModality::Image],
6139 cost_input: 0.0,
6140 cost_output: 0.0,
6141 cost_cache_read: 0.025,
6142 cost_cache_write: 0.0,
6143 context_window: 272000,
6144 max_tokens: 128000,
6145 },
6146 ModelEntry {
6147 id: "gpt-5.2",
6148 name: "GPT-5.2",
6149 api: Api::OpenAiCompletions,
6150 provider: "openai-codex",
6151 reasoning: true,
6152 input: &[InputModality::Text, InputModality::Image],
6153 cost_input: 0.0,
6154 cost_output: 0.0,
6155 cost_cache_read: 0.175,
6156 cost_cache_write: 0.0,
6157 context_window: 272000,
6158 max_tokens: 128000,
6159 },
6160 ModelEntry {
6161 id: "gpt-5.2-codex",
6162 name: "GPT-5.2 Codex",
6163 api: Api::OpenAiCompletions,
6164 provider: "openai-codex",
6165 reasoning: true,
6166 input: &[InputModality::Text, InputModality::Image],
6167 cost_input: 0.0,
6168 cost_output: 0.0,
6169 cost_cache_read: 0.175,
6170 cost_cache_write: 0.0,
6171 context_window: 272000,
6172 max_tokens: 128000,
6173 },
6174 ModelEntry {
6175 id: "gpt-5.3-codex",
6176 name: "GPT-5.3 Codex",
6177 api: Api::OpenAiCompletions,
6178 provider: "openai-codex",
6179 reasoning: true,
6180 input: &[InputModality::Text, InputModality::Image],
6181 cost_input: 0.0,
6182 cost_output: 0.0,
6183 cost_cache_read: 0.175,
6184 cost_cache_write: 0.0,
6185 context_window: 272000,
6186 max_tokens: 128000,
6187 },
6188 ModelEntry {
6189 id: "gpt-5.3-codex-spark",
6190 name: "GPT-5.3 Codex Spark",
6191 api: Api::OpenAiCompletions,
6192 provider: "openai-codex",
6193 reasoning: true,
6194 input: &[InputModality::Text],
6195 cost_input: 0.0,
6196 cost_output: 0.0,
6197 cost_cache_read: 0.0,
6198 cost_cache_write: 0.0,
6199 context_window: 128000,
6200 max_tokens: 128000,
6201 },
6202 ModelEntry {
6203 id: "gpt-5.4",
6204 name: "GPT-5.4",
6205 api: Api::OpenAiCompletions,
6206 provider: "openai-codex",
6207 reasoning: true,
6208 input: &[InputModality::Text, InputModality::Image],
6209 cost_input: 0.0,
6210 cost_output: 0.0,
6211 cost_cache_read: 0.25,
6212 cost_cache_write: 0.0,
6213 context_window: 272000,
6214 max_tokens: 128000,
6215 },
6216 ModelEntry {
6217 id: "gpt-5.4-mini",
6218 name: "GPT-5.4 Mini",
6219 api: Api::OpenAiCompletions,
6220 provider: "openai-codex",
6221 reasoning: true,
6222 input: &[InputModality::Text, InputModality::Image],
6223 cost_input: 0.0,
6224 cost_output: 0.0,
6225 cost_cache_read: 0.075,
6226 cost_cache_write: 0.0,
6227 context_window: 272000,
6228 max_tokens: 128000,
6229 },
6230 ModelEntry {
6231 id: "gpt-5.5",
6232 name: "GPT-5.5",
6233 api: Api::OpenAiCompletions,
6234 provider: "openai-codex",
6235 reasoning: true,
6236 input: &[InputModality::Text, InputModality::Image],
6237 cost_input: 0.0,
6238 cost_output: 0.0,
6239 cost_cache_read: 0.5,
6240 cost_cache_write: 0.0,
6241 context_window: 272000,
6242 max_tokens: 128000,
6243 },
6244];
6245
6246static OPENCODE_MODELS: &[ModelEntry] = &[
6248 ModelEntry {
6249 id: "big-pickle",
6250 name: "Big Pickle",
6251 api: Api::AnthropicMessages,
6252 provider: "opencode",
6253 reasoning: true,
6254 input: &[InputModality::Text],
6255 cost_input: 0.0,
6256 cost_output: 0.0,
6257 cost_cache_read: 0.0,
6258 cost_cache_write: 0.0,
6259 context_window: 200000,
6260 max_tokens: 128000,
6261 },
6262 ModelEntry {
6263 id: "claude-haiku-4-5",
6264 name: "Claude Haiku 4.5",
6265 api: Api::AnthropicMessages,
6266 provider: "opencode",
6267 reasoning: true,
6268 input: &[InputModality::Text, InputModality::Image],
6269 cost_input: 0.0,
6270 cost_output: 0.0,
6271 cost_cache_read: 0.1,
6272 cost_cache_write: 1.25,
6273 context_window: 200000,
6274 max_tokens: 64000,
6275 },
6276 ModelEntry {
6277 id: "claude-opus-4-1",
6278 name: "Claude Opus 4.1",
6279 api: Api::AnthropicMessages,
6280 provider: "opencode",
6281 reasoning: true,
6282 input: &[InputModality::Text, InputModality::Image],
6283 cost_input: 0.0,
6284 cost_output: 0.0,
6285 cost_cache_read: 1.5,
6286 cost_cache_write: 18.75,
6287 context_window: 200000,
6288 max_tokens: 32000,
6289 },
6290 ModelEntry {
6291 id: "claude-opus-4-5",
6292 name: "Claude Opus 4.5",
6293 api: Api::AnthropicMessages,
6294 provider: "opencode",
6295 reasoning: true,
6296 input: &[InputModality::Text, InputModality::Image],
6297 cost_input: 0.0,
6298 cost_output: 0.0,
6299 cost_cache_read: 0.5,
6300 cost_cache_write: 6.25,
6301 context_window: 200000,
6302 max_tokens: 64000,
6303 },
6304 ModelEntry {
6305 id: "claude-opus-4-7",
6306 name: "Claude Opus 4.7",
6307 api: Api::AnthropicMessages,
6308 provider: "opencode",
6309 reasoning: true,
6310 input: &[InputModality::Text, InputModality::Image],
6311 cost_input: 0.0,
6312 cost_output: 0.0,
6313 cost_cache_read: 0.5,
6314 cost_cache_write: 6.25,
6315 context_window: 1000000,
6316 max_tokens: 128000,
6317 },
6318 ModelEntry {
6319 id: "claude-sonnet-4",
6320 name: "Claude Sonnet 4",
6321 api: Api::AnthropicMessages,
6322 provider: "opencode",
6323 reasoning: true,
6324 input: &[InputModality::Text, InputModality::Image],
6325 cost_input: 0.0,
6326 cost_output: 0.0,
6327 cost_cache_read: 0.3,
6328 cost_cache_write: 3.75,
6329 context_window: 200000,
6330 max_tokens: 64000,
6331 },
6332 ModelEntry {
6333 id: "claude-sonnet-4-5",
6334 name: "Claude Sonnet 4.5",
6335 api: Api::AnthropicMessages,
6336 provider: "opencode",
6337 reasoning: true,
6338 input: &[InputModality::Text, InputModality::Image],
6339 cost_input: 0.0,
6340 cost_output: 0.0,
6341 cost_cache_read: 0.3,
6342 cost_cache_write: 3.75,
6343 context_window: 200000,
6344 max_tokens: 64000,
6345 },
6346 ModelEntry {
6347 id: "claude-sonnet-4-6",
6348 name: "Claude Sonnet 4.6",
6349 api: Api::AnthropicMessages,
6350 provider: "opencode",
6351 reasoning: true,
6352 input: &[InputModality::Text, InputModality::Image],
6353 cost_input: 0.0,
6354 cost_output: 0.0,
6355 cost_cache_read: 0.3,
6356 cost_cache_write: 3.75,
6357 context_window: 1000000,
6358 max_tokens: 64000,
6359 },
6360 ModelEntry {
6361 id: "gemini-3.1-pro",
6362 name: "Gemini 3.1 Pro Preview",
6363 api: Api::GoogleGenerativeAi,
6364 provider: "opencode",
6365 reasoning: true,
6366 input: &[InputModality::Text, InputModality::Image],
6367 cost_input: 0.0,
6368 cost_output: 0.0,
6369 cost_cache_read: 0.2,
6370 cost_cache_write: 0.0,
6371 context_window: 1048576,
6372 max_tokens: 65536,
6373 },
6374 ModelEntry {
6375 id: "glm-5",
6376 name: "GLM-5",
6377 api: Api::OpenAiCompletions,
6378 provider: "opencode",
6379 reasoning: true,
6380 input: &[InputModality::Text],
6381 cost_input: 0.0,
6382 cost_output: 0.0,
6383 cost_cache_read: 0.2,
6384 cost_cache_write: 0.0,
6385 context_window: 204800,
6386 max_tokens: 131072,
6387 },
6388 ModelEntry {
6389 id: "glm-5.1",
6390 name: "GLM-5.1",
6391 api: Api::OpenAiCompletions,
6392 provider: "opencode",
6393 reasoning: true,
6394 input: &[InputModality::Text],
6395 cost_input: 0.0,
6396 cost_output: 0.0,
6397 cost_cache_read: 0.26,
6398 cost_cache_write: 0.0,
6399 context_window: 204800,
6400 max_tokens: 131072,
6401 },
6402 ModelEntry {
6403 id: "gpt-5",
6404 name: "GPT-5",
6405 api: Api::OpenAiResponses,
6406 provider: "opencode",
6407 reasoning: true,
6408 input: &[InputModality::Text, InputModality::Image],
6409 cost_input: 0.0,
6410 cost_output: 0.0,
6411 cost_cache_read: 0.107,
6412 cost_cache_write: 0.0,
6413 context_window: 400000,
6414 max_tokens: 128000,
6415 },
6416 ModelEntry {
6417 id: "gpt-5-nano",
6418 name: "GPT-5 Nano",
6419 api: Api::OpenAiResponses,
6420 provider: "opencode",
6421 reasoning: true,
6422 input: &[InputModality::Text, InputModality::Image],
6423 cost_input: 0.0,
6424 cost_output: 0.0,
6425 cost_cache_read: 0.0,
6426 cost_cache_write: 0.0,
6427 context_window: 400000,
6428 max_tokens: 128000,
6429 },
6430 ModelEntry {
6431 id: "gpt-5.1",
6432 name: "GPT-5.1",
6433 api: Api::OpenAiResponses,
6434 provider: "opencode",
6435 reasoning: true,
6436 input: &[InputModality::Text, InputModality::Image],
6437 cost_input: 0.0,
6438 cost_output: 0.0,
6439 cost_cache_read: 0.107,
6440 cost_cache_write: 0.0,
6441 context_window: 400000,
6442 max_tokens: 128000,
6443 },
6444 ModelEntry {
6445 id: "gpt-5.1-codex",
6446 name: "GPT-5.1 Codex",
6447 api: Api::OpenAiResponses,
6448 provider: "opencode",
6449 reasoning: true,
6450 input: &[InputModality::Text, InputModality::Image],
6451 cost_input: 0.0,
6452 cost_output: 0.0,
6453 cost_cache_read: 0.107,
6454 cost_cache_write: 0.0,
6455 context_window: 400000,
6456 max_tokens: 128000,
6457 },
6458 ModelEntry {
6459 id: "gpt-5.1-codex-mini",
6460 name: "GPT-5.1 Codex Mini",
6461 api: Api::OpenAiResponses,
6462 provider: "opencode",
6463 reasoning: true,
6464 input: &[InputModality::Text, InputModality::Image],
6465 cost_input: 0.0,
6466 cost_output: 0.0,
6467 cost_cache_read: 0.025,
6468 cost_cache_write: 0.0,
6469 context_window: 400000,
6470 max_tokens: 128000,
6471 },
6472 ModelEntry {
6473 id: "gpt-5.2",
6474 name: "GPT-5.2",
6475 api: Api::OpenAiResponses,
6476 provider: "opencode",
6477 reasoning: true,
6478 input: &[InputModality::Text, InputModality::Image],
6479 cost_input: 0.0,
6480 cost_output: 0.0,
6481 cost_cache_read: 0.175,
6482 cost_cache_write: 0.0,
6483 context_window: 400000,
6484 max_tokens: 128000,
6485 },
6486 ModelEntry {
6487 id: "gpt-5.2-codex",
6488 name: "GPT-5.2 Codex",
6489 api: Api::OpenAiResponses,
6490 provider: "opencode",
6491 reasoning: true,
6492 input: &[InputModality::Text, InputModality::Image],
6493 cost_input: 0.0,
6494 cost_output: 0.0,
6495 cost_cache_read: 0.175,
6496 cost_cache_write: 0.0,
6497 context_window: 400000,
6498 max_tokens: 128000,
6499 },
6500 ModelEntry {
6501 id: "gpt-5.3-codex",
6502 name: "GPT-5.3 Codex",
6503 api: Api::OpenAiResponses,
6504 provider: "opencode",
6505 reasoning: true,
6506 input: &[InputModality::Text, InputModality::Image],
6507 cost_input: 0.0,
6508 cost_output: 0.0,
6509 cost_cache_read: 0.175,
6510 cost_cache_write: 0.0,
6511 context_window: 400000,
6512 max_tokens: 128000,
6513 },
6514 ModelEntry {
6515 id: "gpt-5.4-mini",
6516 name: "GPT-5.4 Mini",
6517 api: Api::OpenAiResponses,
6518 provider: "opencode",
6519 reasoning: true,
6520 input: &[InputModality::Text, InputModality::Image],
6521 cost_input: 0.0,
6522 cost_output: 0.0,
6523 cost_cache_read: 0.075,
6524 cost_cache_write: 0.0,
6525 context_window: 400000,
6526 max_tokens: 128000,
6527 },
6528 ModelEntry {
6529 id: "gpt-5.4-nano",
6530 name: "GPT-5.4 Nano",
6531 api: Api::OpenAiResponses,
6532 provider: "opencode",
6533 reasoning: true,
6534 input: &[InputModality::Text, InputModality::Image],
6535 cost_input: 0.0,
6536 cost_output: 0.0,
6537 cost_cache_read: 0.02,
6538 cost_cache_write: 0.0,
6539 context_window: 400000,
6540 max_tokens: 128000,
6541 },
6542 ModelEntry {
6543 id: "gpt-5.4-pro",
6544 name: "GPT-5.4 Pro",
6545 api: Api::OpenAiResponses,
6546 provider: "opencode",
6547 reasoning: true,
6548 input: &[InputModality::Text, InputModality::Image],
6549 cost_input: 0.0,
6550 cost_output: 0.0,
6551 cost_cache_read: 30.0,
6552 cost_cache_write: 0.0,
6553 context_window: 1050000,
6554 max_tokens: 128000,
6555 },
6556 ModelEntry {
6557 id: "gpt-5.5",
6558 name: "GPT-5.5",
6559 api: Api::OpenAiResponses,
6560 provider: "opencode",
6561 reasoning: true,
6562 input: &[InputModality::Text, InputModality::Image],
6563 cost_input: 0.0,
6564 cost_output: 0.0,
6565 cost_cache_read: 0.5,
6566 cost_cache_write: 0.0,
6567 context_window: 1050000,
6568 max_tokens: 128000,
6569 },
6570 ModelEntry {
6571 id: "hy3-preview-free",
6572 name: "Hy3 preview Free",
6573 api: Api::OpenAiCompletions,
6574 provider: "opencode",
6575 reasoning: true,
6576 input: &[InputModality::Text],
6577 cost_input: 0.0,
6578 cost_output: 0.0,
6579 cost_cache_read: 0.0,
6580 cost_cache_write: 0.0,
6581 context_window: 256000,
6582 max_tokens: 64000,
6583 },
6584 ModelEntry {
6585 id: "kimi-k2.5",
6586 name: "Kimi K2.5",
6587 api: Api::OpenAiCompletions,
6588 provider: "opencode",
6589 reasoning: true,
6590 input: &[InputModality::Text, InputModality::Image],
6591 cost_input: 0.0,
6592 cost_output: 0.0,
6593 cost_cache_read: 0.08,
6594 cost_cache_write: 0.0,
6595 context_window: 262144,
6596 max_tokens: 65536,
6597 },
6598 ModelEntry {
6599 id: "kimi-k2.6",
6600 name: "Kimi K2.6",
6601 api: Api::OpenAiCompletions,
6602 provider: "opencode",
6603 reasoning: true,
6604 input: &[InputModality::Text, InputModality::Image],
6605 cost_input: 0.0,
6606 cost_output: 0.0,
6607 cost_cache_read: 0.16,
6608 cost_cache_write: 0.0,
6609 context_window: 262144,
6610 max_tokens: 65536,
6611 },
6612 ModelEntry {
6613 id: "minimax-m2.5",
6614 name: "MiniMax M2.5",
6615 api: Api::OpenAiCompletions,
6616 provider: "opencode",
6617 reasoning: true,
6618 input: &[InputModality::Text],
6619 cost_input: 0.0,
6620 cost_output: 0.0,
6621 cost_cache_read: 0.06,
6622 cost_cache_write: 0.0,
6623 context_window: 204800,
6624 max_tokens: 131072,
6625 },
6626 ModelEntry {
6627 id: "minimax-m2.7",
6628 name: "MiniMax M2.7",
6629 api: Api::OpenAiCompletions,
6630 provider: "opencode",
6631 reasoning: true,
6632 input: &[InputModality::Text],
6633 cost_input: 0.0,
6634 cost_output: 0.0,
6635 cost_cache_read: 0.06,
6636 cost_cache_write: 0.0,
6637 context_window: 204800,
6638 max_tokens: 131072,
6639 },
6640 ModelEntry {
6641 id: "nemotron-3-super-free",
6642 name: "Nemotron 3 Super Free",
6643 api: Api::OpenAiCompletions,
6644 provider: "opencode",
6645 reasoning: true,
6646 input: &[InputModality::Text],
6647 cost_input: 0.0,
6648 cost_output: 0.0,
6649 cost_cache_read: 0.0,
6650 cost_cache_write: 0.0,
6651 context_window: 204800,
6652 max_tokens: 128000,
6653 },
6654 ModelEntry {
6655 id: "qwen3.5-plus",
6656 name: "Qwen3.5 Plus",
6657 api: Api::AnthropicMessages,
6658 provider: "opencode",
6659 reasoning: true,
6660 input: &[InputModality::Text, InputModality::Image],
6661 cost_input: 0.0,
6662 cost_output: 0.0,
6663 cost_cache_read: 0.02,
6664 cost_cache_write: 0.25,
6665 context_window: 262144,
6666 max_tokens: 65536,
6667 },
6668 ModelEntry {
6669 id: "deepseek-v4-flash-free",
6670 name: "DeepSeek V4 Flash Free",
6671 api: Api::OpenAiCompletions,
6672 provider: "opencode",
6673 reasoning: true,
6674 input: &[InputModality::Text],
6675 cost_input: 0.0,
6676 cost_output: 0.0,
6677 cost_cache_read: 0.0,
6678 cost_cache_write: 0.0,
6679 context_window: 200000,
6680 max_tokens: 128000,
6681 },
6682 ModelEntry {
6683 id: "gemini-3-flash",
6684 name: "Gemini 3 Flash",
6685 api: Api::GoogleGenerativeAi,
6686 provider: "opencode",
6687 reasoning: true,
6688 input: &[InputModality::Text, InputModality::Image],
6689 cost_input: 0.5,
6690 cost_output: 3.0,
6691 cost_cache_read: 0.05,
6692 cost_cache_write: 0.0,
6693 context_window: 1048576,
6694 max_tokens: 65536,
6695 },
6696 ModelEntry {
6697 id: "gemini-3.5-flash",
6698 name: "Gemini 3.5 Flash",
6699 api: Api::GoogleGenerativeAi,
6700 provider: "opencode",
6701 reasoning: true,
6702 input: &[InputModality::Text, InputModality::Image],
6703 cost_input: 1.5,
6704 cost_output: 9.0,
6705 cost_cache_read: 0.15,
6706 cost_cache_write: 0.0,
6707 context_window: 1048576,
6708 max_tokens: 65536,
6709 },
6710 ModelEntry {
6711 id: "grok-build-0.1",
6712 name: "Grok Build 0.1",
6713 api: Api::OpenAiCompletions,
6714 provider: "opencode",
6715 reasoning: true,
6716 input: &[InputModality::Text, InputModality::Image],
6717 cost_input: 1.0,
6718 cost_output: 2.0,
6719 cost_cache_read: 0.2,
6720 cost_cache_write: 0.0,
6721 context_window: 256000,
6722 max_tokens: 256000,
6723 },
6724 ModelEntry {
6725 id: "mimo-v2.5-free",
6726 name: "MiMo V2.5 Free",
6727 api: Api::OpenAiCompletions,
6728 provider: "opencode",
6729 reasoning: true,
6730 input: &[InputModality::Text, InputModality::Image],
6731 cost_input: 0.0,
6732 cost_output: 0.0,
6733 cost_cache_read: 0.0,
6734 cost_cache_write: 0.0,
6735 context_window: 1000000,
6736 max_tokens: 128000,
6737 },
6738];
6739
6740static OPENCODE_GO_MODELS: &[ModelEntry] = &[
6742 ModelEntry {
6743 id: "deepseek-v4-flash",
6744 name: "DeepSeek V4 Flash",
6745 api: Api::OpenAiCompletions,
6746 provider: "opencode-go",
6747 reasoning: true,
6748 input: &[InputModality::Text],
6749 cost_input: 0.0,
6750 cost_output: 0.0,
6751 cost_cache_read: 0.0028,
6752 cost_cache_write: 0.0,
6753 context_window: 1000000,
6754 max_tokens: 384000,
6755 },
6756 ModelEntry {
6757 id: "deepseek-v4-pro",
6758 name: "DeepSeek V4 Pro",
6759 api: Api::OpenAiCompletions,
6760 provider: "opencode-go",
6761 reasoning: true,
6762 input: &[InputModality::Text],
6763 cost_input: 0.0,
6764 cost_output: 0.0,
6765 cost_cache_read: 0.0145,
6766 cost_cache_write: 0.0,
6767 context_window: 1000000,
6768 max_tokens: 384000,
6769 },
6770 ModelEntry {
6771 id: "glm-5",
6772 name: "GLM-5",
6773 api: Api::OpenAiCompletions,
6774 provider: "opencode-go",
6775 reasoning: true,
6776 input: &[InputModality::Text],
6777 cost_input: 0.0,
6778 cost_output: 0.0,
6779 cost_cache_read: 0.2,
6780 cost_cache_write: 0.0,
6781 context_window: 202752,
6782 max_tokens: 32768,
6783 },
6784 ModelEntry {
6785 id: "glm-5.1",
6786 name: "GLM-5.1",
6787 api: Api::OpenAiCompletions,
6788 provider: "opencode-go",
6789 reasoning: true,
6790 input: &[InputModality::Text],
6791 cost_input: 0.0,
6792 cost_output: 0.0,
6793 cost_cache_read: 0.26,
6794 cost_cache_write: 0.0,
6795 context_window: 202752,
6796 max_tokens: 32768,
6797 },
6798 ModelEntry {
6799 id: "kimi-k2.5",
6800 name: "Kimi K2.5",
6801 api: Api::OpenAiCompletions,
6802 provider: "opencode-go",
6803 reasoning: true,
6804 input: &[InputModality::Text, InputModality::Image],
6805 cost_input: 0.0,
6806 cost_output: 0.0,
6807 cost_cache_read: 0.1,
6808 cost_cache_write: 0.0,
6809 context_window: 262144,
6810 max_tokens: 65536,
6811 },
6812 ModelEntry {
6813 id: "kimi-k2.6",
6814 name: "Kimi K2.6 (3x limits)",
6815 api: Api::OpenAiCompletions,
6816 provider: "opencode-go",
6817 reasoning: true,
6818 input: &[InputModality::Text, InputModality::Image],
6819 cost_input: 0.0,
6820 cost_output: 0.0,
6821 cost_cache_read: 0.054,
6822 cost_cache_write: 0.0,
6823 context_window: 262144,
6824 max_tokens: 65536,
6825 },
6826 ModelEntry {
6827 id: "mimo-v2-omni",
6828 name: "MiMo V2 Omni",
6829 api: Api::OpenAiCompletions,
6830 provider: "opencode-go",
6831 reasoning: true,
6832 input: &[InputModality::Text, InputModality::Image],
6833 cost_input: 0.0,
6834 cost_output: 0.0,
6835 cost_cache_read: 0.08,
6836 cost_cache_write: 0.0,
6837 context_window: 262144,
6838 max_tokens: 128000,
6839 },
6840 ModelEntry {
6841 id: "mimo-v2-pro",
6842 name: "MiMo V2 Pro",
6843 api: Api::OpenAiCompletions,
6844 provider: "opencode-go",
6845 reasoning: true,
6846 input: &[InputModality::Text],
6847 cost_input: 0.0,
6848 cost_output: 0.0,
6849 cost_cache_read: 0.2,
6850 cost_cache_write: 0.0,
6851 context_window: 1048576,
6852 max_tokens: 128000,
6853 },
6854 ModelEntry {
6855 id: "mimo-v2.5",
6856 name: "MiMo V2.5",
6857 api: Api::OpenAiCompletions,
6858 provider: "opencode-go",
6859 reasoning: true,
6860 input: &[InputModality::Text, InputModality::Image],
6861 cost_input: 0.0,
6862 cost_output: 0.0,
6863 cost_cache_read: 0.08,
6864 cost_cache_write: 0.0,
6865 context_window: 1000000,
6866 max_tokens: 128000,
6867 },
6868 ModelEntry {
6869 id: "mimo-v2.5-pro",
6870 name: "MiMo V2.5 Pro",
6871 api: Api::OpenAiCompletions,
6872 provider: "opencode-go",
6873 reasoning: true,
6874 input: &[InputModality::Text],
6875 cost_input: 0.0,
6876 cost_output: 0.0,
6877 cost_cache_read: 0.2,
6878 cost_cache_write: 0.0,
6879 context_window: 1048576,
6880 max_tokens: 128000,
6881 },
6882 ModelEntry {
6883 id: "minimax-m2.5",
6884 name: "MiniMax M2.5",
6885 api: Api::OpenAiCompletions,
6886 provider: "opencode-go",
6887 reasoning: true,
6888 input: &[InputModality::Text],
6889 cost_input: 0.0,
6890 cost_output: 0.0,
6891 cost_cache_read: 0.03,
6892 cost_cache_write: 0.0,
6893 context_window: 204800,
6894 max_tokens: 65536,
6895 },
6896 ModelEntry {
6897 id: "minimax-m2.7",
6898 name: "MiniMax M2.7",
6899 api: Api::AnthropicMessages,
6900 provider: "opencode-go",
6901 reasoning: true,
6902 input: &[InputModality::Text],
6903 cost_input: 0.0,
6904 cost_output: 0.0,
6905 cost_cache_read: 0.06,
6906 cost_cache_write: 0.0,
6907 context_window: 204800,
6908 max_tokens: 131072,
6909 },
6910 ModelEntry {
6911 id: "qwen3.5-plus",
6912 name: "Qwen3.5 Plus",
6913 api: Api::AnthropicMessages,
6914 provider: "opencode-go",
6915 reasoning: true,
6916 input: &[InputModality::Text, InputModality::Image],
6917 cost_input: 0.0,
6918 cost_output: 0.0,
6919 cost_cache_read: 0.02,
6920 cost_cache_write: 0.25,
6921 context_window: 262144,
6922 max_tokens: 65536,
6923 },
6924 ModelEntry {
6925 id: "qwen3.6-plus",
6926 name: "Qwen3.6 Plus",
6927 api: Api::AnthropicMessages,
6928 provider: "opencode-go",
6929 reasoning: true,
6930 input: &[InputModality::Text, InputModality::Image],
6931 cost_input: 0.0,
6932 cost_output: 0.0,
6933 cost_cache_read: 0.05,
6934 cost_cache_write: 0.625,
6935 context_window: 262144,
6936 max_tokens: 65536,
6937 },
6938 ModelEntry {
6939 id: "qwen3.7-max",
6940 name: "Qwen3.7 Max",
6941 api: Api::AnthropicMessages,
6942 provider: "opencode-go",
6943 reasoning: true,
6944 input: &[InputModality::Text],
6945 cost_input: 2.5,
6946 cost_output: 7.5,
6947 cost_cache_read: 0.5,
6948 cost_cache_write: 3.125,
6949 context_window: 1000000,
6950 max_tokens: 65536,
6951 },
6952];
6953
6954static OPENROUTER_MODELS: &[ModelEntry] = &[
6956 ModelEntry {
6957 id: "ai21/jamba-large-1.7",
6958 name: "AI21: Jamba Large 1.7",
6959 api: Api::OpenAiCompletions,
6960 provider: "openrouter",
6961 reasoning: false,
6962 input: &[InputModality::Text],
6963 cost_input: 0.0,
6964 cost_output: 0.0,
6965 cost_cache_read: 0.0,
6966 cost_cache_write: 0.0,
6967 context_window: 256000,
6968 max_tokens: 4096,
6969 },
6970 ModelEntry {
6971 id: "amazon/nova-lite-v1",
6972 name: "Amazon: Nova Lite 1.0",
6973 api: Api::OpenAiCompletions,
6974 provider: "openrouter",
6975 reasoning: false,
6976 input: &[InputModality::Text, InputModality::Image],
6977 cost_input: 0.0,
6978 cost_output: 0.0,
6979 cost_cache_read: 0.0,
6980 cost_cache_write: 0.0,
6981 context_window: 300000,
6982 max_tokens: 5120,
6983 },
6984 ModelEntry {
6985 id: "anthropic/claude-3.5-haiku",
6986 name: "Anthropic: Claude 3.5 Haiku",
6987 api: Api::OpenAiCompletions,
6988 provider: "openrouter",
6989 reasoning: false,
6990 input: &[InputModality::Text, InputModality::Image],
6991 cost_input: 0.0,
6992 cost_output: 0.0,
6993 cost_cache_read: 0.08,
6994 cost_cache_write: 1.0,
6995 context_window: 200000,
6996 max_tokens: 8192,
6997 },
6998 ModelEntry {
6999 id: "anthropic/claude-opus-4",
7000 name: "Anthropic: Claude Opus 4",
7001 api: Api::OpenAiCompletions,
7002 provider: "openrouter",
7003 reasoning: true,
7004 input: &[InputModality::Text, InputModality::Image],
7005 cost_input: 0.0,
7006 cost_output: 0.0,
7007 cost_cache_read: 1.5,
7008 cost_cache_write: 18.75,
7009 context_window: 200000,
7010 max_tokens: 32000,
7011 },
7012 ModelEntry {
7013 id: "anthropic/claude-opus-4.7",
7014 name: "Anthropic: Claude Opus 4.7",
7015 api: Api::OpenAiCompletions,
7016 provider: "openrouter",
7017 reasoning: true,
7018 input: &[InputModality::Text, InputModality::Image],
7019 cost_input: 0.0,
7020 cost_output: 0.0,
7021 cost_cache_read: 0.5,
7022 cost_cache_write: 6.25,
7023 context_window: 1000000,
7024 max_tokens: 128000,
7025 },
7026 ModelEntry {
7027 id: "arcee-ai/trinity-large-preview",
7028 name: "Arcee AI: Trinity Large Preview",
7029 api: Api::OpenAiCompletions,
7030 provider: "openrouter",
7031 reasoning: false,
7032 input: &[InputModality::Text],
7033 cost_input: 0.0,
7034 cost_output: 0.0,
7035 cost_cache_read: 0.0,
7036 cost_cache_write: 0.0,
7037 context_window: 131000,
7038 max_tokens: 4096,
7039 },
7040 ModelEntry {
7041 id: "baidu/ernie-4.5-21b-a3b",
7042 name: "Baidu: ERNIE 4.5 21B A3B",
7043 api: Api::OpenAiCompletions,
7044 provider: "openrouter",
7045 reasoning: false,
7046 input: &[InputModality::Text],
7047 cost_input: 0.0,
7048 cost_output: 0.0,
7049 cost_cache_read: 0.0,
7050 cost_cache_write: 0.0,
7051 context_window: 120000,
7052 max_tokens: 8000,
7053 },
7054 ModelEntry {
7055 id: "bytedance-seed/seed-2.0-lite",
7056 name: "ByteDance Seed: Seed-2.0-Lite",
7057 api: Api::OpenAiCompletions,
7058 provider: "openrouter",
7059 reasoning: true,
7060 input: &[InputModality::Text, InputModality::Image],
7061 cost_input: 0.0,
7062 cost_output: 0.0,
7063 cost_cache_read: 0.0,
7064 cost_cache_write: 0.0,
7065 context_window: 262144,
7066 max_tokens: 131072,
7067 },
7068 ModelEntry {
7069 id: "deepseek/deepseek-chat-v3-0324",
7070 name: "DeepSeek: DeepSeek V3 0324",
7071 api: Api::OpenAiCompletions,
7072 provider: "openrouter",
7073 reasoning: false,
7074 input: &[InputModality::Text],
7075 cost_input: 0.0,
7076 cost_output: 0.0,
7077 cost_cache_read: 0.135,
7078 cost_cache_write: 0.0,
7079 context_window: 163840,
7080 max_tokens: 16384,
7081 },
7082 ModelEntry {
7083 id: "deepseek/deepseek-v3.1-terminus",
7084 name: "DeepSeek: DeepSeek V3.1 Terminus",
7085 api: Api::OpenAiCompletions,
7086 provider: "openrouter",
7087 reasoning: true,
7088 input: &[InputModality::Text],
7089 cost_input: 0.0,
7090 cost_output: 0.0,
7091 cost_cache_read: 0.13,
7092 cost_cache_write: 0.0,
7093 context_window: 163840,
7094 max_tokens: 32768,
7095 },
7096 ModelEntry {
7097 id: "essentialai/rnj-1-instruct",
7098 name: "EssentialAI: Rnj 1 Instruct",
7099 api: Api::OpenAiCompletions,
7100 provider: "openrouter",
7101 reasoning: false,
7102 input: &[InputModality::Text],
7103 cost_input: 0.0,
7104 cost_output: 0.0,
7105 cost_cache_read: 0.0,
7106 cost_cache_write: 0.0,
7107 context_window: 32768,
7108 max_tokens: 4096,
7109 },
7110 ModelEntry {
7111 id: "google/gemini-2.5-flash-lite-preview-09-2025",
7112 name: "Google: Gemini 2.5 Flash Lite Preview 09-2025",
7113 api: Api::OpenAiCompletions,
7114 provider: "openrouter",
7115 reasoning: true,
7116 input: &[InputModality::Text, InputModality::Image],
7117 cost_input: 0.0,
7118 cost_output: 0.0,
7119 cost_cache_read: 0.01,
7120 cost_cache_write: 0.08333333333333334,
7121 context_window: 1048576,
7122 max_tokens: 65535,
7123 },
7124 ModelEntry {
7125 id: "google/gemini-3-flash-preview",
7126 name: "Google: Gemini 3 Flash Preview",
7127 api: Api::OpenAiCompletions,
7128 provider: "openrouter",
7129 reasoning: true,
7130 input: &[InputModality::Text, InputModality::Image],
7131 cost_input: 0.0,
7132 cost_output: 0.0,
7133 cost_cache_read: 0.05,
7134 cost_cache_write: 0.08333333333333334,
7135 context_window: 1048576,
7136 max_tokens: 65536,
7137 },
7138 ModelEntry {
7139 id: "google/gemma-3-27b-it",
7140 name: "Google: Gemma 3 27B",
7141 api: Api::OpenAiCompletions,
7142 provider: "openrouter",
7143 reasoning: false,
7144 input: &[InputModality::Text, InputModality::Image],
7145 cost_input: 0.0,
7146 cost_output: 0.0,
7147 cost_cache_read: 0.0,
7148 cost_cache_write: 0.0,
7149 context_window: 131072,
7150 max_tokens: 16384,
7151 },
7152 ModelEntry {
7153 id: "google/gemma-4-31b-it:free",
7154 name: "Google: Gemma 4 31B (free)",
7155 api: Api::OpenAiCompletions,
7156 provider: "openrouter",
7157 reasoning: true,
7158 input: &[InputModality::Text, InputModality::Image],
7159 cost_input: 0.0,
7160 cost_output: 0.0,
7161 cost_cache_read: 0.0,
7162 cost_cache_write: 0.0,
7163 context_window: 262144,
7164 max_tokens: 32768,
7165 },
7166 ModelEntry {
7167 id: "kwaipilot/kat-coder-pro-v2",
7168 name: "Kwaipilot: KAT-Coder-Pro V2",
7169 api: Api::OpenAiCompletions,
7170 provider: "openrouter",
7171 reasoning: false,
7172 input: &[InputModality::Text],
7173 cost_input: 0.0,
7174 cost_output: 0.0,
7175 cost_cache_read: 0.06,
7176 cost_cache_write: 0.0,
7177 context_window: 256000,
7178 max_tokens: 80000,
7179 },
7180 ModelEntry {
7181 id: "meta-llama/llama-3.3-70b-instruct",
7182 name: "Meta: Llama 3.3 70B Instruct",
7183 api: Api::OpenAiCompletions,
7184 provider: "openrouter",
7185 reasoning: false,
7186 input: &[InputModality::Text],
7187 cost_input: 0.0,
7188 cost_output: 0.0,
7189 cost_cache_read: 0.0,
7190 cost_cache_write: 0.0,
7191 context_window: 131072,
7192 max_tokens: 16384,
7193 },
7194 ModelEntry {
7195 id: "minimax/minimax-m2.1",
7196 name: "MiniMax: MiniMax M2.1",
7197 api: Api::OpenAiCompletions,
7198 provider: "openrouter",
7199 reasoning: true,
7200 input: &[InputModality::Text],
7201 cost_input: 0.0,
7202 cost_output: 0.0,
7203 cost_cache_read: 0.03,
7204 cost_cache_write: 0.0,
7205 context_window: 196608,
7206 max_tokens: 196608,
7207 },
7208 ModelEntry {
7209 id: "mistralai/codestral-2508",
7210 name: "Mistral: Codestral 2508",
7211 api: Api::OpenAiCompletions,
7212 provider: "openrouter",
7213 reasoning: false,
7214 input: &[InputModality::Text],
7215 cost_input: 0.0,
7216 cost_output: 0.0,
7217 cost_cache_read: 0.03,
7218 cost_cache_write: 0.0,
7219 context_window: 256000,
7220 max_tokens: 4096,
7221 },
7222 ModelEntry {
7223 id: "mistralai/ministral-3b-2512",
7224 name: "Mistral: Ministral 3 3B 2512",
7225 api: Api::OpenAiCompletions,
7226 provider: "openrouter",
7227 reasoning: false,
7228 input: &[InputModality::Text, InputModality::Image],
7229 cost_input: 0.0,
7230 cost_output: 0.0,
7231 cost_cache_read: 0.01,
7232 cost_cache_write: 0.0,
7233 context_window: 131072,
7234 max_tokens: 4096,
7235 },
7236 ModelEntry {
7237 id: "mistralai/mistral-large-2512",
7238 name: "Mistral: Mistral Large 3 2512",
7239 api: Api::OpenAiCompletions,
7240 provider: "openrouter",
7241 reasoning: false,
7242 input: &[InputModality::Text, InputModality::Image],
7243 cost_input: 0.0,
7244 cost_output: 0.0,
7245 cost_cache_read: 0.05,
7246 cost_cache_write: 0.0,
7247 context_window: 262144,
7248 max_tokens: 4096,
7249 },
7250 ModelEntry {
7251 id: "mistralai/mistral-saba",
7252 name: "Mistral: Saba",
7253 api: Api::OpenAiCompletions,
7254 provider: "openrouter",
7255 reasoning: false,
7256 input: &[InputModality::Text],
7257 cost_input: 0.0,
7258 cost_output: 0.0,
7259 cost_cache_read: 0.02,
7260 cost_cache_write: 0.0,
7261 context_window: 32768,
7262 max_tokens: 4096,
7263 },
7264 ModelEntry {
7265 id: "mistralai/pixtral-large-2411",
7266 name: "Mistral: Pixtral Large 2411",
7267 api: Api::OpenAiCompletions,
7268 provider: "openrouter",
7269 reasoning: false,
7270 input: &[InputModality::Text, InputModality::Image],
7271 cost_input: 0.0,
7272 cost_output: 0.0,
7273 cost_cache_read: 0.2,
7274 cost_cache_write: 0.0,
7275 context_window: 131072,
7276 max_tokens: 4096,
7277 },
7278 ModelEntry {
7279 id: "moonshotai/kimi-k2-thinking",
7280 name: "MoonshotAI: Kimi K2 Thinking",
7281 api: Api::OpenAiCompletions,
7282 provider: "openrouter",
7283 reasoning: true,
7284 input: &[InputModality::Text],
7285 cost_input: 0.0,
7286 cost_output: 0.0,
7287 cost_cache_read: 0.15,
7288 cost_cache_write: 0.0,
7289 context_window: 262144,
7290 max_tokens: 262144,
7291 },
7292 ModelEntry {
7293 id: "nvidia/llama-3.3-nemotron-super-49b-v1.5",
7294 name: "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5",
7295 api: Api::OpenAiCompletions,
7296 provider: "openrouter",
7297 reasoning: true,
7298 input: &[InputModality::Text],
7299 cost_input: 0.0,
7300 cost_output: 0.0,
7301 cost_cache_read: 0.0,
7302 cost_cache_write: 0.0,
7303 context_window: 131072,
7304 max_tokens: 16384,
7305 },
7306 ModelEntry {
7307 id: "nvidia/nemotron-3-super-120b-a12b",
7308 name: "NVIDIA: Nemotron 3 Super",
7309 api: Api::OpenAiCompletions,
7310 provider: "openrouter",
7311 reasoning: true,
7312 input: &[InputModality::Text],
7313 cost_input: 0.0,
7314 cost_output: 0.0,
7315 cost_cache_read: 0.0,
7316 cost_cache_write: 0.0,
7317 context_window: 262144,
7318 max_tokens: 4096,
7319 },
7320 ModelEntry {
7321 id: "openai/gpt-3.5-turbo",
7322 name: "OpenAI: GPT-3.5 Turbo",
7323 api: Api::OpenAiCompletions,
7324 provider: "openrouter",
7325 reasoning: false,
7326 input: &[InputModality::Text],
7327 cost_input: 0.0,
7328 cost_output: 0.0,
7329 cost_cache_read: 0.0,
7330 cost_cache_write: 0.0,
7331 context_window: 16385,
7332 max_tokens: 4096,
7333 },
7334 ModelEntry {
7335 id: "openai/gpt-4-0314",
7336 name: "OpenAI: GPT-4 (older v0314)",
7337 api: Api::OpenAiCompletions,
7338 provider: "openrouter",
7339 reasoning: false,
7340 input: &[InputModality::Text],
7341 cost_input: 0.0,
7342 cost_output: 0.0,
7343 cost_cache_read: 0.0,
7344 cost_cache_write: 0.0,
7345 context_window: 8191,
7346 max_tokens: 4096,
7347 },
7348 ModelEntry {
7349 id: "openai/gpt-4.1-mini",
7350 name: "OpenAI: GPT-4.1 Mini",
7351 api: Api::OpenAiCompletions,
7352 provider: "openrouter",
7353 reasoning: false,
7354 input: &[InputModality::Text, InputModality::Image],
7355 cost_input: 0.0,
7356 cost_output: 0.0,
7357 cost_cache_read: 0.1,
7358 cost_cache_write: 0.0,
7359 context_window: 1047576,
7360 max_tokens: 32768,
7361 },
7362 ModelEntry {
7363 id: "openai/gpt-4o-2024-08-06",
7364 name: "OpenAI: GPT-4o (2024-08-06)",
7365 api: Api::OpenAiCompletions,
7366 provider: "openrouter",
7367 reasoning: false,
7368 input: &[InputModality::Text, InputModality::Image],
7369 cost_input: 0.0,
7370 cost_output: 0.0,
7371 cost_cache_read: 1.25,
7372 cost_cache_write: 0.0,
7373 context_window: 128000,
7374 max_tokens: 16384,
7375 },
7376 ModelEntry {
7377 id: "openai/gpt-5",
7378 name: "OpenAI: GPT-5",
7379 api: Api::OpenAiCompletions,
7380 provider: "openrouter",
7381 reasoning: true,
7382 input: &[InputModality::Text, InputModality::Image],
7383 cost_input: 0.0,
7384 cost_output: 0.0,
7385 cost_cache_read: 0.125,
7386 cost_cache_write: 0.0,
7387 context_window: 400000,
7388 max_tokens: 128000,
7389 },
7390 ModelEntry {
7391 id: "openai/gpt-5.1",
7392 name: "OpenAI: GPT-5.1",
7393 api: Api::OpenAiCompletions,
7394 provider: "openrouter",
7395 reasoning: true,
7396 input: &[InputModality::Text, InputModality::Image],
7397 cost_input: 0.0,
7398 cost_output: 0.0,
7399 cost_cache_read: 0.13,
7400 cost_cache_write: 0.0,
7401 context_window: 400000,
7402 max_tokens: 128000,
7403 },
7404 ModelEntry {
7405 id: "openai/gpt-5.1-codex-mini",
7406 name: "OpenAI: GPT-5.1-Codex-Mini",
7407 api: Api::OpenAiCompletions,
7408 provider: "openrouter",
7409 reasoning: true,
7410 input: &[InputModality::Text, InputModality::Image],
7411 cost_input: 0.0,
7412 cost_output: 0.0,
7413 cost_cache_read: 0.03,
7414 cost_cache_write: 0.0,
7415 context_window: 400000,
7416 max_tokens: 128000,
7417 },
7418 ModelEntry {
7419 id: "openai/gpt-5.3-chat",
7420 name: "OpenAI: GPT-5.3 Chat",
7421 api: Api::OpenAiCompletions,
7422 provider: "openrouter",
7423 reasoning: false,
7424 input: &[InputModality::Text, InputModality::Image],
7425 cost_input: 0.0,
7426 cost_output: 0.0,
7427 cost_cache_read: 0.175,
7428 cost_cache_write: 0.0,
7429 context_window: 128000,
7430 max_tokens: 16384,
7431 },
7432 ModelEntry {
7433 id: "openai/gpt-5.4-nano",
7434 name: "OpenAI: GPT-5.4 Nano",
7435 api: Api::OpenAiCompletions,
7436 provider: "openrouter",
7437 reasoning: true,
7438 input: &[InputModality::Text, InputModality::Image],
7439 cost_input: 0.0,
7440 cost_output: 0.0,
7441 cost_cache_read: 0.02,
7442 cost_cache_write: 0.0,
7443 context_window: 400000,
7444 max_tokens: 128000,
7445 },
7446 ModelEntry {
7447 id: "openai/gpt-audio-mini",
7448 name: "OpenAI: GPT Audio Mini",
7449 api: Api::OpenAiCompletions,
7450 provider: "openrouter",
7451 reasoning: false,
7452 input: &[InputModality::Text],
7453 cost_input: 0.0,
7454 cost_output: 0.0,
7455 cost_cache_read: 0.0,
7456 cost_cache_write: 0.0,
7457 context_window: 128000,
7458 max_tokens: 16384,
7459 },
7460 ModelEntry {
7461 id: "openai/gpt-oss-20b:free",
7462 name: "OpenAI: gpt-oss-20b (free)",
7463 api: Api::OpenAiCompletions,
7464 provider: "openrouter",
7465 reasoning: true,
7466 input: &[InputModality::Text],
7467 cost_input: 0.0,
7468 cost_output: 0.0,
7469 cost_cache_read: 0.0,
7470 cost_cache_write: 0.0,
7471 context_window: 131072,
7472 max_tokens: 8192,
7473 },
7474 ModelEntry {
7475 id: "openai/o3-mini",
7476 name: "OpenAI: o3 Mini",
7477 api: Api::OpenAiCompletions,
7478 provider: "openrouter",
7479 reasoning: true,
7480 input: &[InputModality::Text],
7481 cost_input: 0.0,
7482 cost_output: 0.0,
7483 cost_cache_read: 0.55,
7484 cost_cache_write: 0.0,
7485 context_window: 200000,
7486 max_tokens: 100000,
7487 },
7488 ModelEntry {
7489 id: "openai/o4-mini-deep-research",
7490 name: "OpenAI: o4 Mini Deep Research",
7491 api: Api::OpenAiCompletions,
7492 provider: "openrouter",
7493 reasoning: true,
7494 input: &[InputModality::Text, InputModality::Image],
7495 cost_input: 0.0,
7496 cost_output: 0.0,
7497 cost_cache_read: 0.5,
7498 cost_cache_write: 0.0,
7499 context_window: 200000,
7500 max_tokens: 100000,
7501 },
7502 ModelEntry {
7503 id: "poolside/laguna-m.1:free",
7504 name: "Poolside: Laguna M.1 (free)",
7505 api: Api::OpenAiCompletions,
7506 provider: "openrouter",
7507 reasoning: true,
7508 input: &[InputModality::Text],
7509 cost_input: 0.0,
7510 cost_output: 0.0,
7511 cost_cache_read: 0.0,
7512 cost_cache_write: 0.0,
7513 context_window: 131072,
7514 max_tokens: 8192,
7515 },
7516 ModelEntry {
7517 id: "qwen/qwen-max",
7518 name: "Qwen: Qwen-Max ",
7519 api: Api::OpenAiCompletions,
7520 provider: "openrouter",
7521 reasoning: false,
7522 input: &[InputModality::Text],
7523 cost_input: 0.0,
7524 cost_output: 0.0,
7525 cost_cache_read: 0.208,
7526 cost_cache_write: 0.0,
7527 context_window: 32768,
7528 max_tokens: 8192,
7529 },
7530 ModelEntry {
7531 id: "qwen/qwen-turbo",
7532 name: "Qwen: Qwen-Turbo",
7533 api: Api::OpenAiCompletions,
7534 provider: "openrouter",
7535 reasoning: false,
7536 input: &[InputModality::Text],
7537 cost_input: 0.0,
7538 cost_output: 0.0,
7539 cost_cache_read: 0.006500000000000001,
7540 cost_cache_write: 0.0,
7541 context_window: 131072,
7542 max_tokens: 8192,
7543 },
7544 ModelEntry {
7545 id: "qwen/qwen3-235b-a22b-thinking-2507",
7546 name: "Qwen: Qwen3 235B A22B Thinking 2507",
7547 api: Api::OpenAiCompletions,
7548 provider: "openrouter",
7549 reasoning: true,
7550 input: &[InputModality::Text],
7551 cost_input: 0.0,
7552 cost_output: 0.0,
7553 cost_cache_read: 0.0,
7554 cost_cache_write: 0.0,
7555 context_window: 131072,
7556 max_tokens: 4096,
7557 },
7558 ModelEntry {
7559 id: "qwen/qwen3-32b",
7560 name: "Qwen: Qwen3 32B",
7561 api: Api::OpenAiCompletions,
7562 provider: "openrouter",
7563 reasoning: true,
7564 input: &[InputModality::Text],
7565 cost_input: 0.0,
7566 cost_output: 0.0,
7567 cost_cache_read: 0.04,
7568 cost_cache_write: 0.0,
7569 context_window: 40960,
7570 max_tokens: 40960,
7571 },
7572 ModelEntry {
7573 id: "qwen/qwen3-coder-next",
7574 name: "Qwen: Qwen3 Coder Next",
7575 api: Api::OpenAiCompletions,
7576 provider: "openrouter",
7577 reasoning: false,
7578 input: &[InputModality::Text],
7579 cost_input: 0.0,
7580 cost_output: 0.0,
7581 cost_cache_read: 0.07,
7582 cost_cache_write: 0.0,
7583 context_window: 262144,
7584 max_tokens: 262144,
7585 },
7586 ModelEntry {
7587 id: "qwen/qwen3-max-thinking",
7588 name: "Qwen: Qwen3 Max Thinking",
7589 api: Api::OpenAiCompletions,
7590 provider: "openrouter",
7591 reasoning: true,
7592 input: &[InputModality::Text],
7593 cost_input: 0.0,
7594 cost_output: 0.0,
7595 cost_cache_read: 0.0,
7596 cost_cache_write: 0.0,
7597 context_window: 262144,
7598 max_tokens: 32768,
7599 },
7600 ModelEntry {
7601 id: "qwen/qwen3-vl-235b-a22b-thinking",
7602 name: "Qwen: Qwen3 VL 235B A22B Thinking",
7603 api: Api::OpenAiCompletions,
7604 provider: "openrouter",
7605 reasoning: true,
7606 input: &[InputModality::Text, InputModality::Image],
7607 cost_input: 0.0,
7608 cost_output: 0.0,
7609 cost_cache_read: 0.0,
7610 cost_cache_write: 0.0,
7611 context_window: 131072,
7612 max_tokens: 32768,
7613 },
7614 ModelEntry {
7615 id: "qwen/qwen3-vl-8b-instruct",
7616 name: "Qwen: Qwen3 VL 8B Instruct",
7617 api: Api::OpenAiCompletions,
7618 provider: "openrouter",
7619 reasoning: false,
7620 input: &[InputModality::Text, InputModality::Image],
7621 cost_input: 0.0,
7622 cost_output: 0.0,
7623 cost_cache_read: 0.0,
7624 cost_cache_write: 0.0,
7625 context_window: 131072,
7626 max_tokens: 32768,
7627 },
7628 ModelEntry {
7629 id: "qwen/qwen3.5-397b-a17b",
7630 name: "Qwen: Qwen3.5 397B A17B",
7631 api: Api::OpenAiCompletions,
7632 provider: "openrouter",
7633 reasoning: true,
7634 input: &[InputModality::Text, InputModality::Image],
7635 cost_input: 0.0,
7636 cost_output: 0.0,
7637 cost_cache_read: 0.195,
7638 cost_cache_write: 0.0,
7639 context_window: 262144,
7640 max_tokens: 65536,
7641 },
7642 ModelEntry {
7643 id: "qwen/qwen3.5-plus-20260420",
7644 name: "Qwen: Qwen3.5 Plus 2026-04-20",
7645 api: Api::OpenAiCompletions,
7646 provider: "openrouter",
7647 reasoning: true,
7648 input: &[InputModality::Text, InputModality::Image],
7649 cost_input: 0.0,
7650 cost_output: 0.0,
7651 cost_cache_read: 0.0,
7652 cost_cache_write: 0.0,
7653 context_window: 1000000,
7654 max_tokens: 65536,
7655 },
7656 ModelEntry {
7657 id: "rekaai/reka-edge",
7658 name: "Reka Edge",
7659 api: Api::OpenAiCompletions,
7660 provider: "openrouter",
7661 reasoning: false,
7662 input: &[InputModality::Text, InputModality::Image],
7663 cost_input: 0.0,
7664 cost_output: 0.0,
7665 cost_cache_read: 0.0,
7666 cost_cache_write: 0.0,
7667 context_window: 16384,
7668 max_tokens: 16384,
7669 },
7670 ModelEntry {
7671 id: "tencent/hy3-preview:free",
7672 name: "Tencent: Hy3 preview (free)",
7673 api: Api::OpenAiCompletions,
7674 provider: "openrouter",
7675 reasoning: true,
7676 input: &[InputModality::Text],
7677 cost_input: 0.0,
7678 cost_output: 0.0,
7679 cost_cache_read: 0.0,
7680 cost_cache_write: 0.0,
7681 context_window: 262144,
7682 max_tokens: 262144,
7683 },
7684 ModelEntry {
7685 id: "upstage/solar-pro-3",
7686 name: "Upstage: Solar Pro 3",
7687 api: Api::OpenAiCompletions,
7688 provider: "openrouter",
7689 reasoning: true,
7690 input: &[InputModality::Text],
7691 cost_input: 0.0,
7692 cost_output: 0.0,
7693 cost_cache_read: 0.015,
7694 cost_cache_write: 0.0,
7695 context_window: 128000,
7696 max_tokens: 4096,
7697 },
7698 ModelEntry {
7699 id: "x-ai/grok-4",
7700 name: "xAI: Grok 4",
7701 api: Api::OpenAiCompletions,
7702 provider: "openrouter",
7703 reasoning: true,
7704 input: &[InputModality::Text, InputModality::Image],
7705 cost_input: 0.0,
7706 cost_output: 0.0,
7707 cost_cache_read: 0.75,
7708 cost_cache_write: 0.0,
7709 context_window: 256000,
7710 max_tokens: 4096,
7711 },
7712 ModelEntry {
7713 id: "x-ai/grok-4.3",
7714 name: "xAI: Grok 4.3",
7715 api: Api::OpenAiCompletions,
7716 provider: "openrouter",
7717 reasoning: true,
7718 input: &[InputModality::Text, InputModality::Image],
7719 cost_input: 0.0,
7720 cost_output: 0.0,
7721 cost_cache_read: 0.2,
7722 cost_cache_write: 0.0,
7723 context_window: 1000000,
7724 max_tokens: 4096,
7725 },
7726 ModelEntry {
7727 id: "xiaomi/mimo-v2.5",
7728 name: "Xiaomi: MiMo-V2.5",
7729 api: Api::OpenAiCompletions,
7730 provider: "openrouter",
7731 reasoning: true,
7732 input: &[InputModality::Text, InputModality::Image],
7733 cost_input: 0.0,
7734 cost_output: 0.0,
7735 cost_cache_read: 0.08,
7736 cost_cache_write: 0.0,
7737 context_window: 1048576,
7738 max_tokens: 131072,
7739 },
7740 ModelEntry {
7741 id: "z-ai/glm-4.5-air",
7742 name: "Z.ai: GLM 4.5 Air",
7743 api: Api::OpenAiCompletions,
7744 provider: "openrouter",
7745 reasoning: true,
7746 input: &[InputModality::Text],
7747 cost_input: 0.0,
7748 cost_output: 0.0,
7749 cost_cache_read: 0.025,
7750 cost_cache_write: 0.0,
7751 context_window: 131072,
7752 max_tokens: 98304,
7753 },
7754 ModelEntry {
7755 id: "z-ai/glm-4.7",
7756 name: "Z.ai: GLM 4.7",
7757 api: Api::OpenAiCompletions,
7758 provider: "openrouter",
7759 reasoning: true,
7760 input: &[InputModality::Text],
7761 cost_input: 0.0,
7762 cost_output: 0.0,
7763 cost_cache_read: 0.0,
7764 cost_cache_write: 0.0,
7765 context_window: 202752,
7766 max_tokens: 4096,
7767 },
7768 ModelEntry {
7769 id: "z-ai/glm-5.1",
7770 name: "Z.ai: GLM 5.1",
7771 api: Api::OpenAiCompletions,
7772 provider: "openrouter",
7773 reasoning: true,
7774 input: &[InputModality::Text],
7775 cost_input: 0.0,
7776 cost_output: 0.0,
7777 cost_cache_read: 0.5249999999999999,
7778 cost_cache_write: 0.0,
7779 context_window: 202752,
7780 max_tokens: 65535,
7781 },
7782 ModelEntry {
7783 id: "~google/gemini-flash-latest",
7784 name: "Google Gemini Flash Latest",
7785 api: Api::OpenAiCompletions,
7786 provider: "openrouter",
7787 reasoning: true,
7788 input: &[InputModality::Text, InputModality::Image],
7789 cost_input: 0.0,
7790 cost_output: 0.0,
7791 cost_cache_read: 0.05,
7792 cost_cache_write: 0.08333333333333334,
7793 context_window: 1048576,
7794 max_tokens: 65536,
7795 },
7796 ModelEntry {
7797 id: "amazon/nova-2-lite-v1",
7798 name: "Amazon: Nova 2 Lite",
7799 api: Api::OpenAiCompletions,
7800 provider: "openrouter",
7801 reasoning: true,
7802 input: &[InputModality::Text, InputModality::Image],
7803 cost_input: 0.3,
7804 cost_output: 2.5,
7805 cost_cache_read: 0.0,
7806 cost_cache_write: 0.0,
7807 context_window: 1000000,
7808 max_tokens: 65535,
7809 },
7810 ModelEntry {
7811 id: "amazon/nova-micro-v1",
7812 name: "Amazon: Nova Micro 1.0",
7813 api: Api::OpenAiCompletions,
7814 provider: "openrouter",
7815 reasoning: false,
7816 input: &[InputModality::Text],
7817 cost_input: 0.035,
7818 cost_output: 0.14,
7819 cost_cache_read: 0.0,
7820 cost_cache_write: 0.0,
7821 context_window: 128000,
7822 max_tokens: 5120,
7823 },
7824 ModelEntry {
7825 id: "amazon/nova-premier-v1",
7826 name: "Amazon: Nova Premier 1.0",
7827 api: Api::OpenAiCompletions,
7828 provider: "openrouter",
7829 reasoning: false,
7830 input: &[InputModality::Text, InputModality::Image],
7831 cost_input: 2.5,
7832 cost_output: 12.5,
7833 cost_cache_read: 0.625,
7834 cost_cache_write: 0.0,
7835 context_window: 1000000,
7836 max_tokens: 32000,
7837 },
7838 ModelEntry {
7839 id: "amazon/nova-pro-v1",
7840 name: "Amazon: Nova Pro 1.0",
7841 api: Api::OpenAiCompletions,
7842 provider: "openrouter",
7843 reasoning: false,
7844 input: &[InputModality::Text, InputModality::Image],
7845 cost_input: 0.7999999999999999,
7846 cost_output: 3.1999999999999997,
7847 cost_cache_read: 0.0,
7848 cost_cache_write: 0.0,
7849 context_window: 300000,
7850 max_tokens: 5120,
7851 },
7852 ModelEntry {
7853 id: "anthropic/claude-3-haiku",
7854 name: "Anthropic: Claude 3 Haiku",
7855 api: Api::OpenAiCompletions,
7856 provider: "openrouter",
7857 reasoning: false,
7858 input: &[InputModality::Text, InputModality::Image],
7859 cost_input: 0.25,
7860 cost_output: 1.25,
7861 cost_cache_read: 0.03,
7862 cost_cache_write: 0.3,
7863 context_window: 200000,
7864 max_tokens: 4096,
7865 },
7866 ModelEntry {
7867 id: "anthropic/claude-opus-4.1",
7868 name: "Anthropic: Claude Opus 4.1",
7869 api: Api::OpenAiCompletions,
7870 provider: "openrouter",
7871 reasoning: true,
7872 input: &[InputModality::Text, InputModality::Image],
7873 cost_input: 15.0,
7874 cost_output: 75.0,
7875 cost_cache_read: 1.5,
7876 cost_cache_write: 18.75,
7877 context_window: 200000,
7878 max_tokens: 32000,
7879 },
7880 ModelEntry {
7881 id: "anthropic/claude-opus-4.5",
7882 name: "Anthropic: Claude Opus 4.5",
7883 api: Api::OpenAiCompletions,
7884 provider: "openrouter",
7885 reasoning: true,
7886 input: &[InputModality::Text, InputModality::Image],
7887 cost_input: 5.0,
7888 cost_output: 25.0,
7889 cost_cache_read: 0.5,
7890 cost_cache_write: 6.25,
7891 context_window: 200000,
7892 max_tokens: 64000,
7893 },
7894 ModelEntry {
7895 id: "anthropic/claude-opus-4.6",
7896 name: "Anthropic: Claude Opus 4.6",
7897 api: Api::OpenAiCompletions,
7898 provider: "openrouter",
7899 reasoning: true,
7900 input: &[InputModality::Text, InputModality::Image],
7901 cost_input: 5.0,
7902 cost_output: 25.0,
7903 cost_cache_read: 0.5,
7904 cost_cache_write: 6.25,
7905 context_window: 1000000,
7906 max_tokens: 128000,
7907 },
7908 ModelEntry {
7909 id: "anthropic/claude-opus-4.6-fast",
7910 name: "Anthropic: Claude Opus 4.6 (Fast)",
7911 api: Api::OpenAiCompletions,
7912 provider: "openrouter",
7913 reasoning: true,
7914 input: &[InputModality::Text, InputModality::Image],
7915 cost_input: 30.0,
7916 cost_output: 150.0,
7917 cost_cache_read: 3.0,
7918 cost_cache_write: 37.5,
7919 context_window: 1000000,
7920 max_tokens: 128000,
7921 },
7922 ModelEntry {
7923 id: "anthropic/claude-opus-4.7-fast",
7924 name: "Anthropic: Claude Opus 4.7 (Fast)",
7925 api: Api::OpenAiCompletions,
7926 provider: "openrouter",
7927 reasoning: true,
7928 input: &[InputModality::Text, InputModality::Image],
7929 cost_input: 30.0,
7930 cost_output: 150.0,
7931 cost_cache_read: 3.0,
7932 cost_cache_write: 37.5,
7933 context_window: 1000000,
7934 max_tokens: 128000,
7935 },
7936 ModelEntry {
7937 id: "anthropic/claude-sonnet-4.5",
7938 name: "Anthropic: Claude Sonnet 4.5",
7939 api: Api::OpenAiCompletions,
7940 provider: "openrouter",
7941 reasoning: true,
7942 input: &[InputModality::Text, InputModality::Image],
7943 cost_input: 3.0,
7944 cost_output: 15.0,
7945 cost_cache_read: 0.3,
7946 cost_cache_write: 3.75,
7947 context_window: 1000000,
7948 max_tokens: 64000,
7949 },
7950 ModelEntry {
7951 id: "anthropic/claude-sonnet-4.6",
7952 name: "Anthropic: Claude Sonnet 4.6",
7953 api: Api::OpenAiCompletions,
7954 provider: "openrouter",
7955 reasoning: true,
7956 input: &[InputModality::Text, InputModality::Image],
7957 cost_input: 3.0,
7958 cost_output: 15.0,
7959 cost_cache_read: 0.3,
7960 cost_cache_write: 3.75,
7961 context_window: 1000000,
7962 max_tokens: 128000,
7963 },
7964 ModelEntry {
7965 id: "arcee-ai/trinity-large-thinking",
7966 name: "Arcee AI: Trinity Large Thinking",
7967 api: Api::OpenAiCompletions,
7968 provider: "openrouter",
7969 reasoning: true,
7970 input: &[InputModality::Text],
7971 cost_input: 0.22,
7972 cost_output: 0.85,
7973 cost_cache_read: 0.06,
7974 cost_cache_write: 0.0,
7975 context_window: 262144,
7976 max_tokens: 262144,
7977 },
7978 ModelEntry {
7979 id: "arcee-ai/trinity-mini",
7980 name: "Arcee AI: Trinity Mini",
7981 api: Api::OpenAiCompletions,
7982 provider: "openrouter",
7983 reasoning: true,
7984 input: &[InputModality::Text],
7985 cost_input: 0.045,
7986 cost_output: 0.15,
7987 cost_cache_read: 0.0,
7988 cost_cache_write: 0.0,
7989 context_window: 131072,
7990 max_tokens: 131072,
7991 },
7992 ModelEntry {
7993 id: "arcee-ai/virtuoso-large",
7994 name: "Arcee AI: Virtuoso Large",
7995 api: Api::OpenAiCompletions,
7996 provider: "openrouter",
7997 reasoning: false,
7998 input: &[InputModality::Text],
7999 cost_input: 0.75,
8000 cost_output: 1.2,
8001 cost_cache_read: 0.0,
8002 cost_cache_write: 0.0,
8003 context_window: 131072,
8004 max_tokens: 64000,
8005 },
8006 ModelEntry {
8007 id: "auto",
8008 name: "Auto",
8009 api: Api::OpenAiCompletions,
8010 provider: "openrouter",
8011 reasoning: true,
8012 input: &[InputModality::Text, InputModality::Image],
8013 cost_input: 0.0,
8014 cost_output: 0.0,
8015 cost_cache_read: 0.0,
8016 cost_cache_write: 0.0,
8017 context_window: 2000000,
8018 max_tokens: 30000,
8019 },
8020 ModelEntry {
8021 id: "baidu/ernie-4.5-vl-28b-a3b",
8022 name: "Baidu: ERNIE 4.5 VL 28B A3B",
8023 api: Api::OpenAiCompletions,
8024 provider: "openrouter",
8025 reasoning: true,
8026 input: &[InputModality::Text, InputModality::Image],
8027 cost_input: 0.14,
8028 cost_output: 0.56,
8029 cost_cache_read: 0.0,
8030 cost_cache_write: 0.0,
8031 context_window: 131072,
8032 max_tokens: 8000,
8033 },
8034 ModelEntry {
8035 id: "bytedance-seed/seed-1.6",
8036 name: "ByteDance Seed: Seed 1.6",
8037 api: Api::OpenAiCompletions,
8038 provider: "openrouter",
8039 reasoning: true,
8040 input: &[InputModality::Text, InputModality::Image],
8041 cost_input: 0.25,
8042 cost_output: 2.0,
8043 cost_cache_read: 0.0,
8044 cost_cache_write: 0.0,
8045 context_window: 262144,
8046 max_tokens: 32768,
8047 },
8048 ModelEntry {
8049 id: "bytedance-seed/seed-1.6-flash",
8050 name: "ByteDance Seed: Seed 1.6 Flash",
8051 api: Api::OpenAiCompletions,
8052 provider: "openrouter",
8053 reasoning: true,
8054 input: &[InputModality::Text, InputModality::Image],
8055 cost_input: 0.075,
8056 cost_output: 0.3,
8057 cost_cache_read: 0.0,
8058 cost_cache_write: 0.0,
8059 context_window: 262144,
8060 max_tokens: 32768,
8061 },
8062 ModelEntry {
8063 id: "bytedance-seed/seed-2.0-mini",
8064 name: "ByteDance Seed: Seed-2.0-Mini",
8065 api: Api::OpenAiCompletions,
8066 provider: "openrouter",
8067 reasoning: true,
8068 input: &[InputModality::Text, InputModality::Image],
8069 cost_input: 0.09999999999999999,
8070 cost_output: 0.39999999999999997,
8071 cost_cache_read: 0.0,
8072 cost_cache_write: 0.0,
8073 context_window: 262144,
8074 max_tokens: 131072,
8075 },
8076 ModelEntry {
8077 id: "cohere/command-r-08-2024",
8078 name: "Cohere: Command R (08-2024)",
8079 api: Api::OpenAiCompletions,
8080 provider: "openrouter",
8081 reasoning: false,
8082 input: &[InputModality::Text],
8083 cost_input: 0.15,
8084 cost_output: 0.6,
8085 cost_cache_read: 0.0,
8086 cost_cache_write: 0.0,
8087 context_window: 128000,
8088 max_tokens: 4000,
8089 },
8090 ModelEntry {
8091 id: "cohere/command-r-plus-08-2024",
8092 name: "Cohere: Command R+ (08-2024)",
8093 api: Api::OpenAiCompletions,
8094 provider: "openrouter",
8095 reasoning: false,
8096 input: &[InputModality::Text],
8097 cost_input: 2.5,
8098 cost_output: 10.0,
8099 cost_cache_read: 0.0,
8100 cost_cache_write: 0.0,
8101 context_window: 128000,
8102 max_tokens: 4000,
8103 },
8104 ModelEntry {
8105 id: "deepseek/deepseek-chat",
8106 name: "DeepSeek: DeepSeek V3",
8107 api: Api::OpenAiCompletions,
8108 provider: "openrouter",
8109 reasoning: false,
8110 input: &[InputModality::Text],
8111 cost_input: 0.2288,
8112 cost_output: 0.9144,
8113 cost_cache_read: 0.0,
8114 cost_cache_write: 0.0,
8115 context_window: 131072,
8116 max_tokens: 16000,
8117 },
8118 ModelEntry {
8119 id: "deepseek/deepseek-chat-v3.1",
8120 name: "DeepSeek: DeepSeek V3.1",
8121 api: Api::OpenAiCompletions,
8122 provider: "openrouter",
8123 reasoning: true,
8124 input: &[InputModality::Text],
8125 cost_input: 0.21,
8126 cost_output: 0.7899999999999999,
8127 cost_cache_read: 0.13,
8128 cost_cache_write: 0.0,
8129 context_window: 163840,
8130 max_tokens: 32768,
8131 },
8132 ModelEntry {
8133 id: "deepseek/deepseek-r1",
8134 name: "DeepSeek: R1",
8135 api: Api::OpenAiCompletions,
8136 provider: "openrouter",
8137 reasoning: true,
8138 input: &[InputModality::Text],
8139 cost_input: 0.7,
8140 cost_output: 2.5,
8141 cost_cache_read: 0.0,
8142 cost_cache_write: 0.0,
8143 context_window: 163840,
8144 max_tokens: 16000,
8145 },
8146 ModelEntry {
8147 id: "deepseek/deepseek-r1-0528",
8148 name: "DeepSeek: R1 0528",
8149 api: Api::OpenAiCompletions,
8150 provider: "openrouter",
8151 reasoning: true,
8152 input: &[InputModality::Text],
8153 cost_input: 0.5,
8154 cost_output: 2.1500000000000004,
8155 cost_cache_read: 0.35,
8156 cost_cache_write: 0.0,
8157 context_window: 163840,
8158 max_tokens: 32768,
8159 },
8160 ModelEntry {
8161 id: "deepseek/deepseek-v3.2-exp",
8162 name: "DeepSeek: DeepSeek V3.2 Exp",
8163 api: Api::OpenAiCompletions,
8164 provider: "openrouter",
8165 reasoning: true,
8166 input: &[InputModality::Text],
8167 cost_input: 0.27,
8168 cost_output: 0.41,
8169 cost_cache_read: 0.0,
8170 cost_cache_write: 0.0,
8171 context_window: 163840,
8172 max_tokens: 65536,
8173 },
8174 ModelEntry {
8175 id: "deepseek/deepseek-v4-flash",
8176 name: "DeepSeek: DeepSeek V4 Flash",
8177 api: Api::OpenAiCompletions,
8178 provider: "openrouter",
8179 reasoning: true,
8180 input: &[InputModality::Text],
8181 cost_input: 0.09999999999999999,
8182 cost_output: 0.19999999999999998,
8183 cost_cache_read: 0.02,
8184 cost_cache_write: 0.0,
8185 context_window: 1048576,
8186 max_tokens: 16384,
8187 },
8188 ModelEntry {
8189 id: "deepseek/deepseek-v4-flash:free",
8190 name: "DeepSeek: DeepSeek V4 Flash (free)",
8191 api: Api::OpenAiCompletions,
8192 provider: "openrouter",
8193 reasoning: true,
8194 input: &[InputModality::Text],
8195 cost_input: 0.0,
8196 cost_output: 0.0,
8197 cost_cache_read: 0.0,
8198 cost_cache_write: 0.0,
8199 context_window: 1048576,
8200 max_tokens: 384000,
8201 },
8202 ModelEntry {
8203 id: "deepseek/deepseek-v4-pro",
8204 name: "DeepSeek: DeepSeek V4 Pro",
8205 api: Api::OpenAiCompletions,
8206 provider: "openrouter",
8207 reasoning: true,
8208 input: &[InputModality::Text],
8209 cost_input: 0.435,
8210 cost_output: 0.87,
8211 cost_cache_read: 0.003625,
8212 cost_cache_write: 0.0,
8213 context_window: 1048576,
8214 max_tokens: 384000,
8215 },
8216 ModelEntry {
8217 id: "google/gemini-2.0-flash-001",
8218 name: "Google: Gemini 2.0 Flash",
8219 api: Api::OpenAiCompletions,
8220 provider: "openrouter",
8221 reasoning: false,
8222 input: &[InputModality::Text, InputModality::Image],
8223 cost_input: 0.09999999999999999,
8224 cost_output: 0.39999999999999997,
8225 cost_cache_read: 0.024999999999999998,
8226 cost_cache_write: 0.08333333333333334,
8227 context_window: 1000000,
8228 max_tokens: 8192,
8229 },
8230 ModelEntry {
8231 id: "google/gemini-2.0-flash-lite-001",
8232 name: "Google: Gemini 2.0 Flash Lite",
8233 api: Api::OpenAiCompletions,
8234 provider: "openrouter",
8235 reasoning: false,
8236 input: &[InputModality::Text, InputModality::Image],
8237 cost_input: 0.075,
8238 cost_output: 0.3,
8239 cost_cache_read: 0.0,
8240 cost_cache_write: 0.0,
8241 context_window: 1048576,
8242 max_tokens: 8192,
8243 },
8244 ModelEntry {
8245 id: "google/gemini-2.5-flash",
8246 name: "Google: Gemini 2.5 Flash",
8247 api: Api::OpenAiCompletions,
8248 provider: "openrouter",
8249 reasoning: true,
8250 input: &[InputModality::Text, InputModality::Image],
8251 cost_input: 0.3,
8252 cost_output: 2.5,
8253 cost_cache_read: 0.03,
8254 cost_cache_write: 0.08333333333333334,
8255 context_window: 1048576,
8256 max_tokens: 65535,
8257 },
8258 ModelEntry {
8259 id: "google/gemini-2.5-flash-lite",
8260 name: "Google: Gemini 2.5 Flash Lite",
8261 api: Api::OpenAiCompletions,
8262 provider: "openrouter",
8263 reasoning: true,
8264 input: &[InputModality::Text, InputModality::Image],
8265 cost_input: 0.09999999999999999,
8266 cost_output: 0.39999999999999997,
8267 cost_cache_read: 0.01,
8268 cost_cache_write: 0.08333333333333334,
8269 context_window: 1048576,
8270 max_tokens: 65535,
8271 },
8272 ModelEntry {
8273 id: "google/gemini-2.5-pro",
8274 name: "Google: Gemini 2.5 Pro",
8275 api: Api::OpenAiCompletions,
8276 provider: "openrouter",
8277 reasoning: true,
8278 input: &[InputModality::Text, InputModality::Image],
8279 cost_input: 1.25,
8280 cost_output: 10.0,
8281 cost_cache_read: 0.125,
8282 cost_cache_write: 0.375,
8283 context_window: 1048576,
8284 max_tokens: 65536,
8285 },
8286 ModelEntry {
8287 id: "google/gemini-2.5-pro-preview",
8288 name: "Google: Gemini 2.5 Pro Preview 06-05",
8289 api: Api::OpenAiCompletions,
8290 provider: "openrouter",
8291 reasoning: true,
8292 input: &[InputModality::Text, InputModality::Image],
8293 cost_input: 1.25,
8294 cost_output: 10.0,
8295 cost_cache_read: 0.125,
8296 cost_cache_write: 0.375,
8297 context_window: 1048576,
8298 max_tokens: 65536,
8299 },
8300 ModelEntry {
8301 id: "google/gemini-2.5-pro-preview-05-06",
8302 name: "Google: Gemini 2.5 Pro Preview 05-06",
8303 api: Api::OpenAiCompletions,
8304 provider: "openrouter",
8305 reasoning: true,
8306 input: &[InputModality::Text, InputModality::Image],
8307 cost_input: 1.25,
8308 cost_output: 10.0,
8309 cost_cache_read: 0.125,
8310 cost_cache_write: 0.375,
8311 context_window: 1048576,
8312 max_tokens: 65535,
8313 },
8314 ModelEntry {
8315 id: "google/gemini-3.1-flash-lite",
8316 name: "Google: Gemini 3.1 Flash Lite",
8317 api: Api::OpenAiCompletions,
8318 provider: "openrouter",
8319 reasoning: true,
8320 input: &[InputModality::Text, InputModality::Image],
8321 cost_input: 0.25,
8322 cost_output: 1.5,
8323 cost_cache_read: 0.024999999999999998,
8324 cost_cache_write: 0.08333333333333334,
8325 context_window: 1048576,
8326 max_tokens: 65536,
8327 },
8328 ModelEntry {
8329 id: "google/gemini-3.1-flash-lite-preview",
8330 name: "Google: Gemini 3.1 Flash Lite Preview",
8331 api: Api::OpenAiCompletions,
8332 provider: "openrouter",
8333 reasoning: true,
8334 input: &[InputModality::Text, InputModality::Image],
8335 cost_input: 0.25,
8336 cost_output: 1.5,
8337 cost_cache_read: 0.024999999999999998,
8338 cost_cache_write: 0.08333333333333334,
8339 context_window: 1048576,
8340 max_tokens: 65536,
8341 },
8342 ModelEntry {
8343 id: "google/gemini-3.1-pro-preview",
8344 name: "Google: Gemini 3.1 Pro Preview",
8345 api: Api::OpenAiCompletions,
8346 provider: "openrouter",
8347 reasoning: true,
8348 input: &[InputModality::Text, InputModality::Image],
8349 cost_input: 2.0,
8350 cost_output: 12.0,
8351 cost_cache_read: 0.19999999999999998,
8352 cost_cache_write: 0.375,
8353 context_window: 1048576,
8354 max_tokens: 65536,
8355 },
8356 ModelEntry {
8357 id: "google/gemini-3.1-pro-preview-customtools",
8358 name: "Google: Gemini 3.1 Pro Preview Custom Tools",
8359 api: Api::OpenAiCompletions,
8360 provider: "openrouter",
8361 reasoning: true,
8362 input: &[InputModality::Text, InputModality::Image],
8363 cost_input: 2.0,
8364 cost_output: 12.0,
8365 cost_cache_read: 0.19999999999999998,
8366 cost_cache_write: 0.375,
8367 context_window: 1048756,
8368 max_tokens: 65536,
8369 },
8370 ModelEntry {
8371 id: "google/gemini-3.5-flash",
8372 name: "Google: Gemini 3.5 Flash",
8373 api: Api::OpenAiCompletions,
8374 provider: "openrouter",
8375 reasoning: true,
8376 input: &[InputModality::Text, InputModality::Image],
8377 cost_input: 1.5,
8378 cost_output: 9.0,
8379 cost_cache_read: 0.15,
8380 cost_cache_write: 0.08333333333333334,
8381 context_window: 1048576,
8382 max_tokens: 65536,
8383 },
8384 ModelEntry {
8385 id: "google/gemma-3-12b-it",
8386 name: "Google: Gemma 3 12B",
8387 api: Api::OpenAiCompletions,
8388 provider: "openrouter",
8389 reasoning: false,
8390 input: &[InputModality::Text, InputModality::Image],
8391 cost_input: 0.04,
8392 cost_output: 0.13,
8393 cost_cache_read: 0.0,
8394 cost_cache_write: 0.0,
8395 context_window: 131072,
8396 max_tokens: 16384,
8397 },
8398 ModelEntry {
8399 id: "google/gemma-4-26b-a4b-it",
8400 name: "Google: Gemma 4 26B A4B ",
8401 api: Api::OpenAiCompletions,
8402 provider: "openrouter",
8403 reasoning: true,
8404 input: &[InputModality::Text, InputModality::Image],
8405 cost_input: 0.06,
8406 cost_output: 0.33,
8407 cost_cache_read: 0.0,
8408 cost_cache_write: 0.0,
8409 context_window: 262144,
8410 max_tokens: 4096,
8411 },
8412 ModelEntry {
8413 id: "google/gemma-4-26b-a4b-it:free",
8414 name: "Google: Gemma 4 26B A4B (free)",
8415 api: Api::OpenAiCompletions,
8416 provider: "openrouter",
8417 reasoning: true,
8418 input: &[InputModality::Text, InputModality::Image],
8419 cost_input: 0.0,
8420 cost_output: 0.0,
8421 cost_cache_read: 0.0,
8422 cost_cache_write: 0.0,
8423 context_window: 262144,
8424 max_tokens: 32768,
8425 },
8426 ModelEntry {
8427 id: "google/gemma-4-31b-it",
8428 name: "Google: Gemma 4 31B",
8429 api: Api::OpenAiCompletions,
8430 provider: "openrouter",
8431 reasoning: true,
8432 input: &[InputModality::Text, InputModality::Image],
8433 cost_input: 0.12,
8434 cost_output: 0.37,
8435 cost_cache_read: 0.0,
8436 cost_cache_write: 0.0,
8437 context_window: 262144,
8438 max_tokens: 16384,
8439 },
8440 ModelEntry {
8441 id: "ibm-granite/granite-4.1-8b",
8442 name: "IBM: Granite 4.1 8B",
8443 api: Api::OpenAiCompletions,
8444 provider: "openrouter",
8445 reasoning: false,
8446 input: &[InputModality::Text],
8447 cost_input: 0.049999999999999996,
8448 cost_output: 0.09999999999999999,
8449 cost_cache_read: 0.049999999999999996,
8450 cost_cache_write: 0.0,
8451 context_window: 131072,
8452 max_tokens: 131072,
8453 },
8454 ModelEntry {
8455 id: "inception/mercury-2",
8456 name: "Inception: Mercury 2",
8457 api: Api::OpenAiCompletions,
8458 provider: "openrouter",
8459 reasoning: true,
8460 input: &[InputModality::Text],
8461 cost_input: 0.25,
8462 cost_output: 0.75,
8463 cost_cache_read: 0.024999999999999998,
8464 cost_cache_write: 0.0,
8465 context_window: 128000,
8466 max_tokens: 50000,
8467 },
8468 ModelEntry {
8469 id: "inclusionai/ling-2.6-1t",
8470 name: "inclusionAI: Ling-2.6-1T",
8471 api: Api::OpenAiCompletions,
8472 provider: "openrouter",
8473 reasoning: false,
8474 input: &[InputModality::Text],
8475 cost_input: 0.075,
8476 cost_output: 0.625,
8477 cost_cache_read: 0.015,
8478 cost_cache_write: 0.0,
8479 context_window: 262144,
8480 max_tokens: 32768,
8481 },
8482 ModelEntry {
8483 id: "inclusionai/ling-2.6-flash",
8484 name: "inclusionAI: Ling-2.6-flash",
8485 api: Api::OpenAiCompletions,
8486 provider: "openrouter",
8487 reasoning: false,
8488 input: &[InputModality::Text],
8489 cost_input: 0.01,
8490 cost_output: 0.03,
8491 cost_cache_read: 0.002,
8492 cost_cache_write: 0.0,
8493 context_window: 262144,
8494 max_tokens: 32768,
8495 },
8496 ModelEntry {
8497 id: "inclusionai/ring-2.6-1t",
8498 name: "inclusionAI: Ring-2.6-1T",
8499 api: Api::OpenAiCompletions,
8500 provider: "openrouter",
8501 reasoning: true,
8502 input: &[InputModality::Text],
8503 cost_input: 0.075,
8504 cost_output: 0.625,
8505 cost_cache_read: 0.015,
8506 cost_cache_write: 0.0,
8507 context_window: 262144,
8508 max_tokens: 65536,
8509 },
8510 ModelEntry {
8511 id: "meta-llama/llama-3.1-70b-instruct",
8512 name: "Meta: Llama 3.1 70B Instruct",
8513 api: Api::OpenAiCompletions,
8514 provider: "openrouter",
8515 reasoning: false,
8516 input: &[InputModality::Text],
8517 cost_input: 0.39999999999999997,
8518 cost_output: 0.39999999999999997,
8519 cost_cache_read: 0.0,
8520 cost_cache_write: 0.0,
8521 context_window: 131072,
8522 max_tokens: 16384,
8523 },
8524 ModelEntry {
8525 id: "meta-llama/llama-3.1-8b-instruct",
8526 name: "Meta: Llama 3.1 8B Instruct",
8527 api: Api::OpenAiCompletions,
8528 provider: "openrouter",
8529 reasoning: false,
8530 input: &[InputModality::Text],
8531 cost_input: 0.02,
8532 cost_output: 0.049999999999999996,
8533 cost_cache_read: 0.0,
8534 cost_cache_write: 0.0,
8535 context_window: 131072,
8536 max_tokens: 16384,
8537 },
8538 ModelEntry {
8539 id: "meta-llama/llama-3.3-70b-instruct:free",
8540 name: "Meta: Llama 3.3 70B Instruct (free)",
8541 api: Api::OpenAiCompletions,
8542 provider: "openrouter",
8543 reasoning: false,
8544 input: &[InputModality::Text],
8545 cost_input: 0.0,
8546 cost_output: 0.0,
8547 cost_cache_read: 0.0,
8548 cost_cache_write: 0.0,
8549 context_window: 131072,
8550 max_tokens: 4096,
8551 },
8552 ModelEntry {
8553 id: "meta-llama/llama-4-scout",
8554 name: "Meta: Llama 4 Scout",
8555 api: Api::OpenAiCompletions,
8556 provider: "openrouter",
8557 reasoning: false,
8558 input: &[InputModality::Text, InputModality::Image],
8559 cost_input: 0.08,
8560 cost_output: 0.3,
8561 cost_cache_read: 0.0,
8562 cost_cache_write: 0.0,
8563 context_window: 10000000,
8564 max_tokens: 16384,
8565 },
8566 ModelEntry {
8567 id: "minimax/minimax-m1",
8568 name: "MiniMax: MiniMax M1",
8569 api: Api::OpenAiCompletions,
8570 provider: "openrouter",
8571 reasoning: true,
8572 input: &[InputModality::Text],
8573 cost_input: 0.39999999999999997,
8574 cost_output: 2.2,
8575 cost_cache_read: 0.0,
8576 cost_cache_write: 0.0,
8577 context_window: 1000000,
8578 max_tokens: 40000,
8579 },
8580 ModelEntry {
8581 id: "minimax/minimax-m2",
8582 name: "MiniMax: MiniMax M2",
8583 api: Api::OpenAiCompletions,
8584 provider: "openrouter",
8585 reasoning: true,
8586 input: &[InputModality::Text],
8587 cost_input: 0.255,
8588 cost_output: 1.0,
8589 cost_cache_read: 0.03,
8590 cost_cache_write: 0.0,
8591 context_window: 204800,
8592 max_tokens: 196608,
8593 },
8594 ModelEntry {
8595 id: "minimax/minimax-m2.5",
8596 name: "MiniMax: MiniMax M2.5",
8597 api: Api::OpenAiCompletions,
8598 provider: "openrouter",
8599 reasoning: true,
8600 input: &[InputModality::Text],
8601 cost_input: 0.15,
8602 cost_output: 1.15,
8603 cost_cache_read: 0.0,
8604 cost_cache_write: 0.0,
8605 context_window: 204800,
8606 max_tokens: 196608,
8607 },
8608 ModelEntry {
8609 id: "minimax/minimax-m2.5:free",
8610 name: "MiniMax: MiniMax M2.5 (free)",
8611 api: Api::OpenAiCompletions,
8612 provider: "openrouter",
8613 reasoning: true,
8614 input: &[InputModality::Text],
8615 cost_input: 0.0,
8616 cost_output: 0.0,
8617 cost_cache_read: 0.0,
8618 cost_cache_write: 0.0,
8619 context_window: 262144,
8620 max_tokens: 8192,
8621 },
8622 ModelEntry {
8623 id: "minimax/minimax-m2.7",
8624 name: "MiniMax: MiniMax M2.7",
8625 api: Api::OpenAiCompletions,
8626 provider: "openrouter",
8627 reasoning: true,
8628 input: &[InputModality::Text],
8629 cost_input: 0.27899999999999997,
8630 cost_output: 1.2,
8631 cost_cache_read: 0.0,
8632 cost_cache_write: 0.0,
8633 context_window: 204800,
8634 max_tokens: 131072,
8635 },
8636 ModelEntry {
8637 id: "mistralai/devstral-2512",
8638 name: "Mistral: Devstral 2 2512",
8639 api: Api::OpenAiCompletions,
8640 provider: "openrouter",
8641 reasoning: false,
8642 input: &[InputModality::Text],
8643 cost_input: 0.39999999999999997,
8644 cost_output: 2.0,
8645 cost_cache_read: 0.04,
8646 cost_cache_write: 0.0,
8647 context_window: 262144,
8648 max_tokens: 4096,
8649 },
8650 ModelEntry {
8651 id: "mistralai/devstral-medium",
8652 name: "Mistral: Devstral Medium",
8653 api: Api::OpenAiCompletions,
8654 provider: "openrouter",
8655 reasoning: false,
8656 input: &[InputModality::Text],
8657 cost_input: 0.39999999999999997,
8658 cost_output: 2.0,
8659 cost_cache_read: 0.04,
8660 cost_cache_write: 0.0,
8661 context_window: 131072,
8662 max_tokens: 4096,
8663 },
8664 ModelEntry {
8665 id: "mistralai/devstral-small",
8666 name: "Mistral: Devstral Small 1.1",
8667 api: Api::OpenAiCompletions,
8668 provider: "openrouter",
8669 reasoning: false,
8670 input: &[InputModality::Text],
8671 cost_input: 0.09999999999999999,
8672 cost_output: 0.3,
8673 cost_cache_read: 0.01,
8674 cost_cache_write: 0.0,
8675 context_window: 131072,
8676 max_tokens: 4096,
8677 },
8678 ModelEntry {
8679 id: "mistralai/ministral-14b-2512",
8680 name: "Mistral: Ministral 3 14B 2512",
8681 api: Api::OpenAiCompletions,
8682 provider: "openrouter",
8683 reasoning: false,
8684 input: &[InputModality::Text, InputModality::Image],
8685 cost_input: 0.19999999999999998,
8686 cost_output: 0.19999999999999998,
8687 cost_cache_read: 0.02,
8688 cost_cache_write: 0.0,
8689 context_window: 262144,
8690 max_tokens: 4096,
8691 },
8692 ModelEntry {
8693 id: "mistralai/ministral-8b-2512",
8694 name: "Mistral: Ministral 3 8B 2512",
8695 api: Api::OpenAiCompletions,
8696 provider: "openrouter",
8697 reasoning: false,
8698 input: &[InputModality::Text, InputModality::Image],
8699 cost_input: 0.15,
8700 cost_output: 0.15,
8701 cost_cache_read: 0.015,
8702 cost_cache_write: 0.0,
8703 context_window: 262144,
8704 max_tokens: 4096,
8705 },
8706 ModelEntry {
8707 id: "mistralai/mistral-large",
8708 name: "Mistral Large",
8709 api: Api::OpenAiCompletions,
8710 provider: "openrouter",
8711 reasoning: false,
8712 input: &[InputModality::Text],
8713 cost_input: 2.0,
8714 cost_output: 6.0,
8715 cost_cache_read: 0.19999999999999998,
8716 cost_cache_write: 0.0,
8717 context_window: 128000,
8718 max_tokens: 4096,
8719 },
8720 ModelEntry {
8721 id: "mistralai/mistral-large-2407",
8722 name: "Mistral Large 2407",
8723 api: Api::OpenAiCompletions,
8724 provider: "openrouter",
8725 reasoning: false,
8726 input: &[InputModality::Text],
8727 cost_input: 2.0,
8728 cost_output: 6.0,
8729 cost_cache_read: 0.19999999999999998,
8730 cost_cache_write: 0.0,
8731 context_window: 131072,
8732 max_tokens: 4096,
8733 },
8734 ModelEntry {
8735 id: "mistralai/mistral-large-2411",
8736 name: "Mistral Large 2411",
8737 api: Api::OpenAiCompletions,
8738 provider: "openrouter",
8739 reasoning: false,
8740 input: &[InputModality::Text],
8741 cost_input: 2.0,
8742 cost_output: 6.0,
8743 cost_cache_read: 0.19999999999999998,
8744 cost_cache_write: 0.0,
8745 context_window: 131072,
8746 max_tokens: 4096,
8747 },
8748 ModelEntry {
8749 id: "mistralai/mistral-medium-3",
8750 name: "Mistral: Mistral Medium 3",
8751 api: Api::OpenAiCompletions,
8752 provider: "openrouter",
8753 reasoning: false,
8754 input: &[InputModality::Text, InputModality::Image],
8755 cost_input: 0.39999999999999997,
8756 cost_output: 2.0,
8757 cost_cache_read: 0.04,
8758 cost_cache_write: 0.0,
8759 context_window: 131072,
8760 max_tokens: 4096,
8761 },
8762 ModelEntry {
8763 id: "mistralai/mistral-medium-3-5",
8764 name: "Mistral: Mistral Medium 3.5",
8765 api: Api::OpenAiCompletions,
8766 provider: "openrouter",
8767 reasoning: true,
8768 input: &[InputModality::Text, InputModality::Image],
8769 cost_input: 1.5,
8770 cost_output: 7.5,
8771 cost_cache_read: 0.0,
8772 cost_cache_write: 0.0,
8773 context_window: 262144,
8774 max_tokens: 4096,
8775 },
8776 ModelEntry {
8777 id: "mistralai/mistral-medium-3.1",
8778 name: "Mistral: Mistral Medium 3.1",
8779 api: Api::OpenAiCompletions,
8780 provider: "openrouter",
8781 reasoning: false,
8782 input: &[InputModality::Text, InputModality::Image],
8783 cost_input: 0.39999999999999997,
8784 cost_output: 2.0,
8785 cost_cache_read: 0.04,
8786 cost_cache_write: 0.0,
8787 context_window: 131072,
8788 max_tokens: 4096,
8789 },
8790 ModelEntry {
8791 id: "mistralai/mistral-nemo",
8792 name: "Mistral: Mistral Nemo",
8793 api: Api::OpenAiCompletions,
8794 provider: "openrouter",
8795 reasoning: false,
8796 input: &[InputModality::Text],
8797 cost_input: 0.02,
8798 cost_output: 0.03,
8799 cost_cache_read: 0.0,
8800 cost_cache_write: 0.0,
8801 context_window: 131072,
8802 max_tokens: 4096,
8803 },
8804 ModelEntry {
8805 id: "mistralai/mistral-small-2603",
8806 name: "Mistral: Mistral Small 4",
8807 api: Api::OpenAiCompletions,
8808 provider: "openrouter",
8809 reasoning: true,
8810 input: &[InputModality::Text, InputModality::Image],
8811 cost_input: 0.15,
8812 cost_output: 0.6,
8813 cost_cache_read: 0.015,
8814 cost_cache_write: 0.0,
8815 context_window: 262144,
8816 max_tokens: 4096,
8817 },
8818 ModelEntry {
8819 id: "mistralai/mistral-small-3.2-24b-instruct",
8820 name: "Mistral: Mistral Small 3.2 24B",
8821 api: Api::OpenAiCompletions,
8822 provider: "openrouter",
8823 reasoning: false,
8824 input: &[InputModality::Text, InputModality::Image],
8825 cost_input: 0.075,
8826 cost_output: 0.19999999999999998,
8827 cost_cache_read: 0.0,
8828 cost_cache_write: 0.0,
8829 context_window: 128000,
8830 max_tokens: 16384,
8831 },
8832 ModelEntry {
8833 id: "mistralai/mixtral-8x22b-instruct",
8834 name: "Mistral: Mixtral 8x22B Instruct",
8835 api: Api::OpenAiCompletions,
8836 provider: "openrouter",
8837 reasoning: false,
8838 input: &[InputModality::Text],
8839 cost_input: 2.0,
8840 cost_output: 6.0,
8841 cost_cache_read: 0.19999999999999998,
8842 cost_cache_write: 0.0,
8843 context_window: 65536,
8844 max_tokens: 4096,
8845 },
8846 ModelEntry {
8847 id: "mistralai/voxtral-small-24b-2507",
8848 name: "Mistral: Voxtral Small 24B 2507",
8849 api: Api::OpenAiCompletions,
8850 provider: "openrouter",
8851 reasoning: false,
8852 input: &[InputModality::Text],
8853 cost_input: 0.09999999999999999,
8854 cost_output: 0.3,
8855 cost_cache_read: 0.01,
8856 cost_cache_write: 0.0,
8857 context_window: 32000,
8858 max_tokens: 4096,
8859 },
8860 ModelEntry {
8861 id: "moonshotai/kimi-k2-0905",
8862 name: "MoonshotAI: Kimi K2 0905",
8863 api: Api::OpenAiCompletions,
8864 provider: "openrouter",
8865 reasoning: false,
8866 input: &[InputModality::Text],
8867 cost_input: 0.6,
8868 cost_output: 2.5,
8869 cost_cache_read: 0.0,
8870 cost_cache_write: 0.0,
8871 context_window: 262144,
8872 max_tokens: 262144,
8873 },
8874 ModelEntry {
8875 id: "moonshotai/kimi-k2.6",
8876 name: "MoonshotAI: Kimi K2.6",
8877 api: Api::OpenAiCompletions,
8878 provider: "openrouter",
8879 reasoning: true,
8880 input: &[InputModality::Text, InputModality::Image],
8881 cost_input: 0.73,
8882 cost_output: 3.49,
8883 cost_cache_read: 0.25,
8884 cost_cache_write: 0.0,
8885 context_window: 262144,
8886 max_tokens: 262142,
8887 },
8888 ModelEntry {
8889 id: "moonshotai/kimi-k2.6:free",
8890 name: "MoonshotAI: Kimi K2.6 (free)",
8891 api: Api::OpenAiCompletions,
8892 provider: "openrouter",
8893 reasoning: true,
8894 input: &[InputModality::Text, InputModality::Image],
8895 cost_input: 0.0,
8896 cost_output: 0.0,
8897 cost_cache_read: 0.0,
8898 cost_cache_write: 0.0,
8899 context_window: 262144,
8900 max_tokens: 4096,
8901 },
8902 ModelEntry {
8903 id: "nex-agi/deepseek-v3.1-nex-n1",
8904 name: "Nex AGI: DeepSeek V3.1 Nex N1",
8905 api: Api::OpenAiCompletions,
8906 provider: "openrouter",
8907 reasoning: false,
8908 input: &[InputModality::Text],
8909 cost_input: 0.135,
8910 cost_output: 0.5,
8911 cost_cache_read: 0.0,
8912 cost_cache_write: 0.0,
8913 context_window: 131072,
8914 max_tokens: 163840,
8915 },
8916 ModelEntry {
8917 id: "nvidia/nemotron-3-nano-30b-a3b",
8918 name: "NVIDIA: Nemotron 3 Nano 30B A3B",
8919 api: Api::OpenAiCompletions,
8920 provider: "openrouter",
8921 reasoning: true,
8922 input: &[InputModality::Text],
8923 cost_input: 0.049999999999999996,
8924 cost_output: 0.19999999999999998,
8925 cost_cache_read: 0.0,
8926 cost_cache_write: 0.0,
8927 context_window: 262144,
8928 max_tokens: 228000,
8929 },
8930 ModelEntry {
8931 id: "nvidia/nemotron-3-nano-30b-a3b:free",
8932 name: "NVIDIA: Nemotron 3 Nano 30B A3B (free)",
8933 api: Api::OpenAiCompletions,
8934 provider: "openrouter",
8935 reasoning: true,
8936 input: &[InputModality::Text],
8937 cost_input: 0.0,
8938 cost_output: 0.0,
8939 cost_cache_read: 0.0,
8940 cost_cache_write: 0.0,
8941 context_window: 256000,
8942 max_tokens: 4096,
8943 },
8944 ModelEntry {
8945 id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
8946 name: "NVIDIA: Nemotron 3 Nano Omni (free)",
8947 api: Api::OpenAiCompletions,
8948 provider: "openrouter",
8949 reasoning: true,
8950 input: &[InputModality::Text, InputModality::Image],
8951 cost_input: 0.0,
8952 cost_output: 0.0,
8953 cost_cache_read: 0.0,
8954 cost_cache_write: 0.0,
8955 context_window: 256000,
8956 max_tokens: 65536,
8957 },
8958 ModelEntry {
8959 id: "nvidia/nemotron-3-super-120b-a12b:free",
8960 name: "NVIDIA: Nemotron 3 Super (free)",
8961 api: Api::OpenAiCompletions,
8962 provider: "openrouter",
8963 reasoning: true,
8964 input: &[InputModality::Text],
8965 cost_input: 0.0,
8966 cost_output: 0.0,
8967 cost_cache_read: 0.0,
8968 cost_cache_write: 0.0,
8969 context_window: 1000000,
8970 max_tokens: 262144,
8971 },
8972 ModelEntry {
8973 id: "nvidia/nemotron-nano-12b-v2-vl:free",
8974 name: "NVIDIA: Nemotron Nano 12B 2 VL (free)",
8975 api: Api::OpenAiCompletions,
8976 provider: "openrouter",
8977 reasoning: true,
8978 input: &[InputModality::Text, InputModality::Image],
8979 cost_input: 0.0,
8980 cost_output: 0.0,
8981 cost_cache_read: 0.0,
8982 cost_cache_write: 0.0,
8983 context_window: 128000,
8984 max_tokens: 128000,
8985 },
8986 ModelEntry {
8987 id: "nvidia/nemotron-nano-9b-v2",
8988 name: "NVIDIA: Nemotron Nano 9B V2",
8989 api: Api::OpenAiCompletions,
8990 provider: "openrouter",
8991 reasoning: true,
8992 input: &[InputModality::Text],
8993 cost_input: 0.04,
8994 cost_output: 0.16,
8995 cost_cache_read: 0.0,
8996 cost_cache_write: 0.0,
8997 context_window: 131072,
8998 max_tokens: 16384,
8999 },
9000 ModelEntry {
9001 id: "nvidia/nemotron-nano-9b-v2:free",
9002 name: "NVIDIA: Nemotron Nano 9B V2 (free)",
9003 api: Api::OpenAiCompletions,
9004 provider: "openrouter",
9005 reasoning: true,
9006 input: &[InputModality::Text],
9007 cost_input: 0.0,
9008 cost_output: 0.0,
9009 cost_cache_read: 0.0,
9010 cost_cache_write: 0.0,
9011 context_window: 128000,
9012 max_tokens: 4096,
9013 },
9014 ModelEntry {
9015 id: "openai/gpt-3.5-turbo-0613",
9016 name: "OpenAI: GPT-3.5 Turbo (older v0613)",
9017 api: Api::OpenAiCompletions,
9018 provider: "openrouter",
9019 reasoning: false,
9020 input: &[InputModality::Text],
9021 cost_input: 1.0,
9022 cost_output: 2.0,
9023 cost_cache_read: 0.0,
9024 cost_cache_write: 0.0,
9025 context_window: 4095,
9026 max_tokens: 4096,
9027 },
9028 ModelEntry {
9029 id: "openai/gpt-3.5-turbo-16k",
9030 name: "OpenAI: GPT-3.5 Turbo 16k",
9031 api: Api::OpenAiCompletions,
9032 provider: "openrouter",
9033 reasoning: false,
9034 input: &[InputModality::Text],
9035 cost_input: 3.0,
9036 cost_output: 4.0,
9037 cost_cache_read: 0.0,
9038 cost_cache_write: 0.0,
9039 context_window: 16385,
9040 max_tokens: 4096,
9041 },
9042 ModelEntry {
9043 id: "openai/gpt-4",
9044 name: "OpenAI: GPT-4",
9045 api: Api::OpenAiCompletions,
9046 provider: "openrouter",
9047 reasoning: false,
9048 input: &[InputModality::Text],
9049 cost_input: 30.0,
9050 cost_output: 60.0,
9051 cost_cache_read: 0.0,
9052 cost_cache_write: 0.0,
9053 context_window: 8191,
9054 max_tokens: 4096,
9055 },
9056 ModelEntry {
9057 id: "openai/gpt-4-1106-preview",
9058 name: "OpenAI: GPT-4 Turbo (older v1106)",
9059 api: Api::OpenAiCompletions,
9060 provider: "openrouter",
9061 reasoning: false,
9062 input: &[InputModality::Text],
9063 cost_input: 10.0,
9064 cost_output: 30.0,
9065 cost_cache_read: 0.0,
9066 cost_cache_write: 0.0,
9067 context_window: 128000,
9068 max_tokens: 4096,
9069 },
9070 ModelEntry {
9071 id: "openai/gpt-4-turbo",
9072 name: "OpenAI: GPT-4 Turbo",
9073 api: Api::OpenAiCompletions,
9074 provider: "openrouter",
9075 reasoning: false,
9076 input: &[InputModality::Text, InputModality::Image],
9077 cost_input: 10.0,
9078 cost_output: 30.0,
9079 cost_cache_read: 0.0,
9080 cost_cache_write: 0.0,
9081 context_window: 128000,
9082 max_tokens: 4096,
9083 },
9084 ModelEntry {
9085 id: "openai/gpt-4-turbo-preview",
9086 name: "OpenAI: GPT-4 Turbo Preview",
9087 api: Api::OpenAiCompletions,
9088 provider: "openrouter",
9089 reasoning: false,
9090 input: &[InputModality::Text],
9091 cost_input: 10.0,
9092 cost_output: 30.0,
9093 cost_cache_read: 0.0,
9094 cost_cache_write: 0.0,
9095 context_window: 128000,
9096 max_tokens: 4096,
9097 },
9098 ModelEntry {
9099 id: "openai/gpt-4.1",
9100 name: "OpenAI: GPT-4.1",
9101 api: Api::OpenAiCompletions,
9102 provider: "openrouter",
9103 reasoning: false,
9104 input: &[InputModality::Text, InputModality::Image],
9105 cost_input: 2.0,
9106 cost_output: 8.0,
9107 cost_cache_read: 0.5,
9108 cost_cache_write: 0.0,
9109 context_window: 1047576,
9110 max_tokens: 4096,
9111 },
9112 ModelEntry {
9113 id: "openai/gpt-4.1-nano",
9114 name: "OpenAI: GPT-4.1 Nano",
9115 api: Api::OpenAiCompletions,
9116 provider: "openrouter",
9117 reasoning: false,
9118 input: &[InputModality::Text, InputModality::Image],
9119 cost_input: 0.09999999999999999,
9120 cost_output: 0.39999999999999997,
9121 cost_cache_read: 0.024999999999999998,
9122 cost_cache_write: 0.0,
9123 context_window: 1047576,
9124 max_tokens: 32768,
9125 },
9126 ModelEntry {
9127 id: "openai/gpt-4o",
9128 name: "OpenAI: GPT-4o",
9129 api: Api::OpenAiCompletions,
9130 provider: "openrouter",
9131 reasoning: false,
9132 input: &[InputModality::Text, InputModality::Image],
9133 cost_input: 2.5,
9134 cost_output: 10.0,
9135 cost_cache_read: 0.0,
9136 cost_cache_write: 0.0,
9137 context_window: 128000,
9138 max_tokens: 16384,
9139 },
9140 ModelEntry {
9141 id: "openai/gpt-4o-2024-05-13",
9142 name: "OpenAI: GPT-4o (2024-05-13)",
9143 api: Api::OpenAiCompletions,
9144 provider: "openrouter",
9145 reasoning: false,
9146 input: &[InputModality::Text, InputModality::Image],
9147 cost_input: 5.0,
9148 cost_output: 15.0,
9149 cost_cache_read: 0.0,
9150 cost_cache_write: 0.0,
9151 context_window: 128000,
9152 max_tokens: 4096,
9153 },
9154 ModelEntry {
9155 id: "openai/gpt-4o-2024-11-20",
9156 name: "OpenAI: GPT-4o (2024-11-20)",
9157 api: Api::OpenAiCompletions,
9158 provider: "openrouter",
9159 reasoning: false,
9160 input: &[InputModality::Text, InputModality::Image],
9161 cost_input: 2.5,
9162 cost_output: 10.0,
9163 cost_cache_read: 1.25,
9164 cost_cache_write: 0.0,
9165 context_window: 128000,
9166 max_tokens: 16384,
9167 },
9168 ModelEntry {
9169 id: "openai/gpt-4o-audio-preview",
9170 name: "OpenAI: GPT-4o Audio",
9171 api: Api::OpenAiCompletions,
9172 provider: "openrouter",
9173 reasoning: false,
9174 input: &[InputModality::Text],
9175 cost_input: 2.5,
9176 cost_output: 10.0,
9177 cost_cache_read: 0.0,
9178 cost_cache_write: 0.0,
9179 context_window: 128000,
9180 max_tokens: 16384,
9181 },
9182 ModelEntry {
9183 id: "openai/gpt-4o-mini",
9184 name: "OpenAI: GPT-4o-mini",
9185 api: Api::OpenAiCompletions,
9186 provider: "openrouter",
9187 reasoning: false,
9188 input: &[InputModality::Text, InputModality::Image],
9189 cost_input: 0.15,
9190 cost_output: 0.6,
9191 cost_cache_read: 0.075,
9192 cost_cache_write: 0.0,
9193 context_window: 128000,
9194 max_tokens: 16384,
9195 },
9196 ModelEntry {
9197 id: "openai/gpt-4o-mini-2024-07-18",
9198 name: "OpenAI: GPT-4o-mini (2024-07-18)",
9199 api: Api::OpenAiCompletions,
9200 provider: "openrouter",
9201 reasoning: false,
9202 input: &[InputModality::Text, InputModality::Image],
9203 cost_input: 0.15,
9204 cost_output: 0.6,
9205 cost_cache_read: 0.075,
9206 cost_cache_write: 0.0,
9207 context_window: 128000,
9208 max_tokens: 16384,
9209 },
9210 ModelEntry {
9211 id: "openai/gpt-5-codex",
9212 name: "OpenAI: GPT-5 Codex",
9213 api: Api::OpenAiCompletions,
9214 provider: "openrouter",
9215 reasoning: true,
9216 input: &[InputModality::Text, InputModality::Image],
9217 cost_input: 1.25,
9218 cost_output: 10.0,
9219 cost_cache_read: 0.125,
9220 cost_cache_write: 0.0,
9221 context_window: 400000,
9222 max_tokens: 128000,
9223 },
9224 ModelEntry {
9225 id: "openai/gpt-5-mini",
9226 name: "OpenAI: GPT-5 Mini",
9227 api: Api::OpenAiCompletions,
9228 provider: "openrouter",
9229 reasoning: true,
9230 input: &[InputModality::Text, InputModality::Image],
9231 cost_input: 0.25,
9232 cost_output: 2.0,
9233 cost_cache_read: 0.024999999999999998,
9234 cost_cache_write: 0.0,
9235 context_window: 400000,
9236 max_tokens: 128000,
9237 },
9238 ModelEntry {
9239 id: "openai/gpt-5-nano",
9240 name: "OpenAI: GPT-5 Nano",
9241 api: Api::OpenAiCompletions,
9242 provider: "openrouter",
9243 reasoning: true,
9244 input: &[InputModality::Text, InputModality::Image],
9245 cost_input: 0.049999999999999996,
9246 cost_output: 0.39999999999999997,
9247 cost_cache_read: 0.01,
9248 cost_cache_write: 0.0,
9249 context_window: 400000,
9250 max_tokens: 4096,
9251 },
9252 ModelEntry {
9253 id: "openai/gpt-5-pro",
9254 name: "OpenAI: GPT-5 Pro",
9255 api: Api::OpenAiCompletions,
9256 provider: "openrouter",
9257 reasoning: true,
9258 input: &[InputModality::Text, InputModality::Image],
9259 cost_input: 15.0,
9260 cost_output: 120.0,
9261 cost_cache_read: 0.0,
9262 cost_cache_write: 0.0,
9263 context_window: 400000,
9264 max_tokens: 128000,
9265 },
9266 ModelEntry {
9267 id: "openai/gpt-5.1-chat",
9268 name: "OpenAI: GPT-5.1 Chat",
9269 api: Api::OpenAiCompletions,
9270 provider: "openrouter",
9271 reasoning: false,
9272 input: &[InputModality::Text, InputModality::Image],
9273 cost_input: 1.25,
9274 cost_output: 10.0,
9275 cost_cache_read: 0.13,
9276 cost_cache_write: 0.0,
9277 context_window: 128000,
9278 max_tokens: 32000,
9279 },
9280 ModelEntry {
9281 id: "openai/gpt-5.1-codex",
9282 name: "OpenAI: GPT-5.1-Codex",
9283 api: Api::OpenAiCompletions,
9284 provider: "openrouter",
9285 reasoning: true,
9286 input: &[InputModality::Text, InputModality::Image],
9287 cost_input: 1.25,
9288 cost_output: 10.0,
9289 cost_cache_read: 0.13,
9290 cost_cache_write: 0.0,
9291 context_window: 400000,
9292 max_tokens: 128000,
9293 },
9294 ModelEntry {
9295 id: "openai/gpt-5.2",
9296 name: "OpenAI: GPT-5.2",
9297 api: Api::OpenAiCompletions,
9298 provider: "openrouter",
9299 reasoning: true,
9300 input: &[InputModality::Text, InputModality::Image],
9301 cost_input: 1.75,
9302 cost_output: 14.0,
9303 cost_cache_read: 0.175,
9304 cost_cache_write: 0.0,
9305 context_window: 400000,
9306 max_tokens: 128000,
9307 },
9308 ModelEntry {
9309 id: "openai/gpt-5.2-codex",
9310 name: "OpenAI: GPT-5.2-Codex",
9311 api: Api::OpenAiCompletions,
9312 provider: "openrouter",
9313 reasoning: true,
9314 input: &[InputModality::Text, InputModality::Image],
9315 cost_input: 1.75,
9316 cost_output: 14.0,
9317 cost_cache_read: 0.175,
9318 cost_cache_write: 0.0,
9319 context_window: 400000,
9320 max_tokens: 128000,
9321 },
9322 ModelEntry {
9323 id: "openai/gpt-5.2-pro",
9324 name: "OpenAI: GPT-5.2 Pro",
9325 api: Api::OpenAiCompletions,
9326 provider: "openrouter",
9327 reasoning: true,
9328 input: &[InputModality::Text, InputModality::Image],
9329 cost_input: 21.0,
9330 cost_output: 168.0,
9331 cost_cache_read: 0.0,
9332 cost_cache_write: 0.0,
9333 context_window: 400000,
9334 max_tokens: 128000,
9335 },
9336 ModelEntry {
9337 id: "openai/gpt-5.3-codex",
9338 name: "OpenAI: GPT-5.3-Codex",
9339 api: Api::OpenAiCompletions,
9340 provider: "openrouter",
9341 reasoning: true,
9342 input: &[InputModality::Text, InputModality::Image],
9343 cost_input: 1.75,
9344 cost_output: 14.0,
9345 cost_cache_read: 0.175,
9346 cost_cache_write: 0.0,
9347 context_window: 400000,
9348 max_tokens: 128000,
9349 },
9350 ModelEntry {
9351 id: "openai/gpt-5.4",
9352 name: "OpenAI: GPT-5.4",
9353 api: Api::OpenAiCompletions,
9354 provider: "openrouter",
9355 reasoning: true,
9356 input: &[InputModality::Text, InputModality::Image],
9357 cost_input: 2.5,
9358 cost_output: 15.0,
9359 cost_cache_read: 0.25,
9360 cost_cache_write: 0.0,
9361 context_window: 1050000,
9362 max_tokens: 128000,
9363 },
9364 ModelEntry {
9365 id: "openai/gpt-5.4-pro",
9366 name: "OpenAI: GPT-5.4 Pro",
9367 api: Api::OpenAiCompletions,
9368 provider: "openrouter",
9369 reasoning: true,
9370 input: &[InputModality::Text, InputModality::Image],
9371 cost_input: 30.0,
9372 cost_output: 180.0,
9373 cost_cache_read: 0.0,
9374 cost_cache_write: 0.0,
9375 context_window: 1050000,
9376 max_tokens: 128000,
9377 },
9378 ModelEntry {
9379 id: "openai/gpt-5.5",
9380 name: "OpenAI: GPT-5.5",
9381 api: Api::OpenAiCompletions,
9382 provider: "openrouter",
9383 reasoning: true,
9384 input: &[InputModality::Text, InputModality::Image],
9385 cost_input: 5.0,
9386 cost_output: 30.0,
9387 cost_cache_read: 0.5,
9388 cost_cache_write: 0.0,
9389 context_window: 1050000,
9390 max_tokens: 128000,
9391 },
9392 ModelEntry {
9393 id: "openai/gpt-5.5-pro",
9394 name: "OpenAI: GPT-5.5 Pro",
9395 api: Api::OpenAiCompletions,
9396 provider: "openrouter",
9397 reasoning: true,
9398 input: &[InputModality::Text, InputModality::Image],
9399 cost_input: 30.0,
9400 cost_output: 180.0,
9401 cost_cache_read: 0.0,
9402 cost_cache_write: 0.0,
9403 context_window: 1050000,
9404 max_tokens: 128000,
9405 },
9406 ModelEntry {
9407 id: "openai/gpt-audio",
9408 name: "OpenAI: GPT Audio",
9409 api: Api::OpenAiCompletions,
9410 provider: "openrouter",
9411 reasoning: false,
9412 input: &[InputModality::Text],
9413 cost_input: 2.5,
9414 cost_output: 10.0,
9415 cost_cache_read: 0.0,
9416 cost_cache_write: 0.0,
9417 context_window: 128000,
9418 max_tokens: 16384,
9419 },
9420 ModelEntry {
9421 id: "openai/gpt-chat-latest",
9422 name: "OpenAI: GPT Chat Latest",
9423 api: Api::OpenAiCompletions,
9424 provider: "openrouter",
9425 reasoning: false,
9426 input: &[InputModality::Text, InputModality::Image],
9427 cost_input: 5.0,
9428 cost_output: 30.0,
9429 cost_cache_read: 0.5,
9430 cost_cache_write: 0.0,
9431 context_window: 400000,
9432 max_tokens: 128000,
9433 },
9434 ModelEntry {
9435 id: "openai/gpt-oss-120b:free",
9436 name: "OpenAI: gpt-oss-120b (free)",
9437 api: Api::OpenAiCompletions,
9438 provider: "openrouter",
9439 reasoning: true,
9440 input: &[InputModality::Text],
9441 cost_input: 0.0,
9442 cost_output: 0.0,
9443 cost_cache_read: 0.0,
9444 cost_cache_write: 0.0,
9445 context_window: 131072,
9446 max_tokens: 131072,
9447 },
9448 ModelEntry {
9449 id: "openai/o1",
9450 name: "OpenAI: o1",
9451 api: Api::OpenAiCompletions,
9452 provider: "openrouter",
9453 reasoning: true,
9454 input: &[InputModality::Text, InputModality::Image],
9455 cost_input: 15.0,
9456 cost_output: 60.0,
9457 cost_cache_read: 7.5,
9458 cost_cache_write: 0.0,
9459 context_window: 200000,
9460 max_tokens: 100000,
9461 },
9462 ModelEntry {
9463 id: "openai/o3",
9464 name: "OpenAI: o3",
9465 api: Api::OpenAiCompletions,
9466 provider: "openrouter",
9467 reasoning: true,
9468 input: &[InputModality::Text, InputModality::Image],
9469 cost_input: 2.0,
9470 cost_output: 8.0,
9471 cost_cache_read: 0.5,
9472 cost_cache_write: 0.0,
9473 context_window: 200000,
9474 max_tokens: 100000,
9475 },
9476 ModelEntry {
9477 id: "openai/o3-deep-research",
9478 name: "OpenAI: o3 Deep Research",
9479 api: Api::OpenAiCompletions,
9480 provider: "openrouter",
9481 reasoning: true,
9482 input: &[InputModality::Text, InputModality::Image],
9483 cost_input: 10.0,
9484 cost_output: 40.0,
9485 cost_cache_read: 2.5,
9486 cost_cache_write: 0.0,
9487 context_window: 200000,
9488 max_tokens: 100000,
9489 },
9490 ModelEntry {
9491 id: "openai/o3-mini-high",
9492 name: "OpenAI: o3 Mini High",
9493 api: Api::OpenAiCompletions,
9494 provider: "openrouter",
9495 reasoning: true,
9496 input: &[InputModality::Text],
9497 cost_input: 1.1,
9498 cost_output: 4.4,
9499 cost_cache_read: 0.55,
9500 cost_cache_write: 0.0,
9501 context_window: 200000,
9502 max_tokens: 100000,
9503 },
9504 ModelEntry {
9505 id: "openai/o3-pro",
9506 name: "OpenAI: o3 Pro",
9507 api: Api::OpenAiCompletions,
9508 provider: "openrouter",
9509 reasoning: true,
9510 input: &[InputModality::Text, InputModality::Image],
9511 cost_input: 20.0,
9512 cost_output: 80.0,
9513 cost_cache_read: 0.0,
9514 cost_cache_write: 0.0,
9515 context_window: 200000,
9516 max_tokens: 100000,
9517 },
9518 ModelEntry {
9519 id: "openai/o4-mini",
9520 name: "OpenAI: o4 Mini",
9521 api: Api::OpenAiCompletions,
9522 provider: "openrouter",
9523 reasoning: true,
9524 input: &[InputModality::Text, InputModality::Image],
9525 cost_input: 1.1,
9526 cost_output: 4.4,
9527 cost_cache_read: 0.275,
9528 cost_cache_write: 0.0,
9529 context_window: 200000,
9530 max_tokens: 100000,
9531 },
9532 ModelEntry {
9533 id: "openai/o4-mini-high",
9534 name: "OpenAI: o4 Mini High",
9535 api: Api::OpenAiCompletions,
9536 provider: "openrouter",
9537 reasoning: true,
9538 input: &[InputModality::Text, InputModality::Image],
9539 cost_input: 1.1,
9540 cost_output: 4.4,
9541 cost_cache_read: 0.275,
9542 cost_cache_write: 0.0,
9543 context_window: 200000,
9544 max_tokens: 100000,
9545 },
9546 ModelEntry {
9547 id: "openrouter/auto",
9548 name: "Auto Router",
9549 api: Api::OpenAiCompletions,
9550 provider: "openrouter",
9551 reasoning: true,
9552 input: &[InputModality::Text, InputModality::Image],
9553 cost_input: -1000000.0,
9554 cost_output: -1000000.0,
9555 cost_cache_read: 0.0,
9556 cost_cache_write: 0.0,
9557 context_window: 2000000,
9558 max_tokens: 4096,
9559 },
9560 ModelEntry {
9561 id: "openrouter/free",
9562 name: "Free Models Router",
9563 api: Api::OpenAiCompletions,
9564 provider: "openrouter",
9565 reasoning: true,
9566 input: &[InputModality::Text, InputModality::Image],
9567 cost_input: 0.0,
9568 cost_output: 0.0,
9569 cost_cache_read: 0.0,
9570 cost_cache_write: 0.0,
9571 context_window: 200000,
9572 max_tokens: 4096,
9573 },
9574 ModelEntry {
9575 id: "openrouter/owl-alpha",
9576 name: "Owl Alpha",
9577 api: Api::OpenAiCompletions,
9578 provider: "openrouter",
9579 reasoning: false,
9580 input: &[InputModality::Text],
9581 cost_input: 0.0,
9582 cost_output: 0.0,
9583 cost_cache_read: 0.0,
9584 cost_cache_write: 0.0,
9585 context_window: 1048756,
9586 max_tokens: 262144,
9587 },
9588 ModelEntry {
9589 id: "poolside/laguna-xs.2:free",
9590 name: "Poolside: Laguna XS.2 (free)",
9591 api: Api::OpenAiCompletions,
9592 provider: "openrouter",
9593 reasoning: true,
9594 input: &[InputModality::Text],
9595 cost_input: 0.0,
9596 cost_output: 0.0,
9597 cost_cache_read: 0.0,
9598 cost_cache_write: 0.0,
9599 context_window: 262144,
9600 max_tokens: 32768,
9601 },
9602 ModelEntry {
9603 id: "prime-intellect/intellect-3",
9604 name: "Prime Intellect: INTELLECT-3",
9605 api: Api::OpenAiCompletions,
9606 provider: "openrouter",
9607 reasoning: true,
9608 input: &[InputModality::Text],
9609 cost_input: 0.19999999999999998,
9610 cost_output: 1.1,
9611 cost_cache_read: 0.0,
9612 cost_cache_write: 0.0,
9613 context_window: 131072,
9614 max_tokens: 131072,
9615 },
9616 ModelEntry {
9617 id: "qwen/qwen-2.5-72b-instruct",
9618 name: "Qwen2.5 72B Instruct",
9619 api: Api::OpenAiCompletions,
9620 provider: "openrouter",
9621 reasoning: false,
9622 input: &[InputModality::Text],
9623 cost_input: 0.36,
9624 cost_output: 0.39999999999999997,
9625 cost_cache_read: 0.0,
9626 cost_cache_write: 0.0,
9627 context_window: 131072,
9628 max_tokens: 16384,
9629 },
9630 ModelEntry {
9631 id: "qwen/qwen-2.5-7b-instruct",
9632 name: "Qwen: Qwen2.5 7B Instruct",
9633 api: Api::OpenAiCompletions,
9634 provider: "openrouter",
9635 reasoning: false,
9636 input: &[InputModality::Text],
9637 cost_input: 0.04,
9638 cost_output: 0.09999999999999999,
9639 cost_cache_read: 0.0,
9640 cost_cache_write: 0.0,
9641 context_window: 131072,
9642 max_tokens: 32768,
9643 },
9644 ModelEntry {
9645 id: "qwen/qwen-plus",
9646 name: "Qwen: Qwen-Plus",
9647 api: Api::OpenAiCompletions,
9648 provider: "openrouter",
9649 reasoning: false,
9650 input: &[InputModality::Text],
9651 cost_input: 0.26,
9652 cost_output: 0.78,
9653 cost_cache_read: 0.052000000000000005,
9654 cost_cache_write: 0.325,
9655 context_window: 1000000,
9656 max_tokens: 32768,
9657 },
9658 ModelEntry {
9659 id: "qwen/qwen-plus-2025-07-28",
9660 name: "Qwen: Qwen Plus 0728",
9661 api: Api::OpenAiCompletions,
9662 provider: "openrouter",
9663 reasoning: false,
9664 input: &[InputModality::Text],
9665 cost_input: 0.26,
9666 cost_output: 0.78,
9667 cost_cache_read: 0.0,
9668 cost_cache_write: 0.0,
9669 context_window: 1000000,
9670 max_tokens: 32768,
9671 },
9672 ModelEntry {
9673 id: "qwen/qwen-plus-2025-07-28:thinking",
9674 name: "Qwen: Qwen Plus 0728 (thinking)",
9675 api: Api::OpenAiCompletions,
9676 provider: "openrouter",
9677 reasoning: true,
9678 input: &[InputModality::Text],
9679 cost_input: 0.26,
9680 cost_output: 0.78,
9681 cost_cache_read: 0.0,
9682 cost_cache_write: 0.325,
9683 context_window: 1000000,
9684 max_tokens: 32768,
9685 },
9686 ModelEntry {
9687 id: "qwen/qwen3-14b",
9688 name: "Qwen: Qwen3 14B",
9689 api: Api::OpenAiCompletions,
9690 provider: "openrouter",
9691 reasoning: true,
9692 input: &[InputModality::Text],
9693 cost_input: 0.09999999999999999,
9694 cost_output: 0.24,
9695 cost_cache_read: 0.0,
9696 cost_cache_write: 0.0,
9697 context_window: 131702,
9698 max_tokens: 40960,
9699 },
9700 ModelEntry {
9701 id: "qwen/qwen3-235b-a22b",
9702 name: "Qwen: Qwen3 235B A22B",
9703 api: Api::OpenAiCompletions,
9704 provider: "openrouter",
9705 reasoning: true,
9706 input: &[InputModality::Text],
9707 cost_input: 0.45499999999999996,
9708 cost_output: 1.8199999999999998,
9709 cost_cache_read: 0.0,
9710 cost_cache_write: 0.0,
9711 context_window: 131072,
9712 max_tokens: 8192,
9713 },
9714 ModelEntry {
9715 id: "qwen/qwen3-235b-a22b-2507",
9716 name: "Qwen: Qwen3 235B A22B Instruct 2507",
9717 api: Api::OpenAiCompletions,
9718 provider: "openrouter",
9719 reasoning: false,
9720 input: &[InputModality::Text],
9721 cost_input: 0.071,
9722 cost_output: 0.09999999999999999,
9723 cost_cache_read: 0.0,
9724 cost_cache_write: 0.0,
9725 context_window: 262144,
9726 max_tokens: 16384,
9727 },
9728 ModelEntry {
9729 id: "qwen/qwen3-30b-a3b",
9730 name: "Qwen: Qwen3 30B A3B",
9731 api: Api::OpenAiCompletions,
9732 provider: "openrouter",
9733 reasoning: true,
9734 input: &[InputModality::Text],
9735 cost_input: 0.09,
9736 cost_output: 0.44999999999999996,
9737 cost_cache_read: 0.0,
9738 cost_cache_write: 0.0,
9739 context_window: 131072,
9740 max_tokens: 20000,
9741 },
9742 ModelEntry {
9743 id: "qwen/qwen3-30b-a3b-instruct-2507",
9744 name: "Qwen: Qwen3 30B A3B Instruct 2507",
9745 api: Api::OpenAiCompletions,
9746 provider: "openrouter",
9747 reasoning: false,
9748 input: &[InputModality::Text],
9749 cost_input: 0.09,
9750 cost_output: 0.3,
9751 cost_cache_read: 0.0,
9752 cost_cache_write: 0.0,
9753 context_window: 262144,
9754 max_tokens: 262144,
9755 },
9756 ModelEntry {
9757 id: "qwen/qwen3-30b-a3b-thinking-2507",
9758 name: "Qwen: Qwen3 30B A3B Thinking 2507",
9759 api: Api::OpenAiCompletions,
9760 provider: "openrouter",
9761 reasoning: true,
9762 input: &[InputModality::Text],
9763 cost_input: 0.08,
9764 cost_output: 0.39999999999999997,
9765 cost_cache_read: 0.08,
9766 cost_cache_write: 0.0,
9767 context_window: 131072,
9768 max_tokens: 131072,
9769 },
9770 ModelEntry {
9771 id: "qwen/qwen3-8b",
9772 name: "Qwen: Qwen3 8B",
9773 api: Api::OpenAiCompletions,
9774 provider: "openrouter",
9775 reasoning: true,
9776 input: &[InputModality::Text],
9777 cost_input: 0.049999999999999996,
9778 cost_output: 0.39999999999999997,
9779 cost_cache_read: 0.049999999999999996,
9780 cost_cache_write: 0.0,
9781 context_window: 131072,
9782 max_tokens: 8192,
9783 },
9784 ModelEntry {
9785 id: "qwen/qwen3-coder",
9786 name: "Qwen: Qwen3 Coder 480B A35B",
9787 api: Api::OpenAiCompletions,
9788 provider: "openrouter",
9789 reasoning: false,
9790 input: &[InputModality::Text],
9791 cost_input: 0.22,
9792 cost_output: 1.7999999999999998,
9793 cost_cache_read: 0.0,
9794 cost_cache_write: 0.0,
9795 context_window: 1048576,
9796 max_tokens: 65536,
9797 },
9798 ModelEntry {
9799 id: "qwen/qwen3-coder-30b-a3b-instruct",
9800 name: "Qwen: Qwen3 Coder 30B A3B Instruct",
9801 api: Api::OpenAiCompletions,
9802 provider: "openrouter",
9803 reasoning: false,
9804 input: &[InputModality::Text],
9805 cost_input: 0.07,
9806 cost_output: 0.27,
9807 cost_cache_read: 0.0,
9808 cost_cache_write: 0.0,
9809 context_window: 160000,
9810 max_tokens: 32768,
9811 },
9812 ModelEntry {
9813 id: "qwen/qwen3-coder-flash",
9814 name: "Qwen: Qwen3 Coder Flash",
9815 api: Api::OpenAiCompletions,
9816 provider: "openrouter",
9817 reasoning: false,
9818 input: &[InputModality::Text],
9819 cost_input: 0.195,
9820 cost_output: 0.975,
9821 cost_cache_read: 0.039,
9822 cost_cache_write: 0.24375,
9823 context_window: 1000000,
9824 max_tokens: 65536,
9825 },
9826 ModelEntry {
9827 id: "qwen/qwen3-coder-plus",
9828 name: "Qwen: Qwen3 Coder Plus",
9829 api: Api::OpenAiCompletions,
9830 provider: "openrouter",
9831 reasoning: false,
9832 input: &[InputModality::Text],
9833 cost_input: 0.65,
9834 cost_output: 3.25,
9835 cost_cache_read: 0.13,
9836 cost_cache_write: 0.8125,
9837 context_window: 1000000,
9838 max_tokens: 65536,
9839 },
9840 ModelEntry {
9841 id: "qwen/qwen3-coder:free",
9842 name: "Qwen: Qwen3 Coder 480B A35B (free)",
9843 api: Api::OpenAiCompletions,
9844 provider: "openrouter",
9845 reasoning: false,
9846 input: &[InputModality::Text],
9847 cost_input: 0.0,
9848 cost_output: 0.0,
9849 cost_cache_read: 0.0,
9850 cost_cache_write: 0.0,
9851 context_window: 1048576,
9852 max_tokens: 262000,
9853 },
9854 ModelEntry {
9855 id: "qwen/qwen3-max",
9856 name: "Qwen: Qwen3 Max",
9857 api: Api::OpenAiCompletions,
9858 provider: "openrouter",
9859 reasoning: false,
9860 input: &[InputModality::Text],
9861 cost_input: 0.78,
9862 cost_output: 3.9,
9863 cost_cache_read: 0.156,
9864 cost_cache_write: 0.975,
9865 context_window: 262144,
9866 max_tokens: 32768,
9867 },
9868 ModelEntry {
9869 id: "qwen/qwen3-next-80b-a3b-instruct",
9870 name: "Qwen: Qwen3 Next 80B A3B Instruct",
9871 api: Api::OpenAiCompletions,
9872 provider: "openrouter",
9873 reasoning: false,
9874 input: &[InputModality::Text],
9875 cost_input: 0.09,
9876 cost_output: 1.1,
9877 cost_cache_read: 0.0,
9878 cost_cache_write: 0.0,
9879 context_window: 262144,
9880 max_tokens: 16384,
9881 },
9882 ModelEntry {
9883 id: "qwen/qwen3-next-80b-a3b-instruct:free",
9884 name: "Qwen: Qwen3 Next 80B A3B Instruct (free)",
9885 api: Api::OpenAiCompletions,
9886 provider: "openrouter",
9887 reasoning: false,
9888 input: &[InputModality::Text],
9889 cost_input: 0.0,
9890 cost_output: 0.0,
9891 cost_cache_read: 0.0,
9892 cost_cache_write: 0.0,
9893 context_window: 262144,
9894 max_tokens: 4096,
9895 },
9896 ModelEntry {
9897 id: "qwen/qwen3-next-80b-a3b-thinking",
9898 name: "Qwen: Qwen3 Next 80B A3B Thinking",
9899 api: Api::OpenAiCompletions,
9900 provider: "openrouter",
9901 reasoning: true,
9902 input: &[InputModality::Text],
9903 cost_input: 0.0975,
9904 cost_output: 0.78,
9905 cost_cache_read: 0.0,
9906 cost_cache_write: 0.0,
9907 context_window: 262144,
9908 max_tokens: 32768,
9909 },
9910 ModelEntry {
9911 id: "qwen/qwen3-vl-235b-a22b-instruct",
9912 name: "Qwen: Qwen3 VL 235B A22B Instruct",
9913 api: Api::OpenAiCompletions,
9914 provider: "openrouter",
9915 reasoning: false,
9916 input: &[InputModality::Text, InputModality::Image],
9917 cost_input: 0.19999999999999998,
9918 cost_output: 0.88,
9919 cost_cache_read: 0.11,
9920 cost_cache_write: 0.0,
9921 context_window: 262144,
9922 max_tokens: 16384,
9923 },
9924 ModelEntry {
9925 id: "qwen/qwen3-vl-30b-a3b-instruct",
9926 name: "Qwen: Qwen3 VL 30B A3B Instruct",
9927 api: Api::OpenAiCompletions,
9928 provider: "openrouter",
9929 reasoning: false,
9930 input: &[InputModality::Text, InputModality::Image],
9931 cost_input: 0.13,
9932 cost_output: 0.52,
9933 cost_cache_read: 0.0,
9934 cost_cache_write: 0.0,
9935 context_window: 262144,
9936 max_tokens: 32768,
9937 },
9938 ModelEntry {
9939 id: "qwen/qwen3-vl-30b-a3b-thinking",
9940 name: "Qwen: Qwen3 VL 30B A3B Thinking",
9941 api: Api::OpenAiCompletions,
9942 provider: "openrouter",
9943 reasoning: true,
9944 input: &[InputModality::Text, InputModality::Image],
9945 cost_input: 0.13,
9946 cost_output: 1.56,
9947 cost_cache_read: 0.0,
9948 cost_cache_write: 0.0,
9949 context_window: 131072,
9950 max_tokens: 32768,
9951 },
9952 ModelEntry {
9953 id: "qwen/qwen3-vl-32b-instruct",
9954 name: "Qwen: Qwen3 VL 32B Instruct",
9955 api: Api::OpenAiCompletions,
9956 provider: "openrouter",
9957 reasoning: false,
9958 input: &[InputModality::Text, InputModality::Image],
9959 cost_input: 0.10400000000000001,
9960 cost_output: 0.41600000000000004,
9961 cost_cache_read: 0.0,
9962 cost_cache_write: 0.0,
9963 context_window: 262144,
9964 max_tokens: 32768,
9965 },
9966 ModelEntry {
9967 id: "qwen/qwen3-vl-8b-thinking",
9968 name: "Qwen: Qwen3 VL 8B Thinking",
9969 api: Api::OpenAiCompletions,
9970 provider: "openrouter",
9971 reasoning: true,
9972 input: &[InputModality::Text, InputModality::Image],
9973 cost_input: 0.117,
9974 cost_output: 1.365,
9975 cost_cache_read: 0.0,
9976 cost_cache_write: 0.0,
9977 context_window: 256000,
9978 max_tokens: 32768,
9979 },
9980 ModelEntry {
9981 id: "qwen/qwen3.5-122b-a10b",
9982 name: "Qwen: Qwen3.5-122B-A10B",
9983 api: Api::OpenAiCompletions,
9984 provider: "openrouter",
9985 reasoning: true,
9986 input: &[InputModality::Text, InputModality::Image],
9987 cost_input: 0.26,
9988 cost_output: 2.08,
9989 cost_cache_read: 0.0,
9990 cost_cache_write: 0.0,
9991 context_window: 262144,
9992 max_tokens: 262144,
9993 },
9994 ModelEntry {
9995 id: "qwen/qwen3.5-27b",
9996 name: "Qwen: Qwen3.5-27B",
9997 api: Api::OpenAiCompletions,
9998 provider: "openrouter",
9999 reasoning: true,
10000 input: &[InputModality::Text, InputModality::Image],
10001 cost_input: 0.195,
10002 cost_output: 1.56,
10003 cost_cache_read: 0.0,
10004 cost_cache_write: 0.0,
10005 context_window: 262144,
10006 max_tokens: 65536,
10007 },
10008 ModelEntry {
10009 id: "qwen/qwen3.5-35b-a3b",
10010 name: "Qwen: Qwen3.5-35B-A3B",
10011 api: Api::OpenAiCompletions,
10012 provider: "openrouter",
10013 reasoning: true,
10014 input: &[InputModality::Text, InputModality::Image],
10015 cost_input: 0.13899999999999998,
10016 cost_output: 1.0,
10017 cost_cache_read: 0.0,
10018 cost_cache_write: 0.0,
10019 context_window: 262144,
10020 max_tokens: 4096,
10021 },
10022 ModelEntry {
10023 id: "qwen/qwen3.5-9b",
10024 name: "Qwen: Qwen3.5-9B",
10025 api: Api::OpenAiCompletions,
10026 provider: "openrouter",
10027 reasoning: true,
10028 input: &[InputModality::Text, InputModality::Image],
10029 cost_input: 0.04,
10030 cost_output: 0.15,
10031 cost_cache_read: 0.0,
10032 cost_cache_write: 0.0,
10033 context_window: 262144,
10034 max_tokens: 81920,
10035 },
10036 ModelEntry {
10037 id: "qwen/qwen3.5-flash-02-23",
10038 name: "Qwen: Qwen3.5-Flash",
10039 api: Api::OpenAiCompletions,
10040 provider: "openrouter",
10041 reasoning: true,
10042 input: &[InputModality::Text, InputModality::Image],
10043 cost_input: 0.065,
10044 cost_output: 0.26,
10045 cost_cache_read: 0.0,
10046 cost_cache_write: 0.0,
10047 context_window: 1000000,
10048 max_tokens: 65536,
10049 },
10050 ModelEntry {
10051 id: "qwen/qwen3.5-plus-02-15",
10052 name: "Qwen: Qwen3.5 Plus 2026-02-15",
10053 api: Api::OpenAiCompletions,
10054 provider: "openrouter",
10055 reasoning: true,
10056 input: &[InputModality::Text, InputModality::Image],
10057 cost_input: 0.26,
10058 cost_output: 1.56,
10059 cost_cache_read: 0.0,
10060 cost_cache_write: 0.0,
10061 context_window: 1000000,
10062 max_tokens: 65536,
10063 },
10064 ModelEntry {
10065 id: "qwen/qwen3.6-27b",
10066 name: "Qwen: Qwen3.6 27B",
10067 api: Api::OpenAiCompletions,
10068 provider: "openrouter",
10069 reasoning: true,
10070 input: &[InputModality::Text, InputModality::Image],
10071 cost_input: 0.29,
10072 cost_output: 3.1999999999999997,
10073 cost_cache_read: 0.0,
10074 cost_cache_write: 0.0,
10075 context_window: 262144,
10076 max_tokens: 262140,
10077 },
10078 ModelEntry {
10079 id: "qwen/qwen3.6-35b-a3b",
10080 name: "Qwen: Qwen3.6 35B A3B",
10081 api: Api::OpenAiCompletions,
10082 provider: "openrouter",
10083 reasoning: true,
10084 input: &[InputModality::Text, InputModality::Image],
10085 cost_input: 0.14,
10086 cost_output: 1.0,
10087 cost_cache_read: 0.0,
10088 cost_cache_write: 0.0,
10089 context_window: 262144,
10090 max_tokens: 262140,
10091 },
10092 ModelEntry {
10093 id: "qwen/qwen3.6-flash",
10094 name: "Qwen: Qwen3.6 Flash",
10095 api: Api::OpenAiCompletions,
10096 provider: "openrouter",
10097 reasoning: true,
10098 input: &[InputModality::Text, InputModality::Image],
10099 cost_input: 0.1875,
10100 cost_output: 1.125,
10101 cost_cache_read: 0.0,
10102 cost_cache_write: 0.234375,
10103 context_window: 1000000,
10104 max_tokens: 65536,
10105 },
10106 ModelEntry {
10107 id: "qwen/qwen3.6-max-preview",
10108 name: "Qwen: Qwen3.6 Max Preview",
10109 api: Api::OpenAiCompletions,
10110 provider: "openrouter",
10111 reasoning: true,
10112 input: &[InputModality::Text],
10113 cost_input: 1.04,
10114 cost_output: 6.24,
10115 cost_cache_read: 0.0,
10116 cost_cache_write: 1.3,
10117 context_window: 262144,
10118 max_tokens: 65536,
10119 },
10120 ModelEntry {
10121 id: "qwen/qwen3.6-plus",
10122 name: "Qwen: Qwen3.6 Plus",
10123 api: Api::OpenAiCompletions,
10124 provider: "openrouter",
10125 reasoning: true,
10126 input: &[InputModality::Text, InputModality::Image],
10127 cost_input: 0.325,
10128 cost_output: 1.95,
10129 cost_cache_read: 0.0,
10130 cost_cache_write: 0.40625,
10131 context_window: 1000000,
10132 max_tokens: 65536,
10133 },
10134 ModelEntry {
10135 id: "qwen/qwen3.7-max",
10136 name: "Qwen: Qwen3.7 Max",
10137 api: Api::OpenAiCompletions,
10138 provider: "openrouter",
10139 reasoning: true,
10140 input: &[InputModality::Text],
10141 cost_input: 1.25,
10142 cost_output: 3.75,
10143 cost_cache_read: 0.25,
10144 cost_cache_write: 1.5625,
10145 context_window: 1000000,
10146 max_tokens: 65536,
10147 },
10148 ModelEntry {
10149 id: "relace/relace-search",
10150 name: "Relace: Relace Search",
10151 api: Api::OpenAiCompletions,
10152 provider: "openrouter",
10153 reasoning: false,
10154 input: &[InputModality::Text],
10155 cost_input: 1.0,
10156 cost_output: 3.0,
10157 cost_cache_read: 0.0,
10158 cost_cache_write: 0.0,
10159 context_window: 256000,
10160 max_tokens: 128000,
10161 },
10162 ModelEntry {
10163 id: "sao10k/l3-euryale-70b",
10164 name: "Sao10k: Llama 3 Euryale 70B v2.1",
10165 api: Api::OpenAiCompletions,
10166 provider: "openrouter",
10167 reasoning: false,
10168 input: &[InputModality::Text],
10169 cost_input: 1.48,
10170 cost_output: 1.48,
10171 cost_cache_read: 0.0,
10172 cost_cache_write: 0.0,
10173 context_window: 8192,
10174 max_tokens: 8192,
10175 },
10176 ModelEntry {
10177 id: "sao10k/l3.1-euryale-70b",
10178 name: "Sao10K: Llama 3.1 Euryale 70B v2.2",
10179 api: Api::OpenAiCompletions,
10180 provider: "openrouter",
10181 reasoning: false,
10182 input: &[InputModality::Text],
10183 cost_input: 0.85,
10184 cost_output: 0.85,
10185 cost_cache_read: 0.0,
10186 cost_cache_write: 0.0,
10187 context_window: 131072,
10188 max_tokens: 16384,
10189 },
10190 ModelEntry {
10191 id: "stepfun/step-3.5-flash",
10192 name: "StepFun: Step 3.5 Flash",
10193 api: Api::OpenAiCompletions,
10194 provider: "openrouter",
10195 reasoning: true,
10196 input: &[InputModality::Text],
10197 cost_input: 0.09,
10198 cost_output: 0.3,
10199 cost_cache_read: 0.02,
10200 cost_cache_write: 0.0,
10201 context_window: 262144,
10202 max_tokens: 16384,
10203 },
10204 ModelEntry {
10205 id: "tencent/hy3-preview",
10206 name: "Tencent: Hy3 preview",
10207 api: Api::OpenAiCompletions,
10208 provider: "openrouter",
10209 reasoning: true,
10210 input: &[InputModality::Text],
10211 cost_input: 0.063,
10212 cost_output: 0.21,
10213 cost_cache_read: 0.020999999999999998,
10214 cost_cache_write: 0.0,
10215 context_window: 262144,
10216 max_tokens: 4096,
10217 },
10218 ModelEntry {
10219 id: "thedrummer/rocinante-12b",
10220 name: "TheDrummer: Rocinante 12B",
10221 api: Api::OpenAiCompletions,
10222 provider: "openrouter",
10223 reasoning: false,
10224 input: &[InputModality::Text],
10225 cost_input: 0.16999999999999998,
10226 cost_output: 0.43,
10227 cost_cache_read: 0.0,
10228 cost_cache_write: 0.0,
10229 context_window: 32768,
10230 max_tokens: 32768,
10231 },
10232 ModelEntry {
10233 id: "thedrummer/unslopnemo-12b",
10234 name: "TheDrummer: UnslopNemo 12B",
10235 api: Api::OpenAiCompletions,
10236 provider: "openrouter",
10237 reasoning: false,
10238 input: &[InputModality::Text],
10239 cost_input: 0.39999999999999997,
10240 cost_output: 0.39999999999999997,
10241 cost_cache_read: 0.0,
10242 cost_cache_write: 0.0,
10243 context_window: 32768,
10244 max_tokens: 32768,
10245 },
10246 ModelEntry {
10247 id: "x-ai/grok-4.20",
10248 name: "xAI: Grok 4.20",
10249 api: Api::OpenAiCompletions,
10250 provider: "openrouter",
10251 reasoning: true,
10252 input: &[InputModality::Text, InputModality::Image],
10253 cost_input: 1.25,
10254 cost_output: 2.5,
10255 cost_cache_read: 0.19999999999999998,
10256 cost_cache_write: 0.0,
10257 context_window: 2000000,
10258 max_tokens: 4096,
10259 },
10260 ModelEntry {
10261 id: "x-ai/grok-build-0.1",
10262 name: "xAI: Grok Build 0.1",
10263 api: Api::OpenAiCompletions,
10264 provider: "openrouter",
10265 reasoning: true,
10266 input: &[InputModality::Text, InputModality::Image],
10267 cost_input: 1.0,
10268 cost_output: 2.0,
10269 cost_cache_read: 0.19999999999999998,
10270 cost_cache_write: 0.0,
10271 context_window: 256000,
10272 max_tokens: 4096,
10273 },
10274 ModelEntry {
10275 id: "xiaomi/mimo-v2-omni",
10276 name: "Xiaomi: MiMo-V2-Omni",
10277 api: Api::OpenAiCompletions,
10278 provider: "openrouter",
10279 reasoning: true,
10280 input: &[InputModality::Text, InputModality::Image],
10281 cost_input: 0.39999999999999997,
10282 cost_output: 2.0,
10283 cost_cache_read: 0.08,
10284 cost_cache_write: 0.0,
10285 context_window: 262144,
10286 max_tokens: 65536,
10287 },
10288 ModelEntry {
10289 id: "xiaomi/mimo-v2-pro",
10290 name: "Xiaomi: MiMo-V2-Pro",
10291 api: Api::OpenAiCompletions,
10292 provider: "openrouter",
10293 reasoning: true,
10294 input: &[InputModality::Text],
10295 cost_input: 1.0,
10296 cost_output: 3.0,
10297 cost_cache_read: 0.19999999999999998,
10298 cost_cache_write: 0.0,
10299 context_window: 1048576,
10300 max_tokens: 131072,
10301 },
10302 ModelEntry {
10303 id: "xiaomi/mimo-v2.5-pro",
10304 name: "Xiaomi: MiMo-V2.5-Pro",
10305 api: Api::OpenAiCompletions,
10306 provider: "openrouter",
10307 reasoning: true,
10308 input: &[InputModality::Text],
10309 cost_input: 0.435,
10310 cost_output: 0.87,
10311 cost_cache_read: 0.0036,
10312 cost_cache_write: 0.0,
10313 context_window: 1048576,
10314 max_tokens: 131072,
10315 },
10316 ModelEntry {
10317 id: "z-ai/glm-4-32b",
10318 name: "Z.ai: GLM 4 32B ",
10319 api: Api::OpenAiCompletions,
10320 provider: "openrouter",
10321 reasoning: false,
10322 input: &[InputModality::Text],
10323 cost_input: 0.09999999999999999,
10324 cost_output: 0.09999999999999999,
10325 cost_cache_read: 0.0,
10326 cost_cache_write: 0.0,
10327 context_window: 128000,
10328 max_tokens: 4096,
10329 },
10330 ModelEntry {
10331 id: "z-ai/glm-4.5",
10332 name: "Z.ai: GLM 4.5",
10333 api: Api::OpenAiCompletions,
10334 provider: "openrouter",
10335 reasoning: true,
10336 input: &[InputModality::Text],
10337 cost_input: 0.6,
10338 cost_output: 2.2,
10339 cost_cache_read: 0.11,
10340 cost_cache_write: 0.0,
10341 context_window: 131072,
10342 max_tokens: 98304,
10343 },
10344 ModelEntry {
10345 id: "z-ai/glm-4.5-air:free",
10346 name: "Z.ai: GLM 4.5 Air (free)",
10347 api: Api::OpenAiCompletions,
10348 provider: "openrouter",
10349 reasoning: true,
10350 input: &[InputModality::Text],
10351 cost_input: 0.0,
10352 cost_output: 0.0,
10353 cost_cache_read: 0.0,
10354 cost_cache_write: 0.0,
10355 context_window: 131072,
10356 max_tokens: 96000,
10357 },
10358 ModelEntry {
10359 id: "z-ai/glm-4.5v",
10360 name: "Z.ai: GLM 4.5V",
10361 api: Api::OpenAiCompletions,
10362 provider: "openrouter",
10363 reasoning: true,
10364 input: &[InputModality::Text, InputModality::Image],
10365 cost_input: 0.6,
10366 cost_output: 1.7999999999999998,
10367 cost_cache_read: 0.11,
10368 cost_cache_write: 0.0,
10369 context_window: 65536,
10370 max_tokens: 16384,
10371 },
10372 ModelEntry {
10373 id: "z-ai/glm-4.6",
10374 name: "Z.ai: GLM 4.6",
10375 api: Api::OpenAiCompletions,
10376 provider: "openrouter",
10377 reasoning: true,
10378 input: &[InputModality::Text],
10379 cost_input: 0.43,
10380 cost_output: 1.74,
10381 cost_cache_read: 0.08,
10382 cost_cache_write: 0.0,
10383 context_window: 202752,
10384 max_tokens: 131072,
10385 },
10386 ModelEntry {
10387 id: "z-ai/glm-4.6v",
10388 name: "Z.ai: GLM 4.6V",
10389 api: Api::OpenAiCompletions,
10390 provider: "openrouter",
10391 reasoning: true,
10392 input: &[InputModality::Text, InputModality::Image],
10393 cost_input: 0.3,
10394 cost_output: 0.8999999999999999,
10395 cost_cache_read: 0.049999999999999996,
10396 cost_cache_write: 0.0,
10397 context_window: 131072,
10398 max_tokens: 24000,
10399 },
10400 ModelEntry {
10401 id: "z-ai/glm-4.7-flash",
10402 name: "Z.ai: GLM 4.7 Flash",
10403 api: Api::OpenAiCompletions,
10404 provider: "openrouter",
10405 reasoning: true,
10406 input: &[InputModality::Text],
10407 cost_input: 0.06,
10408 cost_output: 0.39999999999999997,
10409 cost_cache_read: 0.01,
10410 cost_cache_write: 0.0,
10411 context_window: 202752,
10412 max_tokens: 16384,
10413 },
10414 ModelEntry {
10415 id: "z-ai/glm-5",
10416 name: "Z.ai: GLM 5",
10417 api: Api::OpenAiCompletions,
10418 provider: "openrouter",
10419 reasoning: true,
10420 input: &[InputModality::Text],
10421 cost_input: 0.6,
10422 cost_output: 1.9,
10423 cost_cache_read: 0.119,
10424 cost_cache_write: 0.0,
10425 context_window: 202752,
10426 max_tokens: 4096,
10427 },
10428 ModelEntry {
10429 id: "z-ai/glm-5-turbo",
10430 name: "Z.ai: GLM 5 Turbo",
10431 api: Api::OpenAiCompletions,
10432 provider: "openrouter",
10433 reasoning: true,
10434 input: &[InputModality::Text],
10435 cost_input: 1.2,
10436 cost_output: 4.0,
10437 cost_cache_read: 0.24,
10438 cost_cache_write: 0.0,
10439 context_window: 202752,
10440 max_tokens: 131072,
10441 },
10442 ModelEntry {
10443 id: "z-ai/glm-5v-turbo",
10444 name: "Z.ai: GLM 5V Turbo",
10445 api: Api::OpenAiCompletions,
10446 provider: "openrouter",
10447 reasoning: true,
10448 input: &[InputModality::Text, InputModality::Image],
10449 cost_input: 1.2,
10450 cost_output: 4.0,
10451 cost_cache_read: 0.24,
10452 cost_cache_write: 0.0,
10453 context_window: 202752,
10454 max_tokens: 131072,
10455 },
10456 ModelEntry {
10457 id: "~anthropic/claude-haiku-latest",
10458 name: "Anthropic Claude Haiku Latest",
10459 api: Api::OpenAiCompletions,
10460 provider: "openrouter",
10461 reasoning: true,
10462 input: &[InputModality::Text, InputModality::Image],
10463 cost_input: 1.0,
10464 cost_output: 5.0,
10465 cost_cache_read: 0.09999999999999999,
10466 cost_cache_write: 1.25,
10467 context_window: 200000,
10468 max_tokens: 64000,
10469 },
10470 ModelEntry {
10471 id: "~anthropic/claude-opus-latest",
10472 name: "Anthropic: Claude Opus Latest",
10473 api: Api::OpenAiCompletions,
10474 provider: "openrouter",
10475 reasoning: true,
10476 input: &[InputModality::Text, InputModality::Image],
10477 cost_input: 5.0,
10478 cost_output: 25.0,
10479 cost_cache_read: 0.5,
10480 cost_cache_write: 6.25,
10481 context_window: 1000000,
10482 max_tokens: 128000,
10483 },
10484 ModelEntry {
10485 id: "~anthropic/claude-sonnet-latest",
10486 name: "Anthropic Claude Sonnet Latest",
10487 api: Api::OpenAiCompletions,
10488 provider: "openrouter",
10489 reasoning: true,
10490 input: &[InputModality::Text, InputModality::Image],
10491 cost_input: 3.0,
10492 cost_output: 15.0,
10493 cost_cache_read: 0.3,
10494 cost_cache_write: 3.75,
10495 context_window: 1000000,
10496 max_tokens: 128000,
10497 },
10498 ModelEntry {
10499 id: "~google/gemini-pro-latest",
10500 name: "Google Gemini Pro Latest",
10501 api: Api::OpenAiCompletions,
10502 provider: "openrouter",
10503 reasoning: true,
10504 input: &[InputModality::Text, InputModality::Image],
10505 cost_input: 2.0,
10506 cost_output: 12.0,
10507 cost_cache_read: 0.19999999999999998,
10508 cost_cache_write: 0.375,
10509 context_window: 1048576,
10510 max_tokens: 65536,
10511 },
10512 ModelEntry {
10513 id: "~moonshotai/kimi-latest",
10514 name: "MoonshotAI Kimi Latest",
10515 api: Api::OpenAiCompletions,
10516 provider: "openrouter",
10517 reasoning: true,
10518 input: &[InputModality::Text, InputModality::Image],
10519 cost_input: 0.73,
10520 cost_output: 3.49,
10521 cost_cache_read: 0.25,
10522 cost_cache_write: 0.0,
10523 context_window: 262144,
10524 max_tokens: 262142,
10525 },
10526 ModelEntry {
10527 id: "~openai/gpt-latest",
10528 name: "OpenAI GPT Latest",
10529 api: Api::OpenAiCompletions,
10530 provider: "openrouter",
10531 reasoning: true,
10532 input: &[InputModality::Text, InputModality::Image],
10533 cost_input: 5.0,
10534 cost_output: 30.0,
10535 cost_cache_read: 0.5,
10536 cost_cache_write: 0.0,
10537 context_window: 1050000,
10538 max_tokens: 128000,
10539 },
10540 ModelEntry {
10541 id: "~openai/gpt-mini-latest",
10542 name: "OpenAI GPT Mini Latest",
10543 api: Api::OpenAiCompletions,
10544 provider: "openrouter",
10545 reasoning: true,
10546 input: &[InputModality::Text, InputModality::Image],
10547 cost_input: 0.75,
10548 cost_output: 4.5,
10549 cost_cache_read: 0.075,
10550 cost_cache_write: 0.0,
10551 context_window: 400000,
10552 max_tokens: 128000,
10553 },
10554];
10555
10556static VERCEL_AI_GATEWAY_MODELS: &[ModelEntry] = &[
10558 ModelEntry {
10559 id: "alibaba/qwen-3-14b",
10560 name: "Qwen3-14B",
10561 api: Api::AnthropicMessages,
10562 provider: "vercel-ai-gateway",
10563 reasoning: true,
10564 input: &[InputModality::Text],
10565 cost_input: 0.0,
10566 cost_output: 0.0,
10567 cost_cache_read: 0.0,
10568 cost_cache_write: 0.0,
10569 context_window: 40960,
10570 max_tokens: 16384,
10571 },
10572 ModelEntry {
10573 id: "alibaba/qwen3-235b-a22b-thinking",
10574 name: "Qwen3 VL 235B A22B Thinking",
10575 api: Api::AnthropicMessages,
10576 provider: "vercel-ai-gateway",
10577 reasoning: true,
10578 input: &[InputModality::Text, InputModality::Image],
10579 cost_input: 0.0,
10580 cost_output: 0.0,
10581 cost_cache_read: 0.0,
10582 cost_cache_write: 0.0,
10583 context_window: 131072,
10584 max_tokens: 32768,
10585 },
10586 ModelEntry {
10587 id: "alibaba/qwen3-max",
10588 name: "Qwen3 Max",
10589 api: Api::AnthropicMessages,
10590 provider: "vercel-ai-gateway",
10591 reasoning: false,
10592 input: &[InputModality::Text],
10593 cost_input: 0.0,
10594 cost_output: 0.0,
10595 cost_cache_read: 0.24,
10596 cost_cache_write: 0.0,
10597 context_window: 262144,
10598 max_tokens: 32768,
10599 },
10600 ModelEntry {
10601 id: "alibaba/qwen3.6-27b",
10602 name: "Qwen 3.6 27B",
10603 api: Api::AnthropicMessages,
10604 provider: "vercel-ai-gateway",
10605 reasoning: true,
10606 input: &[InputModality::Text, InputModality::Image],
10607 cost_input: 0.0,
10608 cost_output: 0.0,
10609 cost_cache_read: 0.0,
10610 cost_cache_write: 0.0,
10611 context_window: 256000,
10612 max_tokens: 256000,
10613 },
10614 ModelEntry {
10615 id: "anthropic/claude-haiku-4.5",
10616 name: "Claude Haiku 4.5",
10617 api: Api::AnthropicMessages,
10618 provider: "vercel-ai-gateway",
10619 reasoning: true,
10620 input: &[InputModality::Text, InputModality::Image],
10621 cost_input: 0.0,
10622 cost_output: 0.0,
10623 cost_cache_read: 0.1,
10624 cost_cache_write: 1.25,
10625 context_window: 200000,
10626 max_tokens: 64000,
10627 },
10628 ModelEntry {
10629 id: "anthropic/claude-sonnet-4",
10630 name: "Claude Sonnet 4",
10631 api: Api::AnthropicMessages,
10632 provider: "vercel-ai-gateway",
10633 reasoning: true,
10634 input: &[InputModality::Text, InputModality::Image],
10635 cost_input: 0.0,
10636 cost_output: 0.0,
10637 cost_cache_read: 0.3,
10638 cost_cache_write: 3.75,
10639 context_window: 1000000,
10640 max_tokens: 64000,
10641 },
10642 ModelEntry {
10643 id: "bytedance/seed-1.6",
10644 name: "Seed 1.6",
10645 api: Api::AnthropicMessages,
10646 provider: "vercel-ai-gateway",
10647 reasoning: true,
10648 input: &[InputModality::Text],
10649 cost_input: 0.0,
10650 cost_output: 0.0,
10651 cost_cache_read: 0.05,
10652 cost_cache_write: 0.0,
10653 context_window: 256000,
10654 max_tokens: 32000,
10655 },
10656 ModelEntry {
10657 id: "deepseek/deepseek-v3.2",
10658 name: "DeepSeek V3.2",
10659 api: Api::AnthropicMessages,
10660 provider: "vercel-ai-gateway",
10661 reasoning: false,
10662 input: &[InputModality::Text],
10663 cost_input: 0.0,
10664 cost_output: 0.0,
10665 cost_cache_read: 0.028,
10666 cost_cache_write: 0.0,
10667 context_window: 128000,
10668 max_tokens: 8000,
10669 },
10670 ModelEntry {
10671 id: "google/gemini-2.0-flash-lite",
10672 name: "Gemini 2.0 Flash Lite",
10673 api: Api::AnthropicMessages,
10674 provider: "vercel-ai-gateway",
10675 reasoning: false,
10676 input: &[InputModality::Text, InputModality::Image],
10677 cost_input: 0.0,
10678 cost_output: 0.0,
10679 cost_cache_read: 0.02,
10680 cost_cache_write: 0.0,
10681 context_window: 1048576,
10682 max_tokens: 8192,
10683 },
10684 ModelEntry {
10685 id: "google/gemini-3-pro-preview",
10686 name: "Gemini 3 Pro Preview",
10687 api: Api::AnthropicMessages,
10688 provider: "vercel-ai-gateway",
10689 reasoning: true,
10690 input: &[InputModality::Text, InputModality::Image],
10691 cost_input: 0.0,
10692 cost_output: 0.0,
10693 cost_cache_read: 0.2,
10694 cost_cache_write: 0.0,
10695 context_window: 1000000,
10696 max_tokens: 64000,
10697 },
10698 ModelEntry {
10699 id: "inception/mercury-coder-small",
10700 name: "Mercury Coder Small Beta",
10701 api: Api::AnthropicMessages,
10702 provider: "vercel-ai-gateway",
10703 reasoning: false,
10704 input: &[InputModality::Text],
10705 cost_input: 0.0,
10706 cost_output: 0.0,
10707 cost_cache_read: 0.0,
10708 cost_cache_write: 0.0,
10709 context_window: 32000,
10710 max_tokens: 16384,
10711 },
10712 ModelEntry {
10713 id: "meta/llama-3.2-11b",
10714 name: "Llama 3.2 11B Vision Instruct",
10715 api: Api::AnthropicMessages,
10716 provider: "vercel-ai-gateway",
10717 reasoning: false,
10718 input: &[InputModality::Text, InputModality::Image],
10719 cost_input: 0.0,
10720 cost_output: 0.0,
10721 cost_cache_read: 0.0,
10722 cost_cache_write: 0.0,
10723 context_window: 128000,
10724 max_tokens: 8192,
10725 },
10726 ModelEntry {
10727 id: "minimax/minimax-m2.1",
10728 name: "MiniMax M2.1",
10729 api: Api::AnthropicMessages,
10730 provider: "vercel-ai-gateway",
10731 reasoning: true,
10732 input: &[InputModality::Text],
10733 cost_input: 0.0,
10734 cost_output: 0.0,
10735 cost_cache_read: 0.03,
10736 cost_cache_write: 0.375,
10737 context_window: 204800,
10738 max_tokens: 131072,
10739 },
10740 ModelEntry {
10741 id: "minimax/minimax-m2.7-highspeed",
10742 name: "MiniMax M2.7 High Speed",
10743 api: Api::AnthropicMessages,
10744 provider: "vercel-ai-gateway",
10745 reasoning: true,
10746 input: &[InputModality::Text, InputModality::Image],
10747 cost_input: 0.0,
10748 cost_output: 0.0,
10749 cost_cache_read: 0.06,
10750 cost_cache_write: 0.375,
10751 context_window: 204800,
10752 max_tokens: 131100,
10753 },
10754 ModelEntry {
10755 id: "mistral/ministral-8b",
10756 name: "Ministral 8B",
10757 api: Api::AnthropicMessages,
10758 provider: "vercel-ai-gateway",
10759 reasoning: false,
10760 input: &[InputModality::Text],
10761 cost_input: 0.0,
10762 cost_output: 0.0,
10763 cost_cache_read: 0.0,
10764 cost_cache_write: 0.0,
10765 context_window: 128000,
10766 max_tokens: 4000,
10767 },
10768 ModelEntry {
10769 id: "moonshotai/kimi-k2",
10770 name: "Kimi K2 Instruct",
10771 api: Api::AnthropicMessages,
10772 provider: "vercel-ai-gateway",
10773 reasoning: false,
10774 input: &[InputModality::Text],
10775 cost_input: 0.0,
10776 cost_output: 0.0,
10777 cost_cache_read: 0.0,
10778 cost_cache_write: 0.0,
10779 context_window: 131072,
10780 max_tokens: 131072,
10781 },
10782 ModelEntry {
10783 id: "moonshotai/kimi-k2.5",
10784 name: "Kimi K2.5",
10785 api: Api::AnthropicMessages,
10786 provider: "vercel-ai-gateway",
10787 reasoning: true,
10788 input: &[InputModality::Text, InputModality::Image],
10789 cost_input: 0.0,
10790 cost_output: 0.0,
10791 cost_cache_read: 0.1,
10792 cost_cache_write: 0.0,
10793 context_window: 262114,
10794 max_tokens: 262114,
10795 },
10796 ModelEntry {
10797 id: "openai/gpt-4.1-mini",
10798 name: "GPT-4.1 mini",
10799 api: Api::AnthropicMessages,
10800 provider: "vercel-ai-gateway",
10801 reasoning: false,
10802 input: &[InputModality::Text, InputModality::Image],
10803 cost_input: 0.0,
10804 cost_output: 0.0,
10805 cost_cache_read: 0.1,
10806 cost_cache_write: 0.0,
10807 context_window: 1047576,
10808 max_tokens: 32768,
10809 },
10810 ModelEntry {
10811 id: "openai/gpt-5-chat",
10812 name: "GPT 5 Chat",
10813 api: Api::AnthropicMessages,
10814 provider: "vercel-ai-gateway",
10815 reasoning: true,
10816 input: &[InputModality::Text, InputModality::Image],
10817 cost_input: 0.0,
10818 cost_output: 0.0,
10819 cost_cache_read: 0.125,
10820 cost_cache_write: 0.0,
10821 context_window: 128000,
10822 max_tokens: 16384,
10823 },
10824 ModelEntry {
10825 id: "openai/gpt-5.1-codex-max",
10826 name: "GPT 5.1 Codex Max",
10827 api: Api::AnthropicMessages,
10828 provider: "vercel-ai-gateway",
10829 reasoning: true,
10830 input: &[InputModality::Text, InputModality::Image],
10831 cost_input: 0.0,
10832 cost_output: 0.0,
10833 cost_cache_read: 0.125,
10834 cost_cache_write: 0.0,
10835 context_window: 400000,
10836 max_tokens: 128000,
10837 },
10838 ModelEntry {
10839 id: "openai/gpt-5.2-chat",
10840 name: "GPT 5.2 Chat",
10841 api: Api::AnthropicMessages,
10842 provider: "vercel-ai-gateway",
10843 reasoning: true,
10844 input: &[InputModality::Text, InputModality::Image],
10845 cost_input: 0.0,
10846 cost_output: 0.0,
10847 cost_cache_read: 0.175,
10848 cost_cache_write: 0.0,
10849 context_window: 128000,
10850 max_tokens: 16384,
10851 },
10852 ModelEntry {
10853 id: "openai/gpt-5.4-mini",
10854 name: "GPT 5.4 Mini",
10855 api: Api::AnthropicMessages,
10856 provider: "vercel-ai-gateway",
10857 reasoning: true,
10858 input: &[InputModality::Text, InputModality::Image],
10859 cost_input: 0.0,
10860 cost_output: 0.0,
10861 cost_cache_read: 0.075,
10862 cost_cache_write: 0.0,
10863 context_window: 400000,
10864 max_tokens: 128000,
10865 },
10866 ModelEntry {
10867 id: "openai/gpt-oss-20b",
10868 name: "GPT OSS 120B",
10869 api: Api::AnthropicMessages,
10870 provider: "vercel-ai-gateway",
10871 reasoning: true,
10872 input: &[InputModality::Text],
10873 cost_input: 0.0,
10874 cost_output: 0.0,
10875 cost_cache_read: 0.0,
10876 cost_cache_write: 0.0,
10877 context_window: 131072,
10878 max_tokens: 8192,
10879 },
10880 ModelEntry {
10881 id: "openai/o3-mini",
10882 name: "o3-mini",
10883 api: Api::AnthropicMessages,
10884 provider: "vercel-ai-gateway",
10885 reasoning: true,
10886 input: &[InputModality::Text],
10887 cost_input: 0.0,
10888 cost_output: 0.0,
10889 cost_cache_read: 0.55,
10890 cost_cache_write: 0.0,
10891 context_window: 200000,
10892 max_tokens: 100000,
10893 },
10894 ModelEntry {
10895 id: "xai/grok-3-fast",
10896 name: "Grok 3 Fast Beta",
10897 api: Api::AnthropicMessages,
10898 provider: "vercel-ai-gateway",
10899 reasoning: false,
10900 input: &[InputModality::Text],
10901 cost_input: 0.0,
10902 cost_output: 0.0,
10903 cost_cache_read: 1.25,
10904 cost_cache_write: 0.0,
10905 context_window: 131072,
10906 max_tokens: 131072,
10907 },
10908 ModelEntry {
10909 id: "xai/grok-4-fast-reasoning",
10910 name: "Grok 4 Fast Reasoning",
10911 api: Api::AnthropicMessages,
10912 provider: "vercel-ai-gateway",
10913 reasoning: true,
10914 input: &[InputModality::Text, InputModality::Image],
10915 cost_input: 0.0,
10916 cost_output: 0.0,
10917 cost_cache_read: 0.05,
10918 cost_cache_write: 0.0,
10919 context_window: 2000000,
10920 max_tokens: 256000,
10921 },
10922 ModelEntry {
10923 id: "xai/grok-4.20-non-reasoning-beta",
10924 name: "Grok 4.20 Beta Non-Reasoning",
10925 api: Api::AnthropicMessages,
10926 provider: "vercel-ai-gateway",
10927 reasoning: false,
10928 input: &[InputModality::Text, InputModality::Image],
10929 cost_input: 0.0,
10930 cost_output: 0.0,
10931 cost_cache_read: 0.2,
10932 cost_cache_write: 0.0,
10933 context_window: 2000000,
10934 max_tokens: 2000000,
10935 },
10936 ModelEntry {
10937 id: "xiaomi/mimo-v2-flash",
10938 name: "MiMo V2 Flash",
10939 api: Api::AnthropicMessages,
10940 provider: "vercel-ai-gateway",
10941 reasoning: true,
10942 input: &[InputModality::Text],
10943 cost_input: 0.0,
10944 cost_output: 0.0,
10945 cost_cache_read: 0.01,
10946 cost_cache_write: 0.0,
10947 context_window: 262144,
10948 max_tokens: 32000,
10949 },
10950 ModelEntry {
10951 id: "zai/glm-4.5v",
10952 name: "GLM 4.5V",
10953 api: Api::AnthropicMessages,
10954 provider: "vercel-ai-gateway",
10955 reasoning: false,
10956 input: &[InputModality::Text, InputModality::Image],
10957 cost_input: 0.0,
10958 cost_output: 0.0,
10959 cost_cache_read: 0.11,
10960 cost_cache_write: 0.0,
10961 context_window: 66000,
10962 max_tokens: 16000,
10963 },
10964 ModelEntry {
10965 id: "zai/glm-4.7-flash",
10966 name: "GLM 4.7 Flash",
10967 api: Api::AnthropicMessages,
10968 provider: "vercel-ai-gateway",
10969 reasoning: true,
10970 input: &[InputModality::Text],
10971 cost_input: 0.0,
10972 cost_output: 0.0,
10973 cost_cache_read: 0.0,
10974 cost_cache_write: 0.0,
10975 context_window: 200000,
10976 max_tokens: 131000,
10977 },
10978 ModelEntry {
10979 id: "alibaba/qwen-3-235b",
10980 name: "Qwen3 235B A22b Instruct 2507",
10981 api: Api::AnthropicMessages,
10982 provider: "vercel-ai-gateway",
10983 reasoning: false,
10984 input: &[InputModality::Text],
10985 cost_input: 0.6,
10986 cost_output: 1.2,
10987 cost_cache_read: 0.6,
10988 cost_cache_write: 0.0,
10989 context_window: 131000,
10990 max_tokens: 40000,
10991 },
10992 ModelEntry {
10993 id: "alibaba/qwen-3-30b",
10994 name: "Qwen3-30B-A3B",
10995 api: Api::AnthropicMessages,
10996 provider: "vercel-ai-gateway",
10997 reasoning: true,
10998 input: &[InputModality::Text],
10999 cost_input: 0.08,
11000 cost_output: 0.29,
11001 cost_cache_read: 0.0,
11002 cost_cache_write: 0.0,
11003 context_window: 40960,
11004 max_tokens: 16384,
11005 },
11006 ModelEntry {
11007 id: "alibaba/qwen-3-32b",
11008 name: "Qwen 3 32B",
11009 api: Api::AnthropicMessages,
11010 provider: "vercel-ai-gateway",
11011 reasoning: true,
11012 input: &[InputModality::Text],
11013 cost_input: 0.16,
11014 cost_output: 0.64,
11015 cost_cache_read: 0.0,
11016 cost_cache_write: 0.0,
11017 context_window: 128000,
11018 max_tokens: 8192,
11019 },
11020 ModelEntry {
11021 id: "alibaba/qwen-3.6-max-preview",
11022 name: "Qwen 3.6 Max Preview",
11023 api: Api::AnthropicMessages,
11024 provider: "vercel-ai-gateway",
11025 reasoning: true,
11026 input: &[InputModality::Text, InputModality::Image],
11027 cost_input: 1.3,
11028 cost_output: 7.8,
11029 cost_cache_read: 0.26,
11030 cost_cache_write: 1.625,
11031 context_window: 240000,
11032 max_tokens: 64000,
11033 },
11034 ModelEntry {
11035 id: "alibaba/qwen3-coder",
11036 name: "Qwen3 Coder 480B A35B Instruct",
11037 api: Api::AnthropicMessages,
11038 provider: "vercel-ai-gateway",
11039 reasoning: false,
11040 input: &[InputModality::Text],
11041 cost_input: 1.5,
11042 cost_output: 7.5,
11043 cost_cache_read: 0.3,
11044 cost_cache_write: 0.0,
11045 context_window: 262144,
11046 max_tokens: 65536,
11047 },
11048 ModelEntry {
11049 id: "alibaba/qwen3-coder-30b-a3b",
11050 name: "Qwen 3 Coder 30B A3B Instruct",
11051 api: Api::AnthropicMessages,
11052 provider: "vercel-ai-gateway",
11053 reasoning: true,
11054 input: &[InputModality::Text],
11055 cost_input: 0.15,
11056 cost_output: 0.6,
11057 cost_cache_read: 0.0,
11058 cost_cache_write: 0.0,
11059 context_window: 262144,
11060 max_tokens: 8192,
11061 },
11062 ModelEntry {
11063 id: "alibaba/qwen3-coder-next",
11064 name: "Qwen3 Coder Next",
11065 api: Api::AnthropicMessages,
11066 provider: "vercel-ai-gateway",
11067 reasoning: false,
11068 input: &[InputModality::Text],
11069 cost_input: 0.5,
11070 cost_output: 1.2,
11071 cost_cache_read: 0.0,
11072 cost_cache_write: 0.0,
11073 context_window: 256000,
11074 max_tokens: 256000,
11075 },
11076 ModelEntry {
11077 id: "alibaba/qwen3-coder-plus",
11078 name: "Qwen3 Coder Plus",
11079 api: Api::AnthropicMessages,
11080 provider: "vercel-ai-gateway",
11081 reasoning: false,
11082 input: &[InputModality::Text],
11083 cost_input: 1.0,
11084 cost_output: 5.0,
11085 cost_cache_read: 0.19999999999999998,
11086 cost_cache_write: 0.0,
11087 context_window: 1000000,
11088 max_tokens: 65536,
11089 },
11090 ModelEntry {
11091 id: "alibaba/qwen3-max-preview",
11092 name: "Qwen3 Max Preview",
11093 api: Api::AnthropicMessages,
11094 provider: "vercel-ai-gateway",
11095 reasoning: false,
11096 input: &[InputModality::Text],
11097 cost_input: 1.2,
11098 cost_output: 6.0,
11099 cost_cache_read: 0.24,
11100 cost_cache_write: 0.0,
11101 context_window: 262144,
11102 max_tokens: 32768,
11103 },
11104 ModelEntry {
11105 id: "alibaba/qwen3-max-thinking",
11106 name: "Qwen 3 Max Thinking",
11107 api: Api::AnthropicMessages,
11108 provider: "vercel-ai-gateway",
11109 reasoning: true,
11110 input: &[InputModality::Text],
11111 cost_input: 1.2,
11112 cost_output: 6.0,
11113 cost_cache_read: 0.24,
11114 cost_cache_write: 0.0,
11115 context_window: 256000,
11116 max_tokens: 65536,
11117 },
11118 ModelEntry {
11119 id: "alibaba/qwen3-vl-thinking",
11120 name: "Qwen3 VL 235B A22B Thinking",
11121 api: Api::AnthropicMessages,
11122 provider: "vercel-ai-gateway",
11123 reasoning: true,
11124 input: &[InputModality::Text, InputModality::Image],
11125 cost_input: 0.39999999999999997,
11126 cost_output: 4.0,
11127 cost_cache_read: 0.0,
11128 cost_cache_write: 0.0,
11129 context_window: 131072,
11130 max_tokens: 32768,
11131 },
11132 ModelEntry {
11133 id: "alibaba/qwen3.5-flash",
11134 name: "Qwen 3.5 Flash",
11135 api: Api::AnthropicMessages,
11136 provider: "vercel-ai-gateway",
11137 reasoning: true,
11138 input: &[InputModality::Text, InputModality::Image],
11139 cost_input: 0.09999999999999999,
11140 cost_output: 0.39999999999999997,
11141 cost_cache_read: 0.001,
11142 cost_cache_write: 0.125,
11143 context_window: 1000000,
11144 max_tokens: 64000,
11145 },
11146 ModelEntry {
11147 id: "alibaba/qwen3.5-plus",
11148 name: "Qwen 3.5 Plus",
11149 api: Api::AnthropicMessages,
11150 provider: "vercel-ai-gateway",
11151 reasoning: true,
11152 input: &[InputModality::Text, InputModality::Image],
11153 cost_input: 0.39999999999999997,
11154 cost_output: 2.4,
11155 cost_cache_read: 0.04,
11156 cost_cache_write: 0.5,
11157 context_window: 1000000,
11158 max_tokens: 64000,
11159 },
11160 ModelEntry {
11161 id: "alibaba/qwen3.6-plus",
11162 name: "Qwen 3.6 Plus",
11163 api: Api::AnthropicMessages,
11164 provider: "vercel-ai-gateway",
11165 reasoning: true,
11166 input: &[InputModality::Text, InputModality::Image],
11167 cost_input: 0.5,
11168 cost_output: 3.0,
11169 cost_cache_read: 0.09999999999999999,
11170 cost_cache_write: 0.625,
11171 context_window: 1000000,
11172 max_tokens: 64000,
11173 },
11174 ModelEntry {
11175 id: "alibaba/qwen3.7-max",
11176 name: "Qwen 3.7 Max",
11177 api: Api::AnthropicMessages,
11178 provider: "vercel-ai-gateway",
11179 reasoning: true,
11180 input: &[InputModality::Text, InputModality::Image],
11181 cost_input: 1.25,
11182 cost_output: 3.75,
11183 cost_cache_read: 0.25,
11184 cost_cache_write: 1.5625,
11185 context_window: 991000,
11186 max_tokens: 64000,
11187 },
11188 ModelEntry {
11189 id: "anthropic/claude-3-haiku",
11190 name: "Claude 3 Haiku",
11191 api: Api::AnthropicMessages,
11192 provider: "vercel-ai-gateway",
11193 reasoning: false,
11194 input: &[InputModality::Text, InputModality::Image],
11195 cost_input: 0.25,
11196 cost_output: 1.25,
11197 cost_cache_read: 0.03,
11198 cost_cache_write: 0.3,
11199 context_window: 200000,
11200 max_tokens: 4096,
11201 },
11202 ModelEntry {
11203 id: "anthropic/claude-opus-4.1",
11204 name: "Claude Opus 4.1",
11205 api: Api::AnthropicMessages,
11206 provider: "vercel-ai-gateway",
11207 reasoning: true,
11208 input: &[InputModality::Text, InputModality::Image],
11209 cost_input: 15.0,
11210 cost_output: 75.0,
11211 cost_cache_read: 1.5,
11212 cost_cache_write: 18.75,
11213 context_window: 200000,
11214 max_tokens: 32000,
11215 },
11216 ModelEntry {
11217 id: "anthropic/claude-opus-4.5",
11218 name: "Claude Opus 4.5",
11219 api: Api::AnthropicMessages,
11220 provider: "vercel-ai-gateway",
11221 reasoning: true,
11222 input: &[InputModality::Text, InputModality::Image],
11223 cost_input: 5.0,
11224 cost_output: 25.0,
11225 cost_cache_read: 0.5,
11226 cost_cache_write: 6.25,
11227 context_window: 200000,
11228 max_tokens: 64000,
11229 },
11230 ModelEntry {
11231 id: "anthropic/claude-opus-4.6",
11232 name: "Claude Opus 4.6",
11233 api: Api::AnthropicMessages,
11234 provider: "vercel-ai-gateway",
11235 reasoning: true,
11236 input: &[InputModality::Text, InputModality::Image],
11237 cost_input: 5.0,
11238 cost_output: 25.0,
11239 cost_cache_read: 0.5,
11240 cost_cache_write: 6.25,
11241 context_window: 1000000,
11242 max_tokens: 128000,
11243 },
11244 ModelEntry {
11245 id: "anthropic/claude-sonnet-4.5",
11246 name: "Claude Sonnet 4.5",
11247 api: Api::AnthropicMessages,
11248 provider: "vercel-ai-gateway",
11249 reasoning: true,
11250 input: &[InputModality::Text, InputModality::Image],
11251 cost_input: 3.0,
11252 cost_output: 15.0,
11253 cost_cache_read: 0.3,
11254 cost_cache_write: 3.75,
11255 context_window: 1000000,
11256 max_tokens: 64000,
11257 },
11258 ModelEntry {
11259 id: "anthropic/claude-sonnet-4.6",
11260 name: "Claude Sonnet 4.6",
11261 api: Api::AnthropicMessages,
11262 provider: "vercel-ai-gateway",
11263 reasoning: true,
11264 input: &[InputModality::Text, InputModality::Image],
11265 cost_input: 3.0,
11266 cost_output: 15.0,
11267 cost_cache_read: 0.3,
11268 cost_cache_write: 3.75,
11269 context_window: 1000000,
11270 max_tokens: 128000,
11271 },
11272 ModelEntry {
11273 id: "arcee-ai/trinity-large-thinking",
11274 name: "Trinity Large Thinking",
11275 api: Api::AnthropicMessages,
11276 provider: "vercel-ai-gateway",
11277 reasoning: true,
11278 input: &[InputModality::Text],
11279 cost_input: 0.25,
11280 cost_output: 0.8999999999999999,
11281 cost_cache_read: 0.0,
11282 cost_cache_write: 0.0,
11283 context_window: 262100,
11284 max_tokens: 80000,
11285 },
11286 ModelEntry {
11287 id: "cohere/command-a",
11288 name: "Command A",
11289 api: Api::AnthropicMessages,
11290 provider: "vercel-ai-gateway",
11291 reasoning: false,
11292 input: &[InputModality::Text],
11293 cost_input: 2.5,
11294 cost_output: 10.0,
11295 cost_cache_read: 0.0,
11296 cost_cache_write: 0.0,
11297 context_window: 256000,
11298 max_tokens: 8000,
11299 },
11300 ModelEntry {
11301 id: "deepseek/deepseek-r1",
11302 name: "DeepSeek-R1",
11303 api: Api::AnthropicMessages,
11304 provider: "vercel-ai-gateway",
11305 reasoning: true,
11306 input: &[InputModality::Text],
11307 cost_input: 1.35,
11308 cost_output: 5.4,
11309 cost_cache_read: 0.0,
11310 cost_cache_write: 0.0,
11311 context_window: 128000,
11312 max_tokens: 8192,
11313 },
11314 ModelEntry {
11315 id: "deepseek/deepseek-v3",
11316 name: "DeepSeek V3 0324",
11317 api: Api::AnthropicMessages,
11318 provider: "vercel-ai-gateway",
11319 reasoning: false,
11320 input: &[InputModality::Text],
11321 cost_input: 0.77,
11322 cost_output: 0.77,
11323 cost_cache_read: 0.0,
11324 cost_cache_write: 0.0,
11325 context_window: 163840,
11326 max_tokens: 16384,
11327 },
11328 ModelEntry {
11329 id: "deepseek/deepseek-v3.1",
11330 name: "DeepSeek-V3.1",
11331 api: Api::AnthropicMessages,
11332 provider: "vercel-ai-gateway",
11333 reasoning: true,
11334 input: &[InputModality::Text],
11335 cost_input: 0.56,
11336 cost_output: 1.68,
11337 cost_cache_read: 0.28,
11338 cost_cache_write: 0.0,
11339 context_window: 163840,
11340 max_tokens: 8192,
11341 },
11342 ModelEntry {
11343 id: "deepseek/deepseek-v3.2-thinking",
11344 name: "DeepSeek V3.2 Thinking",
11345 api: Api::AnthropicMessages,
11346 provider: "vercel-ai-gateway",
11347 reasoning: false,
11348 input: &[InputModality::Text],
11349 cost_input: 0.62,
11350 cost_output: 1.85,
11351 cost_cache_read: 0.0,
11352 cost_cache_write: 0.0,
11353 context_window: 128000,
11354 max_tokens: 8000,
11355 },
11356 ModelEntry {
11357 id: "deepseek/deepseek-v4-flash",
11358 name: "DeepSeek V4 Flash",
11359 api: Api::AnthropicMessages,
11360 provider: "vercel-ai-gateway",
11361 reasoning: true,
11362 input: &[InputModality::Text],
11363 cost_input: 0.14,
11364 cost_output: 0.28,
11365 cost_cache_read: 0.0028,
11366 cost_cache_write: 0.0,
11367 context_window: 1000000,
11368 max_tokens: 384000,
11369 },
11370 ModelEntry {
11371 id: "deepseek/deepseek-v4-pro",
11372 name: "DeepSeek V4 Pro",
11373 api: Api::AnthropicMessages,
11374 provider: "vercel-ai-gateway",
11375 reasoning: true,
11376 input: &[InputModality::Text],
11377 cost_input: 0.435,
11378 cost_output: 0.87,
11379 cost_cache_read: 0.0036,
11380 cost_cache_write: 0.0,
11381 context_window: 1000000,
11382 max_tokens: 384000,
11383 },
11384 ModelEntry {
11385 id: "google/gemini-2.0-flash",
11386 name: "Gemini 2.0 Flash",
11387 api: Api::AnthropicMessages,
11388 provider: "vercel-ai-gateway",
11389 reasoning: false,
11390 input: &[InputModality::Text, InputModality::Image],
11391 cost_input: 0.15,
11392 cost_output: 0.6,
11393 cost_cache_read: 0.024999999999999998,
11394 cost_cache_write: 0.0,
11395 context_window: 1048576,
11396 max_tokens: 8192,
11397 },
11398 ModelEntry {
11399 id: "google/gemini-2.5-flash",
11400 name: "Gemini 2.5 Flash",
11401 api: Api::AnthropicMessages,
11402 provider: "vercel-ai-gateway",
11403 reasoning: true,
11404 input: &[InputModality::Text, InputModality::Image],
11405 cost_input: 0.3,
11406 cost_output: 2.5,
11407 cost_cache_read: 0.03,
11408 cost_cache_write: 0.0,
11409 context_window: 1000000,
11410 max_tokens: 65536,
11411 },
11412 ModelEntry {
11413 id: "google/gemini-2.5-flash-lite",
11414 name: "Gemini 2.5 Flash Lite",
11415 api: Api::AnthropicMessages,
11416 provider: "vercel-ai-gateway",
11417 reasoning: true,
11418 input: &[InputModality::Text, InputModality::Image],
11419 cost_input: 0.09999999999999999,
11420 cost_output: 0.39999999999999997,
11421 cost_cache_read: 0.01,
11422 cost_cache_write: 0.0,
11423 context_window: 1048576,
11424 max_tokens: 65536,
11425 },
11426 ModelEntry {
11427 id: "google/gemini-2.5-pro",
11428 name: "Gemini 2.5 Pro",
11429 api: Api::AnthropicMessages,
11430 provider: "vercel-ai-gateway",
11431 reasoning: true,
11432 input: &[InputModality::Text, InputModality::Image],
11433 cost_input: 1.25,
11434 cost_output: 10.0,
11435 cost_cache_read: 0.125,
11436 cost_cache_write: 0.0,
11437 context_window: 1048576,
11438 max_tokens: 65536,
11439 },
11440 ModelEntry {
11441 id: "google/gemini-3-flash",
11442 name: "Gemini 3 Flash",
11443 api: Api::AnthropicMessages,
11444 provider: "vercel-ai-gateway",
11445 reasoning: true,
11446 input: &[InputModality::Text, InputModality::Image],
11447 cost_input: 0.5,
11448 cost_output: 3.0,
11449 cost_cache_read: 0.049999999999999996,
11450 cost_cache_write: 0.0,
11451 context_window: 1000000,
11452 max_tokens: 65000,
11453 },
11454 ModelEntry {
11455 id: "google/gemini-3.1-flash-lite",
11456 name: "Gemini 3.1 Flash Lite",
11457 api: Api::AnthropicMessages,
11458 provider: "vercel-ai-gateway",
11459 reasoning: true,
11460 input: &[InputModality::Text, InputModality::Image],
11461 cost_input: 0.25,
11462 cost_output: 1.5,
11463 cost_cache_read: 0.03,
11464 cost_cache_write: 0.0,
11465 context_window: 1000000,
11466 max_tokens: 65000,
11467 },
11468 ModelEntry {
11469 id: "google/gemini-3.1-flash-lite-preview",
11470 name: "Gemini 3.1 Flash Lite Preview",
11471 api: Api::AnthropicMessages,
11472 provider: "vercel-ai-gateway",
11473 reasoning: true,
11474 input: &[InputModality::Text, InputModality::Image],
11475 cost_input: 0.25,
11476 cost_output: 1.5,
11477 cost_cache_read: 0.03,
11478 cost_cache_write: 0.0,
11479 context_window: 1000000,
11480 max_tokens: 65000,
11481 },
11482 ModelEntry {
11483 id: "google/gemini-3.1-pro-preview",
11484 name: "Gemini 3.1 Pro Preview",
11485 api: Api::AnthropicMessages,
11486 provider: "vercel-ai-gateway",
11487 reasoning: true,
11488 input: &[InputModality::Text, InputModality::Image],
11489 cost_input: 2.0,
11490 cost_output: 12.0,
11491 cost_cache_read: 0.19999999999999998,
11492 cost_cache_write: 0.0,
11493 context_window: 1000000,
11494 max_tokens: 64000,
11495 },
11496 ModelEntry {
11497 id: "google/gemini-3.5-flash",
11498 name: "Gemini 3.5 Flash",
11499 api: Api::AnthropicMessages,
11500 provider: "vercel-ai-gateway",
11501 reasoning: true,
11502 input: &[InputModality::Text, InputModality::Image],
11503 cost_input: 1.5,
11504 cost_output: 9.0,
11505 cost_cache_read: 0.15,
11506 cost_cache_write: 0.0,
11507 context_window: 1000000,
11508 max_tokens: 64000,
11509 },
11510 ModelEntry {
11511 id: "google/gemma-4-26b-a4b-it",
11512 name: "Gemma 4 26B A4B IT",
11513 api: Api::AnthropicMessages,
11514 provider: "vercel-ai-gateway",
11515 reasoning: false,
11516 input: &[InputModality::Text, InputModality::Image],
11517 cost_input: 0.13,
11518 cost_output: 0.39999999999999997,
11519 cost_cache_read: 0.0,
11520 cost_cache_write: 0.0,
11521 context_window: 262144,
11522 max_tokens: 131072,
11523 },
11524 ModelEntry {
11525 id: "google/gemma-4-31b-it",
11526 name: "Gemma 4 31B IT",
11527 api: Api::AnthropicMessages,
11528 provider: "vercel-ai-gateway",
11529 reasoning: false,
11530 input: &[InputModality::Text, InputModality::Image],
11531 cost_input: 0.14,
11532 cost_output: 0.39999999999999997,
11533 cost_cache_read: 0.0,
11534 cost_cache_write: 0.0,
11535 context_window: 262144,
11536 max_tokens: 131072,
11537 },
11538 ModelEntry {
11539 id: "inception/mercury-2",
11540 name: "Mercury 2",
11541 api: Api::AnthropicMessages,
11542 provider: "vercel-ai-gateway",
11543 reasoning: true,
11544 input: &[InputModality::Text],
11545 cost_input: 0.25,
11546 cost_output: 0.75,
11547 cost_cache_read: 0.024999999999999998,
11548 cost_cache_write: 0.0,
11549 context_window: 128000,
11550 max_tokens: 128000,
11551 },
11552 ModelEntry {
11553 id: "meituan/longcat-flash-chat",
11554 name: "LongCat Flash Chat",
11555 api: Api::AnthropicMessages,
11556 provider: "vercel-ai-gateway",
11557 reasoning: false,
11558 input: &[InputModality::Text],
11559 cost_input: 0.0,
11560 cost_output: 0.0,
11561 cost_cache_read: 0.0,
11562 cost_cache_write: 0.0,
11563 context_window: 128000,
11564 max_tokens: 100000,
11565 },
11566 ModelEntry {
11567 id: "meta/llama-3.1-70b",
11568 name: "Llama 3.1 70B Instruct",
11569 api: Api::AnthropicMessages,
11570 provider: "vercel-ai-gateway",
11571 reasoning: false,
11572 input: &[InputModality::Text],
11573 cost_input: 0.72,
11574 cost_output: 0.72,
11575 cost_cache_read: 0.0,
11576 cost_cache_write: 0.0,
11577 context_window: 128000,
11578 max_tokens: 8192,
11579 },
11580 ModelEntry {
11581 id: "meta/llama-3.1-8b",
11582 name: "Llama 3.1 8B Instruct",
11583 api: Api::AnthropicMessages,
11584 provider: "vercel-ai-gateway",
11585 reasoning: false,
11586 input: &[InputModality::Text],
11587 cost_input: 0.22,
11588 cost_output: 0.22,
11589 cost_cache_read: 0.0,
11590 cost_cache_write: 0.0,
11591 context_window: 128000,
11592 max_tokens: 8192,
11593 },
11594 ModelEntry {
11595 id: "meta/llama-3.2-90b",
11596 name: "Llama 3.2 90B Vision Instruct",
11597 api: Api::AnthropicMessages,
11598 provider: "vercel-ai-gateway",
11599 reasoning: false,
11600 input: &[InputModality::Text, InputModality::Image],
11601 cost_input: 0.72,
11602 cost_output: 0.72,
11603 cost_cache_read: 0.0,
11604 cost_cache_write: 0.0,
11605 context_window: 128000,
11606 max_tokens: 8192,
11607 },
11608 ModelEntry {
11609 id: "meta/llama-3.3-70b",
11610 name: "Llama 3.3 70B Instruct",
11611 api: Api::AnthropicMessages,
11612 provider: "vercel-ai-gateway",
11613 reasoning: false,
11614 input: &[InputModality::Text],
11615 cost_input: 0.72,
11616 cost_output: 0.72,
11617 cost_cache_read: 0.0,
11618 cost_cache_write: 0.0,
11619 context_window: 128000,
11620 max_tokens: 8192,
11621 },
11622 ModelEntry {
11623 id: "meta/llama-4-maverick",
11624 name: "Llama 4 Maverick 17B Instruct",
11625 api: Api::AnthropicMessages,
11626 provider: "vercel-ai-gateway",
11627 reasoning: false,
11628 input: &[InputModality::Text, InputModality::Image],
11629 cost_input: 0.24,
11630 cost_output: 0.9700000000000001,
11631 cost_cache_read: 0.0,
11632 cost_cache_write: 0.0,
11633 context_window: 128000,
11634 max_tokens: 8192,
11635 },
11636 ModelEntry {
11637 id: "meta/llama-4-scout",
11638 name: "Llama 4 Scout 17B Instruct",
11639 api: Api::AnthropicMessages,
11640 provider: "vercel-ai-gateway",
11641 reasoning: false,
11642 input: &[InputModality::Text, InputModality::Image],
11643 cost_input: 0.16999999999999998,
11644 cost_output: 0.66,
11645 cost_cache_read: 0.0,
11646 cost_cache_write: 0.0,
11647 context_window: 128000,
11648 max_tokens: 8192,
11649 },
11650 ModelEntry {
11651 id: "minimax/minimax-m2",
11652 name: "MiniMax M2",
11653 api: Api::AnthropicMessages,
11654 provider: "vercel-ai-gateway",
11655 reasoning: true,
11656 input: &[InputModality::Text],
11657 cost_input: 0.3,
11658 cost_output: 1.2,
11659 cost_cache_read: 0.03,
11660 cost_cache_write: 0.375,
11661 context_window: 205000,
11662 max_tokens: 205000,
11663 },
11664 ModelEntry {
11665 id: "minimax/minimax-m2.1-lightning",
11666 name: "MiniMax M2.1 Lightning",
11667 api: Api::AnthropicMessages,
11668 provider: "vercel-ai-gateway",
11669 reasoning: true,
11670 input: &[InputModality::Text],
11671 cost_input: 0.3,
11672 cost_output: 2.4,
11673 cost_cache_read: 0.03,
11674 cost_cache_write: 0.375,
11675 context_window: 204800,
11676 max_tokens: 131072,
11677 },
11678 ModelEntry {
11679 id: "minimax/minimax-m2.5",
11680 name: "MiniMax M2.5",
11681 api: Api::AnthropicMessages,
11682 provider: "vercel-ai-gateway",
11683 reasoning: true,
11684 input: &[InputModality::Text],
11685 cost_input: 0.3,
11686 cost_output: 1.2,
11687 cost_cache_read: 0.03,
11688 cost_cache_write: 0.375,
11689 context_window: 204800,
11690 max_tokens: 131000,
11691 },
11692 ModelEntry {
11693 id: "minimax/minimax-m2.5-highspeed",
11694 name: "MiniMax M2.5 High Speed",
11695 api: Api::AnthropicMessages,
11696 provider: "vercel-ai-gateway",
11697 reasoning: true,
11698 input: &[InputModality::Text],
11699 cost_input: 0.6,
11700 cost_output: 2.4,
11701 cost_cache_read: 0.03,
11702 cost_cache_write: 0.375,
11703 context_window: 204800,
11704 max_tokens: 131000,
11705 },
11706 ModelEntry {
11707 id: "minimax/minimax-m2.7",
11708 name: "MiniMax M2.7",
11709 api: Api::AnthropicMessages,
11710 provider: "vercel-ai-gateway",
11711 reasoning: true,
11712 input: &[InputModality::Text, InputModality::Image],
11713 cost_input: 0.3,
11714 cost_output: 1.2,
11715 cost_cache_read: 0.06,
11716 cost_cache_write: 0.375,
11717 context_window: 204800,
11718 max_tokens: 131000,
11719 },
11720 ModelEntry {
11721 id: "mistral/codestral",
11722 name: "Mistral Codestral",
11723 api: Api::AnthropicMessages,
11724 provider: "vercel-ai-gateway",
11725 reasoning: false,
11726 input: &[InputModality::Text],
11727 cost_input: 0.3,
11728 cost_output: 0.8999999999999999,
11729 cost_cache_read: 0.0,
11730 cost_cache_write: 0.0,
11731 context_window: 128000,
11732 max_tokens: 4000,
11733 },
11734 ModelEntry {
11735 id: "mistral/devstral-2",
11736 name: "Devstral 2",
11737 api: Api::AnthropicMessages,
11738 provider: "vercel-ai-gateway",
11739 reasoning: false,
11740 input: &[InputModality::Text],
11741 cost_input: 0.39999999999999997,
11742 cost_output: 2.0,
11743 cost_cache_read: 0.0,
11744 cost_cache_write: 0.0,
11745 context_window: 256000,
11746 max_tokens: 256000,
11747 },
11748 ModelEntry {
11749 id: "mistral/devstral-small",
11750 name: "Devstral Small 1.1",
11751 api: Api::AnthropicMessages,
11752 provider: "vercel-ai-gateway",
11753 reasoning: false,
11754 input: &[InputModality::Text],
11755 cost_input: 0.09999999999999999,
11756 cost_output: 0.3,
11757 cost_cache_read: 0.0,
11758 cost_cache_write: 0.0,
11759 context_window: 128000,
11760 max_tokens: 64000,
11761 },
11762 ModelEntry {
11763 id: "mistral/devstral-small-2",
11764 name: "Devstral Small 2",
11765 api: Api::AnthropicMessages,
11766 provider: "vercel-ai-gateway",
11767 reasoning: false,
11768 input: &[InputModality::Text],
11769 cost_input: 0.09999999999999999,
11770 cost_output: 0.3,
11771 cost_cache_read: 0.0,
11772 cost_cache_write: 0.0,
11773 context_window: 256000,
11774 max_tokens: 256000,
11775 },
11776 ModelEntry {
11777 id: "mistral/ministral-3b",
11778 name: "Ministral 3B",
11779 api: Api::AnthropicMessages,
11780 provider: "vercel-ai-gateway",
11781 reasoning: false,
11782 input: &[InputModality::Text],
11783 cost_input: 0.09999999999999999,
11784 cost_output: 0.09999999999999999,
11785 cost_cache_read: 0.0,
11786 cost_cache_write: 0.0,
11787 context_window: 128000,
11788 max_tokens: 4000,
11789 },
11790 ModelEntry {
11791 id: "mistral/mistral-medium",
11792 name: "Mistral Medium 3.1",
11793 api: Api::AnthropicMessages,
11794 provider: "vercel-ai-gateway",
11795 reasoning: false,
11796 input: &[InputModality::Text, InputModality::Image],
11797 cost_input: 0.39999999999999997,
11798 cost_output: 2.0,
11799 cost_cache_read: 0.0,
11800 cost_cache_write: 0.0,
11801 context_window: 128000,
11802 max_tokens: 64000,
11803 },
11804 ModelEntry {
11805 id: "mistral/mistral-medium-3.5",
11806 name: "Mistral Medium Latest",
11807 api: Api::AnthropicMessages,
11808 provider: "vercel-ai-gateway",
11809 reasoning: true,
11810 input: &[InputModality::Text],
11811 cost_input: 1.5,
11812 cost_output: 7.5,
11813 cost_cache_read: 0.0,
11814 cost_cache_write: 0.0,
11815 context_window: 256000,
11816 max_tokens: 256000,
11817 },
11818 ModelEntry {
11819 id: "mistral/mistral-small",
11820 name: "Mistral Small",
11821 api: Api::AnthropicMessages,
11822 provider: "vercel-ai-gateway",
11823 reasoning: false,
11824 input: &[InputModality::Text, InputModality::Image],
11825 cost_input: 0.09999999999999999,
11826 cost_output: 0.3,
11827 cost_cache_read: 0.0,
11828 cost_cache_write: 0.0,
11829 context_window: 32000,
11830 max_tokens: 4000,
11831 },
11832 ModelEntry {
11833 id: "mistral/pixtral-12b",
11834 name: "Pixtral 12B 2409",
11835 api: Api::AnthropicMessages,
11836 provider: "vercel-ai-gateway",
11837 reasoning: false,
11838 input: &[InputModality::Text, InputModality::Image],
11839 cost_input: 0.15,
11840 cost_output: 0.15,
11841 cost_cache_read: 0.0,
11842 cost_cache_write: 0.0,
11843 context_window: 128000,
11844 max_tokens: 4000,
11845 },
11846 ModelEntry {
11847 id: "mistral/pixtral-large",
11848 name: "Pixtral Large",
11849 api: Api::AnthropicMessages,
11850 provider: "vercel-ai-gateway",
11851 reasoning: false,
11852 input: &[InputModality::Text, InputModality::Image],
11853 cost_input: 2.0,
11854 cost_output: 6.0,
11855 cost_cache_read: 0.0,
11856 cost_cache_write: 0.0,
11857 context_window: 128000,
11858 max_tokens: 4000,
11859 },
11860 ModelEntry {
11861 id: "moonshotai/kimi-k2-thinking-turbo",
11862 name: "Kimi K2 Thinking Turbo",
11863 api: Api::AnthropicMessages,
11864 provider: "vercel-ai-gateway",
11865 reasoning: true,
11866 input: &[InputModality::Text],
11867 cost_input: 1.15,
11868 cost_output: 8.0,
11869 cost_cache_read: 0.15,
11870 cost_cache_write: 0.0,
11871 context_window: 262114,
11872 max_tokens: 262114,
11873 },
11874 ModelEntry {
11875 id: "moonshotai/kimi-k2-turbo",
11876 name: "Kimi K2 Turbo",
11877 api: Api::AnthropicMessages,
11878 provider: "vercel-ai-gateway",
11879 reasoning: false,
11880 input: &[InputModality::Text],
11881 cost_input: 1.15,
11882 cost_output: 8.0,
11883 cost_cache_read: 0.15,
11884 cost_cache_write: 0.0,
11885 context_window: 256000,
11886 max_tokens: 16384,
11887 },
11888 ModelEntry {
11889 id: "moonshotai/kimi-k2.6",
11890 name: "Kimi K2.6",
11891 api: Api::AnthropicMessages,
11892 provider: "vercel-ai-gateway",
11893 reasoning: true,
11894 input: &[InputModality::Text, InputModality::Image],
11895 cost_input: 0.95,
11896 cost_output: 4.0,
11897 cost_cache_read: 0.16,
11898 cost_cache_write: 0.0,
11899 context_window: 262000,
11900 max_tokens: 262000,
11901 },
11902 ModelEntry {
11903 id: "nvidia/nemotron-nano-12b-v2-vl",
11904 name: "Nvidia Nemotron Nano 12B V2 VL",
11905 api: Api::AnthropicMessages,
11906 provider: "vercel-ai-gateway",
11907 reasoning: true,
11908 input: &[InputModality::Text, InputModality::Image],
11909 cost_input: 0.19999999999999998,
11910 cost_output: 0.6,
11911 cost_cache_read: 0.0,
11912 cost_cache_write: 0.0,
11913 context_window: 131072,
11914 max_tokens: 131072,
11915 },
11916 ModelEntry {
11917 id: "nvidia/nemotron-nano-9b-v2",
11918 name: "Nvidia Nemotron Nano 9B V2",
11919 api: Api::AnthropicMessages,
11920 provider: "vercel-ai-gateway",
11921 reasoning: true,
11922 input: &[InputModality::Text],
11923 cost_input: 0.06,
11924 cost_output: 0.22999999999999998,
11925 cost_cache_read: 0.0,
11926 cost_cache_write: 0.0,
11927 context_window: 131072,
11928 max_tokens: 131072,
11929 },
11930 ModelEntry {
11931 id: "openai/gpt-4-turbo",
11932 name: "GPT-4 Turbo",
11933 api: Api::AnthropicMessages,
11934 provider: "vercel-ai-gateway",
11935 reasoning: false,
11936 input: &[InputModality::Text, InputModality::Image],
11937 cost_input: 10.0,
11938 cost_output: 30.0,
11939 cost_cache_read: 0.0,
11940 cost_cache_write: 0.0,
11941 context_window: 128000,
11942 max_tokens: 4096,
11943 },
11944 ModelEntry {
11945 id: "openai/gpt-4.1",
11946 name: "GPT-4.1",
11947 api: Api::AnthropicMessages,
11948 provider: "vercel-ai-gateway",
11949 reasoning: false,
11950 input: &[InputModality::Text, InputModality::Image],
11951 cost_input: 2.0,
11952 cost_output: 8.0,
11953 cost_cache_read: 0.5,
11954 cost_cache_write: 0.0,
11955 context_window: 1047576,
11956 max_tokens: 32768,
11957 },
11958 ModelEntry {
11959 id: "openai/gpt-4.1-nano",
11960 name: "GPT-4.1 nano",
11961 api: Api::AnthropicMessages,
11962 provider: "vercel-ai-gateway",
11963 reasoning: false,
11964 input: &[InputModality::Text, InputModality::Image],
11965 cost_input: 0.09999999999999999,
11966 cost_output: 0.39999999999999997,
11967 cost_cache_read: 0.024999999999999998,
11968 cost_cache_write: 0.0,
11969 context_window: 1047576,
11970 max_tokens: 32768,
11971 },
11972 ModelEntry {
11973 id: "openai/gpt-4o",
11974 name: "GPT-4o",
11975 api: Api::AnthropicMessages,
11976 provider: "vercel-ai-gateway",
11977 reasoning: false,
11978 input: &[InputModality::Text, InputModality::Image],
11979 cost_input: 2.5,
11980 cost_output: 10.0,
11981 cost_cache_read: 1.25,
11982 cost_cache_write: 0.0,
11983 context_window: 128000,
11984 max_tokens: 16384,
11985 },
11986 ModelEntry {
11987 id: "openai/gpt-4o-mini",
11988 name: "GPT-4o mini",
11989 api: Api::AnthropicMessages,
11990 provider: "vercel-ai-gateway",
11991 reasoning: false,
11992 input: &[InputModality::Text, InputModality::Image],
11993 cost_input: 0.15,
11994 cost_output: 0.6,
11995 cost_cache_read: 0.075,
11996 cost_cache_write: 0.0,
11997 context_window: 128000,
11998 max_tokens: 16384,
11999 },
12000 ModelEntry {
12001 id: "openai/gpt-5-codex",
12002 name: "GPT-5-Codex",
12003 api: Api::AnthropicMessages,
12004 provider: "vercel-ai-gateway",
12005 reasoning: true,
12006 input: &[InputModality::Text],
12007 cost_input: 1.25,
12008 cost_output: 10.0,
12009 cost_cache_read: 0.125,
12010 cost_cache_write: 0.0,
12011 context_window: 400000,
12012 max_tokens: 128000,
12013 },
12014 ModelEntry {
12015 id: "openai/gpt-5-mini",
12016 name: "GPT-5 mini",
12017 api: Api::AnthropicMessages,
12018 provider: "vercel-ai-gateway",
12019 reasoning: true,
12020 input: &[InputModality::Text, InputModality::Image],
12021 cost_input: 0.25,
12022 cost_output: 2.0,
12023 cost_cache_read: 0.024999999999999998,
12024 cost_cache_write: 0.0,
12025 context_window: 400000,
12026 max_tokens: 128000,
12027 },
12028 ModelEntry {
12029 id: "openai/gpt-5-nano",
12030 name: "GPT-5 nano",
12031 api: Api::AnthropicMessages,
12032 provider: "vercel-ai-gateway",
12033 reasoning: true,
12034 input: &[InputModality::Text, InputModality::Image],
12035 cost_input: 0.049999999999999996,
12036 cost_output: 0.39999999999999997,
12037 cost_cache_read: 0.005,
12038 cost_cache_write: 0.0,
12039 context_window: 400000,
12040 max_tokens: 128000,
12041 },
12042 ModelEntry {
12043 id: "openai/gpt-5-pro",
12044 name: "GPT-5 pro",
12045 api: Api::AnthropicMessages,
12046 provider: "vercel-ai-gateway",
12047 reasoning: true,
12048 input: &[InputModality::Text, InputModality::Image],
12049 cost_input: 15.0,
12050 cost_output: 120.0,
12051 cost_cache_read: 0.0,
12052 cost_cache_write: 0.0,
12053 context_window: 400000,
12054 max_tokens: 272000,
12055 },
12056 ModelEntry {
12057 id: "openai/gpt-5.1-codex",
12058 name: "GPT-5.1-Codex",
12059 api: Api::AnthropicMessages,
12060 provider: "vercel-ai-gateway",
12061 reasoning: true,
12062 input: &[InputModality::Text, InputModality::Image],
12063 cost_input: 1.25,
12064 cost_output: 10.0,
12065 cost_cache_read: 0.125,
12066 cost_cache_write: 0.0,
12067 context_window: 400000,
12068 max_tokens: 128000,
12069 },
12070 ModelEntry {
12071 id: "openai/gpt-5.1-instant",
12072 name: "GPT-5.1 Instant",
12073 api: Api::AnthropicMessages,
12074 provider: "vercel-ai-gateway",
12075 reasoning: true,
12076 input: &[InputModality::Text, InputModality::Image],
12077 cost_input: 1.25,
12078 cost_output: 10.0,
12079 cost_cache_read: 0.125,
12080 cost_cache_write: 0.0,
12081 context_window: 128000,
12082 max_tokens: 16384,
12083 },
12084 ModelEntry {
12085 id: "openai/gpt-5.1-thinking",
12086 name: "GPT 5.1 Thinking",
12087 api: Api::AnthropicMessages,
12088 provider: "vercel-ai-gateway",
12089 reasoning: true,
12090 input: &[InputModality::Text, InputModality::Image],
12091 cost_input: 1.25,
12092 cost_output: 10.0,
12093 cost_cache_read: 0.125,
12094 cost_cache_write: 0.0,
12095 context_window: 400000,
12096 max_tokens: 128000,
12097 },
12098 ModelEntry {
12099 id: "openai/gpt-5.2",
12100 name: "GPT 5.2",
12101 api: Api::AnthropicMessages,
12102 provider: "vercel-ai-gateway",
12103 reasoning: true,
12104 input: &[InputModality::Text, InputModality::Image],
12105 cost_input: 1.75,
12106 cost_output: 14.0,
12107 cost_cache_read: 0.175,
12108 cost_cache_write: 0.0,
12109 context_window: 400000,
12110 max_tokens: 128000,
12111 },
12112 ModelEntry {
12113 id: "openai/gpt-5.2-codex",
12114 name: "GPT 5.2 Codex",
12115 api: Api::AnthropicMessages,
12116 provider: "vercel-ai-gateway",
12117 reasoning: true,
12118 input: &[InputModality::Text, InputModality::Image],
12119 cost_input: 1.75,
12120 cost_output: 14.0,
12121 cost_cache_read: 0.175,
12122 cost_cache_write: 0.0,
12123 context_window: 400000,
12124 max_tokens: 128000,
12125 },
12126 ModelEntry {
12127 id: "openai/gpt-5.2-pro",
12128 name: "GPT 5.2 ",
12129 api: Api::AnthropicMessages,
12130 provider: "vercel-ai-gateway",
12131 reasoning: true,
12132 input: &[InputModality::Text, InputModality::Image],
12133 cost_input: 21.0,
12134 cost_output: 168.0,
12135 cost_cache_read: 0.0,
12136 cost_cache_write: 0.0,
12137 context_window: 400000,
12138 max_tokens: 128000,
12139 },
12140 ModelEntry {
12141 id: "openai/gpt-5.3-codex",
12142 name: "GPT 5.3 Codex",
12143 api: Api::AnthropicMessages,
12144 provider: "vercel-ai-gateway",
12145 reasoning: true,
12146 input: &[InputModality::Text, InputModality::Image],
12147 cost_input: 1.75,
12148 cost_output: 14.0,
12149 cost_cache_read: 0.175,
12150 cost_cache_write: 0.0,
12151 context_window: 400000,
12152 max_tokens: 128000,
12153 },
12154 ModelEntry {
12155 id: "openai/gpt-5.4",
12156 name: "GPT 5.4",
12157 api: Api::AnthropicMessages,
12158 provider: "vercel-ai-gateway",
12159 reasoning: true,
12160 input: &[InputModality::Text, InputModality::Image],
12161 cost_input: 2.5,
12162 cost_output: 15.0,
12163 cost_cache_read: 0.25,
12164 cost_cache_write: 0.0,
12165 context_window: 1050000,
12166 max_tokens: 128000,
12167 },
12168 ModelEntry {
12169 id: "openai/gpt-5.4-pro",
12170 name: "GPT 5.4 Pro",
12171 api: Api::AnthropicMessages,
12172 provider: "vercel-ai-gateway",
12173 reasoning: true,
12174 input: &[InputModality::Text, InputModality::Image],
12175 cost_input: 30.0,
12176 cost_output: 180.0,
12177 cost_cache_read: 0.0,
12178 cost_cache_write: 0.0,
12179 context_window: 1050000,
12180 max_tokens: 128000,
12181 },
12182 ModelEntry {
12183 id: "openai/gpt-5.5",
12184 name: "GPT 5.5",
12185 api: Api::AnthropicMessages,
12186 provider: "vercel-ai-gateway",
12187 reasoning: true,
12188 input: &[InputModality::Text, InputModality::Image],
12189 cost_input: 5.0,
12190 cost_output: 30.0,
12191 cost_cache_read: 0.5,
12192 cost_cache_write: 0.0,
12193 context_window: 1000000,
12194 max_tokens: 128000,
12195 },
12196 ModelEntry {
12197 id: "openai/gpt-5.5-pro",
12198 name: "GPT 5.5 Pro",
12199 api: Api::AnthropicMessages,
12200 provider: "vercel-ai-gateway",
12201 reasoning: true,
12202 input: &[InputModality::Text, InputModality::Image],
12203 cost_input: 30.0,
12204 cost_output: 180.0,
12205 cost_cache_read: 0.0,
12206 cost_cache_write: 0.0,
12207 context_window: 1000000,
12208 max_tokens: 128000,
12209 },
12210 ModelEntry {
12211 id: "openai/o1",
12212 name: "o1",
12213 api: Api::AnthropicMessages,
12214 provider: "vercel-ai-gateway",
12215 reasoning: true,
12216 input: &[InputModality::Text, InputModality::Image],
12217 cost_input: 15.0,
12218 cost_output: 60.0,
12219 cost_cache_read: 7.5,
12220 cost_cache_write: 0.0,
12221 context_window: 200000,
12222 max_tokens: 100000,
12223 },
12224 ModelEntry {
12225 id: "openai/o3",
12226 name: "o3",
12227 api: Api::AnthropicMessages,
12228 provider: "vercel-ai-gateway",
12229 reasoning: true,
12230 input: &[InputModality::Text, InputModality::Image],
12231 cost_input: 2.0,
12232 cost_output: 8.0,
12233 cost_cache_read: 0.5,
12234 cost_cache_write: 0.0,
12235 context_window: 200000,
12236 max_tokens: 100000,
12237 },
12238 ModelEntry {
12239 id: "openai/o3-deep-research",
12240 name: "o3-deep-research",
12241 api: Api::AnthropicMessages,
12242 provider: "vercel-ai-gateway",
12243 reasoning: true,
12244 input: &[InputModality::Text, InputModality::Image],
12245 cost_input: 10.0,
12246 cost_output: 40.0,
12247 cost_cache_read: 2.5,
12248 cost_cache_write: 0.0,
12249 context_window: 200000,
12250 max_tokens: 100000,
12251 },
12252 ModelEntry {
12253 id: "openai/o3-pro",
12254 name: "o3 Pro",
12255 api: Api::AnthropicMessages,
12256 provider: "vercel-ai-gateway",
12257 reasoning: true,
12258 input: &[InputModality::Text, InputModality::Image],
12259 cost_input: 20.0,
12260 cost_output: 80.0,
12261 cost_cache_read: 0.0,
12262 cost_cache_write: 0.0,
12263 context_window: 200000,
12264 max_tokens: 100000,
12265 },
12266 ModelEntry {
12267 id: "openai/o4-mini",
12268 name: "o4-mini",
12269 api: Api::AnthropicMessages,
12270 provider: "vercel-ai-gateway",
12271 reasoning: true,
12272 input: &[InputModality::Text, InputModality::Image],
12273 cost_input: 1.1,
12274 cost_output: 4.4,
12275 cost_cache_read: 0.275,
12276 cost_cache_write: 0.0,
12277 context_window: 200000,
12278 max_tokens: 100000,
12279 },
12280 ModelEntry {
12281 id: "perplexity/sonar",
12282 name: "Sonar",
12283 api: Api::AnthropicMessages,
12284 provider: "vercel-ai-gateway",
12285 reasoning: false,
12286 input: &[InputModality::Text, InputModality::Image],
12287 cost_input: 0.0,
12288 cost_output: 0.0,
12289 cost_cache_read: 0.0,
12290 cost_cache_write: 0.0,
12291 context_window: 127000,
12292 max_tokens: 8000,
12293 },
12294 ModelEntry {
12295 id: "perplexity/sonar-pro",
12296 name: "Sonar Pro",
12297 api: Api::AnthropicMessages,
12298 provider: "vercel-ai-gateway",
12299 reasoning: false,
12300 input: &[InputModality::Text, InputModality::Image],
12301 cost_input: 0.0,
12302 cost_output: 0.0,
12303 cost_cache_read: 0.0,
12304 cost_cache_write: 0.0,
12305 context_window: 200000,
12306 max_tokens: 8000,
12307 },
12308 ModelEntry {
12309 id: "xai/grok-4.1-fast-non-reasoning",
12310 name: "Grok 4.1 Fast Non-Reasoning",
12311 api: Api::AnthropicMessages,
12312 provider: "vercel-ai-gateway",
12313 reasoning: false,
12314 input: &[InputModality::Text, InputModality::Image],
12315 cost_input: 0.19999999999999998,
12316 cost_output: 0.5,
12317 cost_cache_read: 0.049999999999999996,
12318 cost_cache_write: 0.0,
12319 context_window: 1000000,
12320 max_tokens: 1000000,
12321 },
12322 ModelEntry {
12323 id: "xai/grok-4.1-fast-reasoning",
12324 name: "Grok 4.1 Fast Reasoning",
12325 api: Api::AnthropicMessages,
12326 provider: "vercel-ai-gateway",
12327 reasoning: true,
12328 input: &[InputModality::Text, InputModality::Image],
12329 cost_input: 0.19999999999999998,
12330 cost_output: 0.5,
12331 cost_cache_read: 0.049999999999999996,
12332 cost_cache_write: 0.0,
12333 context_window: 1000000,
12334 max_tokens: 1000000,
12335 },
12336 ModelEntry {
12337 id: "xai/grok-4.20-multi-agent",
12338 name: "Grok 4.20 Multi-Agent",
12339 api: Api::AnthropicMessages,
12340 provider: "vercel-ai-gateway",
12341 reasoning: true,
12342 input: &[InputModality::Text, InputModality::Image],
12343 cost_input: 1.25,
12344 cost_output: 2.5,
12345 cost_cache_read: 0.19999999999999998,
12346 cost_cache_write: 0.0,
12347 context_window: 2000000,
12348 max_tokens: 2000000,
12349 },
12350 ModelEntry {
12351 id: "xai/grok-4.20-multi-agent-beta",
12352 name: "Grok 4.20 Multi Agent Beta",
12353 api: Api::AnthropicMessages,
12354 provider: "vercel-ai-gateway",
12355 reasoning: true,
12356 input: &[InputModality::Text, InputModality::Image],
12357 cost_input: 1.25,
12358 cost_output: 2.5,
12359 cost_cache_read: 0.19999999999999998,
12360 cost_cache_write: 0.0,
12361 context_window: 2000000,
12362 max_tokens: 2000000,
12363 },
12364 ModelEntry {
12365 id: "xai/grok-4.20-non-reasoning",
12366 name: "Grok 4.20 Non-Reasoning",
12367 api: Api::AnthropicMessages,
12368 provider: "vercel-ai-gateway",
12369 reasoning: false,
12370 input: &[InputModality::Text, InputModality::Image],
12371 cost_input: 1.25,
12372 cost_output: 2.5,
12373 cost_cache_read: 0.19999999999999998,
12374 cost_cache_write: 0.0,
12375 context_window: 2000000,
12376 max_tokens: 2000000,
12377 },
12378 ModelEntry {
12379 id: "xai/grok-4.20-reasoning",
12380 name: "Grok 4.20 Reasoning",
12381 api: Api::AnthropicMessages,
12382 provider: "vercel-ai-gateway",
12383 reasoning: true,
12384 input: &[InputModality::Text, InputModality::Image],
12385 cost_input: 1.25,
12386 cost_output: 2.5,
12387 cost_cache_read: 0.19999999999999998,
12388 cost_cache_write: 0.0,
12389 context_window: 2000000,
12390 max_tokens: 2000000,
12391 },
12392 ModelEntry {
12393 id: "xai/grok-4.20-reasoning-beta",
12394 name: "Grok 4.20 Beta Reasoning",
12395 api: Api::AnthropicMessages,
12396 provider: "vercel-ai-gateway",
12397 reasoning: true,
12398 input: &[InputModality::Text, InputModality::Image],
12399 cost_input: 1.25,
12400 cost_output: 2.5,
12401 cost_cache_read: 0.19999999999999998,
12402 cost_cache_write: 0.0,
12403 context_window: 2000000,
12404 max_tokens: 2000000,
12405 },
12406 ModelEntry {
12407 id: "xai/grok-4.3",
12408 name: "Grok 4.3",
12409 api: Api::AnthropicMessages,
12410 provider: "vercel-ai-gateway",
12411 reasoning: true,
12412 input: &[InputModality::Text, InputModality::Image],
12413 cost_input: 1.25,
12414 cost_output: 2.5,
12415 cost_cache_read: 0.19999999999999998,
12416 cost_cache_write: 0.0,
12417 context_window: 1000000,
12418 max_tokens: 1000000,
12419 },
12420 ModelEntry {
12421 id: "xai/grok-build-0.1",
12422 name: "Grok Build 0.1",
12423 api: Api::AnthropicMessages,
12424 provider: "vercel-ai-gateway",
12425 reasoning: true,
12426 input: &[InputModality::Text, InputModality::Image],
12427 cost_input: 1.0,
12428 cost_output: 2.0,
12429 cost_cache_read: 0.19999999999999998,
12430 cost_cache_write: 0.0,
12431 context_window: 256000,
12432 max_tokens: 256000,
12433 },
12434 ModelEntry {
12435 id: "xiaomi/mimo-v2-pro",
12436 name: "MiMo V2 Pro",
12437 api: Api::AnthropicMessages,
12438 provider: "vercel-ai-gateway",
12439 reasoning: true,
12440 input: &[InputModality::Text],
12441 cost_input: 1.0,
12442 cost_output: 3.0,
12443 cost_cache_read: 0.19999999999999998,
12444 cost_cache_write: 0.0,
12445 context_window: 1000000,
12446 max_tokens: 128000,
12447 },
12448 ModelEntry {
12449 id: "xiaomi/mimo-v2.5-pro",
12450 name: "MiMo V2.5 Pro",
12451 api: Api::AnthropicMessages,
12452 provider: "vercel-ai-gateway",
12453 reasoning: true,
12454 input: &[InputModality::Text, InputModality::Image],
12455 cost_input: 0.435,
12456 cost_output: 0.87,
12457 cost_cache_read: 0.0036,
12458 cost_cache_write: 0.0,
12459 context_window: 1050000,
12460 max_tokens: 131000,
12461 },
12462 ModelEntry {
12463 id: "zai/glm-4.5",
12464 name: "GLM-4.5",
12465 api: Api::AnthropicMessages,
12466 provider: "vercel-ai-gateway",
12467 reasoning: true,
12468 input: &[InputModality::Text],
12469 cost_input: 0.6,
12470 cost_output: 2.2,
12471 cost_cache_read: 0.11,
12472 cost_cache_write: 0.0,
12473 context_window: 128000,
12474 max_tokens: 96000,
12475 },
12476 ModelEntry {
12477 id: "zai/glm-4.5-air",
12478 name: "GLM 4.5 Air",
12479 api: Api::AnthropicMessages,
12480 provider: "vercel-ai-gateway",
12481 reasoning: true,
12482 input: &[InputModality::Text],
12483 cost_input: 0.19999999999999998,
12484 cost_output: 1.1,
12485 cost_cache_read: 0.03,
12486 cost_cache_write: 0.0,
12487 context_window: 128000,
12488 max_tokens: 96000,
12489 },
12490 ModelEntry {
12491 id: "zai/glm-4.6",
12492 name: "GLM 4.6",
12493 api: Api::AnthropicMessages,
12494 provider: "vercel-ai-gateway",
12495 reasoning: true,
12496 input: &[InputModality::Text],
12497 cost_input: 0.6,
12498 cost_output: 2.2,
12499 cost_cache_read: 0.11,
12500 cost_cache_write: 0.0,
12501 context_window: 200000,
12502 max_tokens: 96000,
12503 },
12504 ModelEntry {
12505 id: "zai/glm-4.6v",
12506 name: "GLM-4.6V",
12507 api: Api::AnthropicMessages,
12508 provider: "vercel-ai-gateway",
12509 reasoning: true,
12510 input: &[InputModality::Text, InputModality::Image],
12511 cost_input: 0.3,
12512 cost_output: 0.8999999999999999,
12513 cost_cache_read: 0.049999999999999996,
12514 cost_cache_write: 0.0,
12515 context_window: 128000,
12516 max_tokens: 24000,
12517 },
12518 ModelEntry {
12519 id: "zai/glm-4.6v-flash",
12520 name: "GLM-4.6V-Flash",
12521 api: Api::AnthropicMessages,
12522 provider: "vercel-ai-gateway",
12523 reasoning: true,
12524 input: &[InputModality::Text, InputModality::Image],
12525 cost_input: 0.0,
12526 cost_output: 0.0,
12527 cost_cache_read: 0.0,
12528 cost_cache_write: 0.0,
12529 context_window: 128000,
12530 max_tokens: 24000,
12531 },
12532 ModelEntry {
12533 id: "zai/glm-4.7",
12534 name: "GLM 4.7",
12535 api: Api::AnthropicMessages,
12536 provider: "vercel-ai-gateway",
12537 reasoning: true,
12538 input: &[InputModality::Text],
12539 cost_input: 2.25,
12540 cost_output: 2.75,
12541 cost_cache_read: 2.25,
12542 cost_cache_write: 0.0,
12543 context_window: 131000,
12544 max_tokens: 40000,
12545 },
12546 ModelEntry {
12547 id: "zai/glm-4.7-flashx",
12548 name: "GLM 4.7 FlashX",
12549 api: Api::AnthropicMessages,
12550 provider: "vercel-ai-gateway",
12551 reasoning: true,
12552 input: &[InputModality::Text],
12553 cost_input: 0.06,
12554 cost_output: 0.39999999999999997,
12555 cost_cache_read: 0.01,
12556 cost_cache_write: 0.0,
12557 context_window: 200000,
12558 max_tokens: 128000,
12559 },
12560 ModelEntry {
12561 id: "zai/glm-5",
12562 name: "GLM 5",
12563 api: Api::AnthropicMessages,
12564 provider: "vercel-ai-gateway",
12565 reasoning: true,
12566 input: &[InputModality::Text],
12567 cost_input: 1.0,
12568 cost_output: 3.1999999999999997,
12569 cost_cache_read: 0.19999999999999998,
12570 cost_cache_write: 0.0,
12571 context_window: 202800,
12572 max_tokens: 131100,
12573 },
12574 ModelEntry {
12575 id: "zai/glm-5-turbo",
12576 name: "GLM 5 Turbo",
12577 api: Api::AnthropicMessages,
12578 provider: "vercel-ai-gateway",
12579 reasoning: true,
12580 input: &[InputModality::Text],
12581 cost_input: 1.2,
12582 cost_output: 4.0,
12583 cost_cache_read: 0.24,
12584 cost_cache_write: 0.0,
12585 context_window: 202800,
12586 max_tokens: 131100,
12587 },
12588 ModelEntry {
12589 id: "zai/glm-5.1",
12590 name: "GLM 5.1",
12591 api: Api::AnthropicMessages,
12592 provider: "vercel-ai-gateway",
12593 reasoning: true,
12594 input: &[InputModality::Text],
12595 cost_input: 1.4,
12596 cost_output: 4.4,
12597 cost_cache_read: 0.26,
12598 cost_cache_write: 0.0,
12599 context_window: 202800,
12600 max_tokens: 64000,
12601 },
12602 ModelEntry {
12603 id: "zai/glm-5v-turbo",
12604 name: "GLM 5V Turbo",
12605 api: Api::AnthropicMessages,
12606 provider: "vercel-ai-gateway",
12607 reasoning: true,
12608 input: &[InputModality::Text, InputModality::Image],
12609 cost_input: 1.2,
12610 cost_output: 4.0,
12611 cost_cache_read: 0.24,
12612 cost_cache_write: 0.0,
12613 context_window: 200000,
12614 max_tokens: 128000,
12615 },
12616];
12617
12618static XAI_MODELS: &[ModelEntry] = &[
12620 ModelEntry {
12621 id: "grok-2",
12622 name: "Grok 2",
12623 api: Api::OpenAiCompletions,
12624 provider: "xai",
12625 reasoning: false,
12626 input: &[InputModality::Text],
12627 cost_input: 0.0,
12628 cost_output: 0.0,
12629 cost_cache_read: 2.0,
12630 cost_cache_write: 0.0,
12631 context_window: 131072,
12632 max_tokens: 8192,
12633 },
12634 ModelEntry {
12635 id: "grok-2-1212",
12636 name: "Grok 2 (1212)",
12637 api: Api::OpenAiCompletions,
12638 provider: "xai",
12639 reasoning: false,
12640 input: &[InputModality::Text],
12641 cost_input: 0.0,
12642 cost_output: 0.0,
12643 cost_cache_read: 2.0,
12644 cost_cache_write: 0.0,
12645 context_window: 131072,
12646 max_tokens: 8192,
12647 },
12648 ModelEntry {
12649 id: "grok-2-latest",
12650 name: "Grok 2 Latest",
12651 api: Api::OpenAiCompletions,
12652 provider: "xai",
12653 reasoning: false,
12654 input: &[InputModality::Text],
12655 cost_input: 0.0,
12656 cost_output: 0.0,
12657 cost_cache_read: 2.0,
12658 cost_cache_write: 0.0,
12659 context_window: 131072,
12660 max_tokens: 8192,
12661 },
12662 ModelEntry {
12663 id: "grok-2-vision",
12664 name: "Grok 2 Vision",
12665 api: Api::OpenAiCompletions,
12666 provider: "xai",
12667 reasoning: false,
12668 input: &[InputModality::Text, InputModality::Image],
12669 cost_input: 0.0,
12670 cost_output: 0.0,
12671 cost_cache_read: 2.0,
12672 cost_cache_write: 0.0,
12673 context_window: 8192,
12674 max_tokens: 4096,
12675 },
12676 ModelEntry {
12677 id: "grok-2-vision-1212",
12678 name: "Grok 2 Vision (1212)",
12679 api: Api::OpenAiCompletions,
12680 provider: "xai",
12681 reasoning: false,
12682 input: &[InputModality::Text, InputModality::Image],
12683 cost_input: 0.0,
12684 cost_output: 0.0,
12685 cost_cache_read: 2.0,
12686 cost_cache_write: 0.0,
12687 context_window: 8192,
12688 max_tokens: 4096,
12689 },
12690 ModelEntry {
12691 id: "grok-2-vision-latest",
12692 name: "Grok 2 Vision Latest",
12693 api: Api::OpenAiCompletions,
12694 provider: "xai",
12695 reasoning: false,
12696 input: &[InputModality::Text, InputModality::Image],
12697 cost_input: 0.0,
12698 cost_output: 0.0,
12699 cost_cache_read: 2.0,
12700 cost_cache_write: 0.0,
12701 context_window: 8192,
12702 max_tokens: 4096,
12703 },
12704 ModelEntry {
12705 id: "grok-3",
12706 name: "Grok 3",
12707 api: Api::OpenAiCompletions,
12708 provider: "xai",
12709 reasoning: false,
12710 input: &[InputModality::Text],
12711 cost_input: 0.0,
12712 cost_output: 0.0,
12713 cost_cache_read: 0.75,
12714 cost_cache_write: 0.0,
12715 context_window: 131072,
12716 max_tokens: 8192,
12717 },
12718 ModelEntry {
12719 id: "grok-3-fast",
12720 name: "Grok 3 Fast",
12721 api: Api::OpenAiCompletions,
12722 provider: "xai",
12723 reasoning: false,
12724 input: &[InputModality::Text],
12725 cost_input: 0.0,
12726 cost_output: 0.0,
12727 cost_cache_read: 1.25,
12728 cost_cache_write: 0.0,
12729 context_window: 131072,
12730 max_tokens: 8192,
12731 },
12732 ModelEntry {
12733 id: "grok-3-fast-latest",
12734 name: "Grok 3 Fast Latest",
12735 api: Api::OpenAiCompletions,
12736 provider: "xai",
12737 reasoning: false,
12738 input: &[InputModality::Text],
12739 cost_input: 0.0,
12740 cost_output: 0.0,
12741 cost_cache_read: 1.25,
12742 cost_cache_write: 0.0,
12743 context_window: 131072,
12744 max_tokens: 8192,
12745 },
12746 ModelEntry {
12747 id: "grok-3-latest",
12748 name: "Grok 3 Latest",
12749 api: Api::OpenAiCompletions,
12750 provider: "xai",
12751 reasoning: false,
12752 input: &[InputModality::Text],
12753 cost_input: 0.0,
12754 cost_output: 0.0,
12755 cost_cache_read: 0.75,
12756 cost_cache_write: 0.0,
12757 context_window: 131072,
12758 max_tokens: 8192,
12759 },
12760 ModelEntry {
12761 id: "grok-3-mini",
12762 name: "Grok 3 Mini",
12763 api: Api::OpenAiCompletions,
12764 provider: "xai",
12765 reasoning: true,
12766 input: &[InputModality::Text],
12767 cost_input: 0.0,
12768 cost_output: 0.0,
12769 cost_cache_read: 0.075,
12770 cost_cache_write: 0.0,
12771 context_window: 131072,
12772 max_tokens: 8192,
12773 },
12774 ModelEntry {
12775 id: "grok-3-mini-fast",
12776 name: "Grok 3 Mini Fast",
12777 api: Api::OpenAiCompletions,
12778 provider: "xai",
12779 reasoning: true,
12780 input: &[InputModality::Text],
12781 cost_input: 0.0,
12782 cost_output: 0.0,
12783 cost_cache_read: 0.15,
12784 cost_cache_write: 0.0,
12785 context_window: 131072,
12786 max_tokens: 8192,
12787 },
12788 ModelEntry {
12789 id: "grok-3-mini-fast-latest",
12790 name: "Grok 3 Mini Fast Latest",
12791 api: Api::OpenAiCompletions,
12792 provider: "xai",
12793 reasoning: true,
12794 input: &[InputModality::Text],
12795 cost_input: 0.0,
12796 cost_output: 0.0,
12797 cost_cache_read: 0.15,
12798 cost_cache_write: 0.0,
12799 context_window: 131072,
12800 max_tokens: 8192,
12801 },
12802 ModelEntry {
12803 id: "grok-3-mini-latest",
12804 name: "Grok 3 Mini Latest",
12805 api: Api::OpenAiCompletions,
12806 provider: "xai",
12807 reasoning: true,
12808 input: &[InputModality::Text],
12809 cost_input: 0.0,
12810 cost_output: 0.0,
12811 cost_cache_read: 0.075,
12812 cost_cache_write: 0.0,
12813 context_window: 131072,
12814 max_tokens: 8192,
12815 },
12816 ModelEntry {
12817 id: "grok-4",
12818 name: "Grok 4",
12819 api: Api::OpenAiCompletions,
12820 provider: "xai",
12821 reasoning: true,
12822 input: &[InputModality::Text],
12823 cost_input: 0.0,
12824 cost_output: 0.0,
12825 cost_cache_read: 0.75,
12826 cost_cache_write: 0.0,
12827 context_window: 256000,
12828 max_tokens: 64000,
12829 },
12830 ModelEntry {
12831 id: "grok-4-1-fast",
12832 name: "Grok 4.1 Fast",
12833 api: Api::OpenAiCompletions,
12834 provider: "xai",
12835 reasoning: true,
12836 input: &[InputModality::Text, InputModality::Image],
12837 cost_input: 0.0,
12838 cost_output: 0.0,
12839 cost_cache_read: 0.05,
12840 cost_cache_write: 0.0,
12841 context_window: 2000000,
12842 max_tokens: 30000,
12843 },
12844 ModelEntry {
12845 id: "grok-4-1-fast-non-reasoning",
12846 name: "Grok 4.1 Fast (Non-Reasoning)",
12847 api: Api::OpenAiCompletions,
12848 provider: "xai",
12849 reasoning: false,
12850 input: &[InputModality::Text, InputModality::Image],
12851 cost_input: 0.0,
12852 cost_output: 0.0,
12853 cost_cache_read: 0.05,
12854 cost_cache_write: 0.0,
12855 context_window: 2000000,
12856 max_tokens: 30000,
12857 },
12858 ModelEntry {
12859 id: "grok-4-fast",
12860 name: "Grok 4 Fast",
12861 api: Api::OpenAiCompletions,
12862 provider: "xai",
12863 reasoning: true,
12864 input: &[InputModality::Text, InputModality::Image],
12865 cost_input: 0.0,
12866 cost_output: 0.0,
12867 cost_cache_read: 0.05,
12868 cost_cache_write: 0.0,
12869 context_window: 2000000,
12870 max_tokens: 30000,
12871 },
12872 ModelEntry {
12873 id: "grok-4-fast-non-reasoning",
12874 name: "Grok 4 Fast (Non-Reasoning)",
12875 api: Api::OpenAiCompletions,
12876 provider: "xai",
12877 reasoning: false,
12878 input: &[InputModality::Text, InputModality::Image],
12879 cost_input: 0.0,
12880 cost_output: 0.0,
12881 cost_cache_read: 0.05,
12882 cost_cache_write: 0.0,
12883 context_window: 2000000,
12884 max_tokens: 30000,
12885 },
12886 ModelEntry {
12887 id: "grok-4.20-0309-non-reasoning",
12888 name: "Grok 4.20 (Non-Reasoning)",
12889 api: Api::OpenAiCompletions,
12890 provider: "xai",
12891 reasoning: false,
12892 input: &[InputModality::Text, InputModality::Image],
12893 cost_input: 0.0,
12894 cost_output: 0.0,
12895 cost_cache_read: 0.2,
12896 cost_cache_write: 0.0,
12897 context_window: 2000000,
12898 max_tokens: 30000,
12899 },
12900 ModelEntry {
12901 id: "grok-4.20-0309-reasoning",
12902 name: "Grok 4.20 (Reasoning)",
12903 api: Api::OpenAiCompletions,
12904 provider: "xai",
12905 reasoning: true,
12906 input: &[InputModality::Text, InputModality::Image],
12907 cost_input: 0.0,
12908 cost_output: 0.0,
12909 cost_cache_read: 0.2,
12910 cost_cache_write: 0.0,
12911 context_window: 2000000,
12912 max_tokens: 30000,
12913 },
12914 ModelEntry {
12915 id: "grok-4.3",
12916 name: "Grok 4.3",
12917 api: Api::OpenAiCompletions,
12918 provider: "xai",
12919 reasoning: true,
12920 input: &[InputModality::Text, InputModality::Image],
12921 cost_input: 0.0,
12922 cost_output: 0.0,
12923 cost_cache_read: 0.2,
12924 cost_cache_write: 0.0,
12925 context_window: 1000000,
12926 max_tokens: 30000,
12927 },
12928 ModelEntry {
12929 id: "grok-beta",
12930 name: "Grok Beta",
12931 api: Api::OpenAiCompletions,
12932 provider: "xai",
12933 reasoning: false,
12934 input: &[InputModality::Text],
12935 cost_input: 0.0,
12936 cost_output: 0.0,
12937 cost_cache_read: 5.0,
12938 cost_cache_write: 0.0,
12939 context_window: 131072,
12940 max_tokens: 4096,
12941 },
12942 ModelEntry {
12943 id: "grok-code-fast-1",
12944 name: "Grok Code Fast 1",
12945 api: Api::OpenAiCompletions,
12946 provider: "xai",
12947 reasoning: true,
12948 input: &[InputModality::Text],
12949 cost_input: 0.0,
12950 cost_output: 0.0,
12951 cost_cache_read: 0.02,
12952 cost_cache_write: 0.0,
12953 context_window: 256000,
12954 max_tokens: 10000,
12955 },
12956 ModelEntry {
12957 id: "grok-vision-beta",
12958 name: "Grok Vision Beta",
12959 api: Api::OpenAiCompletions,
12960 provider: "xai",
12961 reasoning: false,
12962 input: &[InputModality::Text, InputModality::Image],
12963 cost_input: 0.0,
12964 cost_output: 0.0,
12965 cost_cache_read: 5.0,
12966 cost_cache_write: 0.0,
12967 context_window: 8192,
12968 max_tokens: 4096,
12969 },
12970 ModelEntry {
12971 id: "grok-build-0.1",
12972 name: "Grok Build 0.1",
12973 api: Api::OpenAiCompletions,
12974 provider: "xai",
12975 reasoning: true,
12976 input: &[InputModality::Text, InputModality::Image],
12977 cost_input: 1.0,
12978 cost_output: 2.0,
12979 cost_cache_read: 0.2,
12980 cost_cache_write: 0.0,
12981 context_window: 256000,
12982 max_tokens: 256000,
12983 },
12984];
12985
12986static XIAOMI_MODELS: &[ModelEntry] = &[
12988 ModelEntry {
12989 id: "mimo-v2-flash",
12990 name: "MiMo-V2-Flash",
12991 api: Api::AnthropicMessages,
12992 provider: "xiaomi",
12993 reasoning: true,
12994 input: &[InputModality::Text],
12995 cost_input: 0.0,
12996 cost_output: 0.0,
12997 cost_cache_read: 0.01,
12998 cost_cache_write: 0.0,
12999 context_window: 256000,
13000 max_tokens: 64000,
13001 },
13002 ModelEntry {
13003 id: "mimo-v2-omni",
13004 name: "MiMo-V2-Omni",
13005 api: Api::AnthropicMessages,
13006 provider: "xiaomi",
13007 reasoning: true,
13008 input: &[InputModality::Text, InputModality::Image],
13009 cost_input: 0.0,
13010 cost_output: 0.0,
13011 cost_cache_read: 0.08,
13012 cost_cache_write: 0.0,
13013 context_window: 256000,
13014 max_tokens: 128000,
13015 },
13016 ModelEntry {
13017 id: "mimo-v2-pro",
13018 name: "MiMo-V2-Pro",
13019 api: Api::AnthropicMessages,
13020 provider: "xiaomi",
13021 reasoning: true,
13022 input: &[InputModality::Text],
13023 cost_input: 0.0,
13024 cost_output: 0.0,
13025 cost_cache_read: 0.2,
13026 cost_cache_write: 0.0,
13027 context_window: 1000000,
13028 max_tokens: 128000,
13029 },
13030 ModelEntry {
13031 id: "mimo-v2.5",
13032 name: "MiMo-V2.5",
13033 api: Api::AnthropicMessages,
13034 provider: "xiaomi",
13035 reasoning: true,
13036 input: &[InputModality::Text],
13037 cost_input: 0.0,
13038 cost_output: 0.0,
13039 cost_cache_read: 0.08,
13040 cost_cache_write: 0.0,
13041 context_window: 1048576,
13042 max_tokens: 131072,
13043 },
13044 ModelEntry {
13045 id: "mimo-v2.5-pro",
13046 name: "MiMo-V2.5-Pro",
13047 api: Api::AnthropicMessages,
13048 provider: "xiaomi",
13049 reasoning: true,
13050 input: &[InputModality::Text, InputModality::Image],
13051 cost_input: 0.0,
13052 cost_output: 0.0,
13053 cost_cache_read: 0.2,
13054 cost_cache_write: 0.0,
13055 context_window: 1048576,
13056 max_tokens: 131072,
13057 },
13058];
13059
13060static ZAI_MODELS: &[ModelEntry] = &[
13062 ModelEntry {
13063 id: "glm-4.5-air",
13064 name: "GLM-4.5-Air",
13065 api: Api::OpenAiCompletions,
13066 provider: "zai",
13067 reasoning: true,
13068 input: &[InputModality::Text],
13069 cost_input: 0.0,
13070 cost_output: 0.0,
13071 cost_cache_read: 0.0,
13072 cost_cache_write: 0.0,
13073 context_window: 131072,
13074 max_tokens: 98304,
13075 },
13076 ModelEntry {
13077 id: "glm-4.7",
13078 name: "GLM-4.7",
13079 api: Api::OpenAiCompletions,
13080 provider: "zai",
13081 reasoning: true,
13082 input: &[InputModality::Text],
13083 cost_input: 0.0,
13084 cost_output: 0.0,
13085 cost_cache_read: 0.0,
13086 cost_cache_write: 0.0,
13087 context_window: 204800,
13088 max_tokens: 131072,
13089 },
13090 ModelEntry {
13091 id: "glm-5-turbo",
13092 name: "GLM-5-Turbo",
13093 api: Api::OpenAiCompletions,
13094 provider: "zai",
13095 reasoning: true,
13096 input: &[InputModality::Text],
13097 cost_input: 0.0,
13098 cost_output: 0.0,
13099 cost_cache_read: 0.0,
13100 cost_cache_write: 0.0,
13101 context_window: 200000,
13102 max_tokens: 131072,
13103 },
13104 ModelEntry {
13105 id: "glm-5.1",
13106 name: "GLM-5.1",
13107 api: Api::OpenAiCompletions,
13108 provider: "zai",
13109 reasoning: true,
13110 input: &[InputModality::Text],
13111 cost_input: 0.0,
13112 cost_output: 0.0,
13113 cost_cache_read: 0.0,
13114 cost_cache_write: 0.0,
13115 context_window: 200000,
13116 max_tokens: 131072,
13117 },
13118 ModelEntry {
13119 id: "glm-5v-turbo",
13120 name: "glm-5v-turbo",
13121 api: Api::OpenAiCompletions,
13122 provider: "zai",
13123 reasoning: true,
13124 input: &[InputModality::Text, InputModality::Image],
13125 cost_input: 0.0,
13126 cost_output: 0.0,
13127 cost_cache_read: 0.0,
13128 cost_cache_write: 0.0,
13129 context_window: 200000,
13130 max_tokens: 131072,
13131 },
13132];
13133
13134static TOGETHER_MODELS: &[ModelEntry] = &[
13137 ModelEntry {
13138 id: "Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
13139 name: "Qwen3 235B A22B Instruct 2507 FP8",
13140 api: Api::OpenAiCompletions,
13141 provider: "together",
13142 reasoning: true,
13143 input: &[InputModality::Text],
13144 cost_input: 0.2,
13145 cost_output: 0.6,
13146 cost_cache_read: 0.0,
13147 cost_cache_write: 0.0,
13148 context_window: 262144,
13149 max_tokens: 262144,
13150 },
13151 ModelEntry {
13152 id: "Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
13153 name: "Qwen3 Coder 480B A35B Instruct",
13154 api: Api::OpenAiCompletions,
13155 provider: "together",
13156 reasoning: false,
13157 input: &[InputModality::Text],
13158 cost_input: 2.0,
13159 cost_output: 2.0,
13160 cost_cache_read: 0.0,
13161 cost_cache_write: 0.0,
13162 context_window: 262144,
13163 max_tokens: 262144,
13164 },
13165 ModelEntry {
13166 id: "Qwen/Qwen3-Coder-Next-FP8",
13167 name: "Qwen3 Coder Next FP8",
13168 api: Api::OpenAiCompletions,
13169 provider: "together",
13170 reasoning: true,
13171 input: &[InputModality::Text],
13172 cost_input: 0.5,
13173 cost_output: 1.2,
13174 cost_cache_read: 0.0,
13175 cost_cache_write: 0.0,
13176 context_window: 262144,
13177 max_tokens: 262144,
13178 },
13179 ModelEntry {
13180 id: "Qwen/Qwen3.6-Plus",
13181 name: "Qwen3.6 Plus",
13182 api: Api::OpenAiCompletions,
13183 provider: "together",
13184 reasoning: true,
13185 input: &[InputModality::Text],
13186 cost_input: 0.5,
13187 cost_output: 3.0,
13188 cost_cache_read: 0.0,
13189 cost_cache_write: 0.0,
13190 context_window: 1000000,
13191 max_tokens: 500000,
13192 },
13193 ModelEntry {
13194 id: "Qwen/Qwen3.7-Max",
13195 name: "Qwen3.7 Max",
13196 api: Api::OpenAiCompletions,
13197 provider: "together",
13198 reasoning: true,
13199 input: &[InputModality::Text],
13200 cost_input: 2.5,
13201 cost_output: 7.5,
13202 cost_cache_read: 0.0,
13203 cost_cache_write: 0.0,
13204 context_window: 1000000,
13205 max_tokens: 500000,
13206 },
13207 ModelEntry {
13208 id: "deepseek-ai/DeepSeek-V3",
13209 name: "DeepSeek V3",
13210 api: Api::OpenAiCompletions,
13211 provider: "together",
13212 reasoning: true,
13213 input: &[InputModality::Text],
13214 cost_input: 1.25,
13215 cost_output: 1.25,
13216 cost_cache_read: 0.0,
13217 cost_cache_write: 0.0,
13218 context_window: 131072,
13219 max_tokens: 131072,
13220 },
13221 ModelEntry {
13222 id: "deepseek-ai/DeepSeek-V3-1",
13223 name: "DeepSeek V3.1",
13224 api: Api::OpenAiCompletions,
13225 provider: "together",
13226 reasoning: true,
13227 input: &[InputModality::Text],
13228 cost_input: 0.6,
13229 cost_output: 1.7,
13230 cost_cache_read: 0.0,
13231 cost_cache_write: 0.0,
13232 context_window: 131072,
13233 max_tokens: 131072,
13234 },
13235 ModelEntry {
13236 id: "essentialai/Rnj-1-Instruct",
13237 name: "Rnj-1 Instruct",
13238 api: Api::OpenAiCompletions,
13239 provider: "together",
13240 reasoning: false,
13241 input: &[InputModality::Text],
13242 cost_input: 0.15,
13243 cost_output: 0.15,
13244 cost_cache_read: 0.0,
13245 cost_cache_write: 0.0,
13246 context_window: 32768,
13247 max_tokens: 32768,
13248 },
13249 ModelEntry {
13250 id: "google/gemma-4-31B-it",
13251 name: "Gemma 4 31B Instruct",
13252 api: Api::OpenAiCompletions,
13253 provider: "together",
13254 reasoning: true,
13255 input: &[InputModality::Text, InputModality::Image],
13256 cost_input: 0.2,
13257 cost_output: 0.5,
13258 cost_cache_read: 0.0,
13259 cost_cache_write: 0.0,
13260 context_window: 262144,
13261 max_tokens: 131072,
13262 },
13263 ModelEntry {
13264 id: "meta-llama/Llama-3.3-70B-Instruct-Turbo",
13265 name: "Llama 3.3 70B",
13266 api: Api::OpenAiCompletions,
13267 provider: "together",
13268 reasoning: false,
13269 input: &[InputModality::Text],
13270 cost_input: 0.88,
13271 cost_output: 0.88,
13272 cost_cache_read: 0.0,
13273 cost_cache_write: 0.0,
13274 context_window: 131072,
13275 max_tokens: 131072,
13276 },
13277];
13278
13279static ALL_PROVIDER_MODELS: &[(&str, &[ModelEntry])] = &[
13280 ("amazon-bedrock", AMAZON_BEDROCK_MODELS),
13281 ("anthropic", ANTHROPIC_MODELS),
13282 ("azure-openai-responses", AZURE_OPENAI_RESPONSES_MODELS),
13283 ("cerebras", CEREBRAS_MODELS),
13284 ("cloudflare-ai-gateway", CLOUDFLARE_AI_GATEWAY_MODELS),
13285 ("cloudflare-workers-ai", CLOUDFLARE_WORKERS_AI_MODELS),
13286 ("deepseek", DEEPSEEK_MODELS),
13287 ("fireworks", FIREWORKS_MODELS),
13288 ("github-copilot", GITHUB_COPILOT_MODELS),
13289 ("google", GOOGLE_MODELS),
13290 ("google-vertex", GOOGLE_VERTEX_MODELS),
13291 ("groq", GROQ_MODELS),
13292 ("huggingface", HUGGINGFACE_MODELS),
13293 ("kimi-coding", KIMI_CODING_MODELS),
13294 ("minimax", MINIMAX_MODELS),
13295 ("minimax-cn", MINIMAX_CN_MODELS),
13296 ("mistral", MISTRAL_MODELS),
13297 ("moonshotai", MOONSHOTAI_MODELS),
13298 ("moonshotai-cn", MOONSHOTAI_CN_MODELS),
13299 ("openai", OPENAI_MODELS),
13300 ("openai-codex", OPENAI_CODEX_MODELS),
13301 ("opencode", OPENCODE_MODELS),
13302 ("opencode-go", OPENCODE_GO_MODELS),
13303 ("openrouter", OPENROUTER_MODELS),
13304 ("vercel-ai-gateway", VERCEL_AI_GATEWAY_MODELS),
13305 ("xai", XAI_MODELS),
13306 ("xiaomi", XIAOMI_MODELS),
13307 ("zai", ZAI_MODELS),
13308 ("together", TOGETHER_MODELS),
13309];
13310
13311static MODEL_INDEX: OnceLock<HashMap<&'static str, &'static ModelEntry>> = OnceLock::new();
13315
13316fn model_index() -> &'static HashMap<&'static str, &'static ModelEntry> {
13317 MODEL_INDEX.get_or_init(|| {
13318 let mut map = HashMap::with_capacity(model_count());
13319 for (provider, models) in ALL_PROVIDER_MODELS.iter() {
13320 for model in models.iter() {
13321 let key = format!("{}/{}", provider, model.id);
13322 let key_static: &'static str = Box::leak(key.into_boxed_str());
13326 map.insert(key_static, model);
13327 }
13328 }
13329 map
13330 })
13331}
13332
13333static PROVIDER_INDEX: OnceLock<HashMap<&'static str, &'static [ModelEntry]>> = OnceLock::new();
13335
13336fn provider_index() -> &'static HashMap<&'static str, &'static [ModelEntry]> {
13337 PROVIDER_INDEX.get_or_init(|| {
13338 let mut map = HashMap::with_capacity(ALL_PROVIDER_MODELS.len());
13339 for (provider, models) in ALL_PROVIDER_MODELS.iter() {
13340 map.insert(*provider, *models);
13341 }
13342 map
13343 })
13344}
13345
13346pub fn get_model_entry(provider: &str, id: &str) -> Option<&'static ModelEntry> {
13366 let key = format!("{}/{}", provider, id);
13367 model_index().get(key.as_str()).copied()
13368}
13369
13370pub fn get_provider_models(provider: &str) -> &'static [ModelEntry] {
13380 provider_index().get(provider).copied().unwrap_or(&[])
13381}
13382
13383pub fn get_all_models() -> impl Iterator<Item = &'static ModelEntry> {
13387 ALL_PROVIDER_MODELS
13388 .iter()
13389 .flat_map(|(_, models)| models.iter())
13390}
13391
13392pub fn model_count() -> usize {
13394 ALL_PROVIDER_MODELS.iter().map(|(_, m)| m.len()).sum()
13395}
13396
13397pub fn get_providers() -> Vec<&'static str> {
13399 ALL_PROVIDER_MODELS.iter().map(|(name, _)| *name).collect()
13400}
13401
13402pub fn search_models(pattern: &str) -> Vec<&'static ModelEntry> {
13404 let lower = pattern.to_lowercase();
13405 get_all_models()
13406 .filter(|m| m.id.to_lowercase().contains(&lower) || m.name.to_lowercase().contains(&lower))
13407 .collect()
13408}
13409
13410pub fn get_reasoning_models() -> Vec<&'static ModelEntry> {
13412 get_all_models().filter(|m| m.reasoning).collect()
13413}
13414
13415pub fn get_vision_models() -> Vec<&'static ModelEntry> {
13417 get_all_models().filter(|m| m.supports_vision()).collect()
13418}
13419
13420pub fn get_cheapest_models(limit: usize) -> Vec<&'static ModelEntry> {
13422 let mut all: Vec<_> = get_all_models().collect();
13423 all.sort_by(|a, b| {
13424 a.cost_input
13425 .partial_cmp(&b.cost_input)
13426 .unwrap_or(std::cmp::Ordering::Equal)
13427 });
13428 all.truncate(limit);
13429 all
13430}
13431
13432#[cfg(test)]
13433mod tests {
13434 use super::*;
13435
13436 #[test]
13437 fn test_total_model_count() {
13438 let count = model_count();
13439 assert!(count >= 934, "Expected at least 934 models, got {}", count);
13440 }
13441
13442 #[test]
13443 fn test_get_anthropic_model() {
13444 let m = get_model_entry("anthropic", "claude-3-5-sonnet-20240620");
13445 assert!(m.is_some(), "Claude Sonnet 3.5 should exist");
13446 let m = m.unwrap();
13447 assert_eq!(m.provider, "anthropic");
13448 assert!(m.context_window >= 200_000);
13449 }
13450
13451 #[test]
13452 fn test_get_openai_model() {
13453 let m = get_model_entry("openai", "gpt-4o");
13454 assert!(m.is_some(), "GPT-4o should exist");
13455 let m = m.unwrap();
13456 assert_eq!(m.provider, "openai");
13457 }
13458
13459 #[test]
13460 fn test_provider_models() {
13461 let anthropic = get_provider_models("anthropic");
13462 assert!(!anthropic.is_empty(), "Anthropic should have models");
13463 assert!(anthropic.iter().all(|m| m.provider == "anthropic"));
13464
13465 let unknown = get_provider_models("nonexistent-provider");
13466 assert!(unknown.is_empty());
13467 }
13468
13469 #[test]
13470 fn test_search_models() {
13471 let results = search_models("claude");
13472 assert!(!results.is_empty(), "Should find Claude models");
13473 assert!(results
13474 .iter()
13475 .all(|m| m.name.to_lowercase().contains("claude")
13476 || m.id.to_lowercase().contains("claude")));
13477 }
13478
13479 #[test]
13480 fn test_all_providers() {
13481 let providers = get_providers();
13482 assert!(providers.contains(&"openai"), "Should have openai");
13483 assert!(providers.contains(&"anthropic"), "Should have anthropic");
13484 }
13485
13486 #[test]
13487 fn test_reasoning_models() {
13488 let reasoning = get_reasoning_models();
13489 assert!(!reasoning.is_empty(), "Should have reasoning models");
13490 assert!(reasoning.iter().all(|m| m.reasoning));
13491 }
13492
13493 #[test]
13494 fn test_vision_models() {
13495 let vision = get_vision_models();
13496 assert!(!vision.is_empty(), "Should have vision models");
13497 assert!(vision.iter().all(|m| m.supports_vision()));
13498 }
13499
13500 #[test]
13501 fn test_cheapest_models() {
13502 let cheapest = get_cheapest_models(5);
13503 assert_eq!(cheapest.len(), 5.min(model_count()));
13504 for i in 1..cheapest.len() {
13505 assert!(cheapest[i].cost_input >= cheapest[i - 1].cost_input);
13506 }
13507 }
13508}