diff --git a/api/v1/meta.json b/api/v1/meta.json index 007faf7..8fff9ee 100644 --- a/api/v1/meta.json +++ b/api/v1/meta.json @@ -1,10 +1,10 @@ { "dataset_name": "AICostBudget AI API Pricing Dataset", "dataset_version": "1.0.0", - "generated_at": "2026-07-27T00:00:00Z", + "generated_at": "2026-07-29T09:50:41Z", "homepage": "https://aicostbudget.com", - "last_verified_at": "2026-07-27T00:00:00Z", - "model_count": 21, - "official_source_count": 10, + "last_verified_at": "2026-07-29T00:00:00Z", + "model_count": 22, + "official_source_count": 11, "provider_count": 7 } diff --git a/api/v1/models/anthropic/claude-haiku-4.5.json b/api/v1/models/anthropic/claude-haiku-4.5.json index c201ead..9372ead 100644 --- a/api/v1/models/anthropic/claude-haiku-4.5.json +++ b/api/v1/models/anthropic/claude-haiku-4.5.json @@ -11,6 +11,7 @@ "batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, diff --git a/api/v1/models/anthropic/claude-opus-4.8.json b/api/v1/models/anthropic/claude-opus-4.8.json index d5e2db9..aea7ef0 100644 --- a/api/v1/models/anthropic/claude-opus-4.8.json +++ b/api/v1/models/anthropic/claude-opus-4.8.json @@ -11,6 +11,7 @@ "batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, diff --git a/api/v1/models/anthropic/claude-opus-5.json b/api/v1/models/anthropic/claude-opus-5.json new file mode 100644 index 0000000..2cd74de --- /dev/null +++ b/api/v1/models/anthropic/claude-opus-5.json @@ -0,0 +1,23 @@ +{ + "accessed_at": "2026-07-29T00:00:00Z", + "display_name": "Claude Opus 5", + "effective_from": "2026-07-24", + "last_verified_at": "2026-07-29T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-5", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" +} diff --git a/api/v1/models/anthropic/claude-sonnet-4.6.json b/api/v1/models/anthropic/claude-sonnet-4.6.json index e9a5590..d67d4c9 100644 --- a/api/v1/models/anthropic/claude-sonnet-4.6.json +++ b/api/v1/models/anthropic/claude-sonnet-4.6.json @@ -11,6 +11,7 @@ "batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, + "cache_write_1h": null, "cached_input": 0.3, "currency": "USD", "input": 3.0, diff --git a/api/v1/models/anthropic/claude-sonnet-5-intro.json b/api/v1/models/anthropic/claude-sonnet-5-intro.json index af4499a..9397a4d 100644 --- a/api/v1/models/anthropic/claude-sonnet-5-intro.json +++ b/api/v1/models/anthropic/claude-sonnet-5-intro.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 2.0, diff --git a/api/v1/models/cohere/aya-expanse-32b.json b/api/v1/models/cohere/aya-expanse-32b.json index f8ba278..9ab9431 100644 --- a/api/v1/models/cohere/aya-expanse-32b.json +++ b/api/v1/models/cohere/aya-expanse-32b.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 0.5, diff --git a/api/v1/models/cohere/command-a-plus.json b/api/v1/models/cohere/command-a-plus.json index 0d4f45b..3ed85f3 100644 --- a/api/v1/models/cohere/command-a-plus.json +++ b/api/v1/models/cohere/command-a-plus.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": null, diff --git a/api/v1/models/cohere/command-r-plus-08-2024.json b/api/v1/models/cohere/command-r-plus-08-2024.json index d10294b..2bd0624 100644 --- a/api/v1/models/cohere/command-r-plus-08-2024.json +++ b/api/v1/models/cohere/command-r-plus-08-2024.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 2.5, diff --git a/api/v1/models/deepseek/deepseek-v4-flash.json b/api/v1/models/deepseek/deepseek-v4-flash.json index 52f31ad..0079733 100644 --- a/api/v1/models/deepseek/deepseek-v4-flash.json +++ b/api/v1/models/deepseek/deepseek-v4-flash.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, diff --git a/api/v1/models/deepseek/deepseek-v4-pro.json b/api/v1/models/deepseek/deepseek-v4-pro.json index 1d6a1f6..45c0edc 100644 --- a/api/v1/models/deepseek/deepseek-v4-pro.json +++ b/api/v1/models/deepseek/deepseek-v4-pro.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, diff --git a/api/v1/models/google-gemini/gemini-2.5-flash.json b/api/v1/models/google-gemini/gemini-2.5-flash.json index 91bea1e..3cfc2c8 100644 --- a/api/v1/models/google-gemini/gemini-2.5-flash.json +++ b/api/v1/models/google-gemini/gemini-2.5-flash.json @@ -11,6 +11,7 @@ "batch_input": 0.15, "batch_output": 1.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, diff --git a/api/v1/models/google-gemini/gemini-2.5-pro.json b/api/v1/models/google-gemini/gemini-2.5-pro.json index 32997b2..f33ee39 100644 --- a/api/v1/models/google-gemini/gemini-2.5-pro.json +++ b/api/v1/models/google-gemini/gemini-2.5-pro.json @@ -11,6 +11,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, diff --git a/api/v1/models/mistral-ai/mistral-large.json b/api/v1/models/mistral-ai/mistral-large.json index 109a096..76d6a93 100644 --- a/api/v1/models/mistral-ai/mistral-large.json +++ b/api/v1/models/mistral-ai/mistral-large.json @@ -11,6 +11,7 @@ "batch_input": 0.25, "batch_output": 0.75, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, diff --git a/api/v1/models/openai/gpt-4.1.json b/api/v1/models/openai/gpt-4.1.json index 6bc6e29..d62e71f 100644 --- a/api/v1/models/openai/gpt-4.1.json +++ b/api/v1/models/openai/gpt-4.1.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, diff --git a/api/v1/models/openai/gpt-5.4-mini.json b/api/v1/models/openai/gpt-5.4-mini.json index 0207b01..e58e6a8 100644 --- a/api/v1/models/openai/gpt-5.4-mini.json +++ b/api/v1/models/openai/gpt-5.4-mini.json @@ -11,6 +11,7 @@ "batch_input": 0.375, "batch_output": 2.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, diff --git a/api/v1/models/openai/gpt-5.5.json b/api/v1/models/openai/gpt-5.5.json index 07f4d09..dc96c8c 100644 --- a/api/v1/models/openai/gpt-5.5.json +++ b/api/v1/models/openai/gpt-5.5.json @@ -11,6 +11,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, diff --git a/api/v1/models/openai/gpt-5.6-luna.json b/api/v1/models/openai/gpt-5.6-luna.json index 12aecbb..46ab3c0 100644 --- a/api/v1/models/openai/gpt-5.6-luna.json +++ b/api/v1/models/openai/gpt-5.6-luna.json @@ -11,6 +11,7 @@ "batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, diff --git a/api/v1/models/openai/gpt-5.6-sol.json b/api/v1/models/openai/gpt-5.6-sol.json index 8fe085e..d364d20 100644 --- a/api/v1/models/openai/gpt-5.6-sol.json +++ b/api/v1/models/openai/gpt-5.6-sol.json @@ -11,6 +11,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, diff --git a/api/v1/models/openai/gpt-5.6-terra.json b/api/v1/models/openai/gpt-5.6-terra.json index 3531a31..71f25ce 100644 --- a/api/v1/models/openai/gpt-5.6-terra.json +++ b/api/v1/models/openai/gpt-5.6-terra.json @@ -11,6 +11,7 @@ "batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, + "cache_write_1h": null, "cached_input": 0.25, "currency": "USD", "input": 2.5, diff --git a/api/v1/models/openai/gpt-5.json b/api/v1/models/openai/gpt-5.json index 1ba3653..ef6a457 100644 --- a/api/v1/models/openai/gpt-5.json +++ b/api/v1/models/openai/gpt-5.json @@ -11,6 +11,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, diff --git a/api/v1/models/openai/o3.json b/api/v1/models/openai/o3.json index 4f9c4e3..19c566f 100644 --- a/api/v1/models/openai/o3.json +++ b/api/v1/models/openai/o3.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, diff --git a/api/v1/models/xai/grok-4.3.json b/api/v1/models/xai/grok-4.3.json index f4d16b8..3ab0744 100644 --- a/api/v1/models/xai/grok-4.3.json +++ b/api/v1/models/xai/grok-4.3.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 2.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, diff --git a/api/v1/prices.csv b/api/v1/prices.csv index 47b95df..ef52ce6 100644 --- a/api/v1/prices.csv +++ b/api/v1/prices.csv @@ -1,22 +1,23 @@ -provider_id,model_id,display_name,model_family,status,currency,unit,input,output,cached_input,cache_write,batch_input,batch_output,official_source_url,accessed_at,last_verified_at,effective_from,notes -anthropic,claude-haiku-4.5,Claude Haiku 4.5,Claude Haiku,active,USD,1M tokens,1.0,5.0,0.1,1.25,0.5,2.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. -anthropic,claude-opus-4.8,Claude Opus 4.8,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,2.5,12.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate." -anthropic,claude-sonnet-4.6,Claude Sonnet 4.6,Claude Sonnet,active,USD,1M tokens,3.0,15.0,0.3,3.75,1.5,7.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. -anthropic,claude-sonnet-5-intro,Claude Sonnet 5 introductory pricing,Claude Sonnet,active,USD,1M tokens,2.0,10.0,0.2,2.5,1.0,5.0,https://www.anthropic.com/news/claude-sonnet-5,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2026-06-30,Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates. -cohere,aya-expanse-32b,Aya Expanse 32B,Aya,active,USD,1M tokens,0.5,1.5,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output. -cohere,command-a-plus,Command A+,Command,active,USD,1M tokens,,,,,,,https://docs.cohere.com/docs/command-a-plus,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled." -cohere,command-r-plus-08-2024,Command R+ 08-2024,Command R,active,USD,1M tokens,2.5,10.0,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2024-08-01,Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens. -deepseek,deepseek-v4-flash,DeepSeek V4 Flash,DeepSeek V4,active,USD,1M tokens,0.14,0.28,0.0028,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. -deepseek,deepseek-v4-pro,DeepSeek V4 Pro,DeepSeek V4,active,USD,1M tokens,0.435,0.87,0.003625,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. -google-gemini,gemini-2.5-flash,Gemini 2.5 Flash,Gemini 2.5,active,USD,1M tokens,0.3,2.5,0.03,,0.15,1.25,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for text/image/video input; Google lists separate audio rates in the official pricing table. -google-gemini,gemini-2.5-pro,Gemini 2.5 Pro,Gemini 2.5,active,USD,1M tokens,1.25,10.0,0.125,,0.625,5.0,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table. -mistral-ai,mistral-large,Mistral Large 3,Mistral Large,active,USD,1M tokens,0.5,1.5,0.05,,0.25,0.75,https://mistral.ai/pricing/api/,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount. -openai,gpt-4.1,GPT-4.1,GPT-4.1,active,USD,1M tokens,2.0,8.0,0.5,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -openai,gpt-5,GPT-5,GPT-5,active,USD,1M tokens,1.25,10.0,0.125,,0.625,5.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -openai,gpt-5.4-mini,GPT-5.4 mini,GPT-5.4,active,USD,1M tokens,0.75,4.5,0.075,,0.375,2.25,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -openai,gpt-5.5,GPT-5.5,GPT-5.5,active,USD,1M tokens,5.0,30.0,0.5,,2.5,15.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown. -openai,gpt-5.6-luna,GPT-5.6 Luna,GPT-5.6,active,USD,1M tokens,1.0,6.0,0.1,1.25,0.5,3.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." -openai,gpt-5.6-sol,GPT-5.6 Sol,GPT-5.6,active,USD,1M tokens,5.0,30.0,0.5,6.25,2.5,15.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." -openai,gpt-5.6-terra,GPT-5.6 Terra,GPT-5.6,active,USD,1M tokens,2.5,15.0,0.25,3.125,1.25,7.5,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." -openai,o3,o3,o-series,active,USD,1M tokens,2.0,8.0,0.5,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -xai,grok-4.3,Grok 4.3,Grok 4,active,USD,1M tokens,1.25,2.5,0.2,,1.0,2.0,https://docs.x.ai/developers/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields. +provider_id,model_id,display_name,model_family,status,currency,unit,input,output,cached_input,cache_write,cache_write_1h,batch_input,batch_output,official_source_url,accessed_at,last_verified_at,effective_from,notes +anthropic,claude-haiku-4.5,Claude Haiku 4.5,Claude Haiku,active,USD,1M tokens,1.0,5.0,0.1,1.25,,0.5,2.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. +anthropic,claude-opus-4.8,Claude Opus 4.8,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,,2.5,12.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate." +anthropic,claude-opus-5,Claude Opus 5,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,10.0,2.5,12.5,https://platform.claude.com/docs/en/about-claude/pricing,2026-07-29T00:00:00Z,2026-07-29T00:00:00Z,2026-07-24,"Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing." +anthropic,claude-sonnet-4.6,Claude Sonnet 4.6,Claude Sonnet,active,USD,1M tokens,3.0,15.0,0.3,3.75,,1.5,7.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. +anthropic,claude-sonnet-5-intro,Claude Sonnet 5 introductory pricing,Claude Sonnet,active,USD,1M tokens,2.0,10.0,0.2,2.5,,1.0,5.0,https://www.anthropic.com/news/claude-sonnet-5,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2026-06-30,Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates. +cohere,aya-expanse-32b,Aya Expanse 32B,Aya,active,USD,1M tokens,0.5,1.5,,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output. +cohere,command-a-plus,Command A+,Command,active,USD,1M tokens,,,,,,,,https://docs.cohere.com/docs/command-a-plus,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled." +cohere,command-r-plus-08-2024,Command R+ 08-2024,Command R,active,USD,1M tokens,2.5,10.0,,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2024-08-01,Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens. +deepseek,deepseek-v4-flash,DeepSeek V4 Flash,DeepSeek V4,active,USD,1M tokens,0.14,0.28,0.0028,,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. +deepseek,deepseek-v4-pro,DeepSeek V4 Pro,DeepSeek V4,active,USD,1M tokens,0.435,0.87,0.003625,,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. +google-gemini,gemini-2.5-flash,Gemini 2.5 Flash,Gemini 2.5,active,USD,1M tokens,0.3,2.5,0.03,,,0.15,1.25,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for text/image/video input; Google lists separate audio rates in the official pricing table. +google-gemini,gemini-2.5-pro,Gemini 2.5 Pro,Gemini 2.5,active,USD,1M tokens,1.25,10.0,0.125,,,0.625,5.0,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table. +mistral-ai,mistral-large,Mistral Large 3,Mistral Large,active,USD,1M tokens,0.5,1.5,0.05,,,0.25,0.75,https://mistral.ai/pricing/api/,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount. +openai,gpt-4.1,GPT-4.1,GPT-4.1,active,USD,1M tokens,2.0,8.0,0.5,,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5,GPT-5,GPT-5,active,USD,1M tokens,1.25,10.0,0.125,,,0.625,5.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5.4-mini,GPT-5.4 mini,GPT-5.4,active,USD,1M tokens,0.75,4.5,0.075,,,0.375,2.25,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5.5,GPT-5.5,GPT-5.5,active,USD,1M tokens,5.0,30.0,0.5,,,2.5,15.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown. +openai,gpt-5.6-luna,GPT-5.6 Luna,GPT-5.6,active,USD,1M tokens,1.0,6.0,0.1,1.25,,0.5,3.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,gpt-5.6-sol,GPT-5.6 Sol,GPT-5.6,active,USD,1M tokens,5.0,30.0,0.5,6.25,,2.5,15.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,gpt-5.6-terra,GPT-5.6 Terra,GPT-5.6,active,USD,1M tokens,2.5,15.0,0.25,3.125,,1.25,7.5,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,o3,o3,o-series,active,USD,1M tokens,2.0,8.0,0.5,,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +xai,grok-4.3,Grok 4.3,Grok 4,active,USD,1M tokens,1.25,2.5,0.2,,,1.0,2.0,https://docs.x.ai/developers/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields. diff --git a/api/v1/prices.json b/api/v1/prices.json index 21cf181..0a8336c 100644 --- a/api/v1/prices.json +++ b/api/v1/prices.json @@ -2,14 +2,14 @@ "dataset_name": "AICostBudget AI API Pricing Dataset", "dataset_version": "1.0.0", "description": "Open, machine-readable pricing data for LLM and AI APIs.", - "generated_at": "2026-07-27T00:00:00Z", + "generated_at": "2026-07-29T09:50:41Z", "homepage": "https://aicostbudget.com", - "last_verified_at": "2026-07-27T00:00:00Z", + "last_verified_at": "2026-07-29T00:00:00Z", "licenses": { "code": "MIT", "data": "CC BY 4.0" }, - "model_count": 21, + "model_count": 22, "models": [ { "accessed_at": "2026-07-27T00:00:00Z", @@ -24,6 +24,7 @@ "batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -46,6 +47,30 @@ "batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-29T00:00:00Z", + "display_name": "Claude Opus 5", + "effective_from": "2026-07-24", + "last_verified_at": "2026-07-29T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-5", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -68,6 +93,7 @@ "batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, + "cache_write_1h": null, "cached_input": 0.3, "currency": "USD", "input": 3.0, @@ -90,6 +116,7 @@ "batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 2.0, @@ -112,6 +139,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 0.5, @@ -134,6 +162,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": null, @@ -156,6 +185,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 2.5, @@ -178,6 +208,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, @@ -200,6 +231,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, @@ -222,6 +254,7 @@ "batch_input": 0.15, "batch_output": 1.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, @@ -244,6 +277,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, @@ -266,6 +300,7 @@ "batch_input": 0.25, "batch_output": 0.75, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, @@ -288,6 +323,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, @@ -310,6 +346,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, @@ -332,6 +369,7 @@ "batch_input": 0.375, "batch_output": 2.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, @@ -354,6 +392,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -376,6 +415,7 @@ "batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -398,6 +438,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -420,6 +461,7 @@ "batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, + "cache_write_1h": null, "cached_input": 0.25, "currency": "USD", "input": 2.5, @@ -442,6 +484,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, @@ -464,6 +507,7 @@ "batch_input": 1.0, "batch_output": 2.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, @@ -474,7 +518,7 @@ "status": "active" } ], - "official_source_count": 10, + "official_source_count": 11, "official_sources": [ "https://ai.google.dev/gemini-api/docs/pricing", "https://api-docs.deepseek.com/quick_start/pricing", @@ -484,6 +528,7 @@ "https://docs.cohere.com/docs/command-a-plus", "https://docs.x.ai/developers/pricing", "https://mistral.ai/pricing/api/", + "https://platform.claude.com/docs/en/about-claude/pricing", "https://platform.openai.com/docs/pricing", "https://www.anthropic.com/news/claude-sonnet-5" ], diff --git a/api/v1/providers/anthropic.json b/api/v1/providers/anthropic.json index 5e7be6c..57bc97f 100644 --- a/api/v1/providers/anthropic.json +++ b/api/v1/providers/anthropic.json @@ -15,6 +15,7 @@ "batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -37,6 +38,30 @@ "batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-29T00:00:00Z", + "display_name": "Claude Opus 5", + "effective_from": "2026-07-24", + "last_verified_at": "2026-07-29T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-5", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -59,6 +84,7 @@ "batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, + "cache_write_1h": null, "cached_input": 0.3, "currency": "USD", "input": 3.0, @@ -81,6 +107,7 @@ "batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 2.0, diff --git a/api/v1/providers/cohere.json b/api/v1/providers/cohere.json index c6cadff..a4ddb5a 100644 --- a/api/v1/providers/cohere.json +++ b/api/v1/providers/cohere.json @@ -15,6 +15,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 0.5, @@ -37,6 +38,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": null, @@ -59,6 +61,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 2.5, diff --git a/api/v1/providers/deepseek.json b/api/v1/providers/deepseek.json index 16bd173..cf40f41 100644 --- a/api/v1/providers/deepseek.json +++ b/api/v1/providers/deepseek.json @@ -15,6 +15,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, @@ -37,6 +38,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, diff --git a/api/v1/providers/google-gemini.json b/api/v1/providers/google-gemini.json index e28af5a..492ee40 100644 --- a/api/v1/providers/google-gemini.json +++ b/api/v1/providers/google-gemini.json @@ -15,6 +15,7 @@ "batch_input": 0.15, "batch_output": 1.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, @@ -37,6 +38,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, diff --git a/api/v1/providers/mistral-ai.json b/api/v1/providers/mistral-ai.json index 237f155..7387716 100644 --- a/api/v1/providers/mistral-ai.json +++ b/api/v1/providers/mistral-ai.json @@ -15,6 +15,7 @@ "batch_input": 0.25, "batch_output": 0.75, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, diff --git a/api/v1/providers/openai.json b/api/v1/providers/openai.json index e9283aa..a37327f 100644 --- a/api/v1/providers/openai.json +++ b/api/v1/providers/openai.json @@ -15,6 +15,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, @@ -37,6 +38,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, @@ -59,6 +61,7 @@ "batch_input": 0.375, "batch_output": 2.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, @@ -81,6 +84,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -103,6 +107,7 @@ "batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -125,6 +130,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -147,6 +153,7 @@ "batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, + "cache_write_1h": null, "cached_input": 0.25, "currency": "USD", "input": 2.5, @@ -169,6 +176,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, diff --git a/api/v1/providers/xai.json b/api/v1/providers/xai.json index 7780370..724450b 100644 --- a/api/v1/providers/xai.json +++ b/api/v1/providers/xai.json @@ -15,6 +15,7 @@ "batch_input": 1.0, "batch_output": 2.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, diff --git a/data/canonical/models.json b/data/canonical/models.json index e653c72..9c36b46 100644 --- a/data/canonical/models.json +++ b/data/canonical/models.json @@ -5,7 +5,17 @@ "display_name": "GPT-5.6 Sol", "model_family": "GPT-5.6", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 5.0, "output": 30.0, "cached_input": 0.5, "cache_write": 6.25, "batch_input": 2.5, "batch_output": 15.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 5.0, + "output": 30.0, + "cached_input": 0.5, + "cache_write": 6.25, + "cache_write_1h": null, + "batch_input": 2.5, + "batch_output": 15.0 + }, "official_source_url": "https://developers.openai.com/api/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -18,7 +28,17 @@ "display_name": "GPT-5.6 Terra", "model_family": "GPT-5.6", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 2.5, "output": 15.0, "cached_input": 0.25, "cache_write": 3.125, "batch_input": 1.25, "batch_output": 7.5}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 2.5, + "output": 15.0, + "cached_input": 0.25, + "cache_write": 3.125, + "cache_write_1h": null, + "batch_input": 1.25, + "batch_output": 7.5 + }, "official_source_url": "https://developers.openai.com/api/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -31,7 +51,17 @@ "display_name": "GPT-5.6 Luna", "model_family": "GPT-5.6", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 1.0, "output": 6.0, "cached_input": 0.1, "cache_write": 1.25, "batch_input": 0.5, "batch_output": 3.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 1.0, + "output": 6.0, + "cached_input": 0.1, + "cache_write": 1.25, + "cache_write_1h": null, + "batch_input": 0.5, + "batch_output": 3.0 + }, "official_source_url": "https://developers.openai.com/api/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -44,7 +74,17 @@ "display_name": "GPT-5.5", "model_family": "GPT-5.5", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 5.0, "output": 30.0, "cached_input": 0.5, "cache_write": null, "batch_input": 2.5, "batch_output": 15.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 5.0, + "output": 30.0, + "cached_input": 0.5, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 2.5, + "batch_output": 15.0 + }, "official_source_url": "https://platform.openai.com/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -57,7 +97,17 @@ "display_name": "GPT-5.4 mini", "model_family": "GPT-5.4", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 0.75, "output": 4.5, "cached_input": 0.075, "cache_write": null, "batch_input": 0.375, "batch_output": 2.25}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 0.75, + "output": 4.5, + "cached_input": 0.075, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 0.375, + "batch_output": 2.25 + }, "official_source_url": "https://platform.openai.com/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -70,7 +120,17 @@ "display_name": "GPT-5", "model_family": "GPT-5", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 1.25, "output": 10.0, "cached_input": 0.125, "cache_write": null, "batch_input": 0.625, "batch_output": 5.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 1.25, + "output": 10.0, + "cached_input": 0.125, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 0.625, + "batch_output": 5.0 + }, "official_source_url": "https://platform.openai.com/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -83,7 +143,17 @@ "display_name": "GPT-4.1", "model_family": "GPT-4.1", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 2.0, "output": 8.0, "cached_input": 0.5, "cache_write": null, "batch_input": 1.0, "batch_output": 4.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 2.0, + "output": 8.0, + "cached_input": 0.5, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 1.0, + "batch_output": 4.0 + }, "official_source_url": "https://platform.openai.com/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -96,7 +166,17 @@ "display_name": "o3", "model_family": "o-series", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 2.0, "output": 8.0, "cached_input": 0.5, "cache_write": null, "batch_input": 1.0, "batch_output": 4.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 2.0, + "output": 8.0, + "cached_input": 0.5, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 1.0, + "batch_output": 4.0 + }, "official_source_url": "https://platform.openai.com/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -109,20 +189,63 @@ "display_name": "Claude Opus 4.8", "model_family": "Claude Opus", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 5.0, "output": 25.0, "cached_input": 0.5, "cache_write": 6.25, "batch_input": 2.5, "batch_output": 12.5}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 5.0, + "output": 25.0, + "cached_input": 0.5, + "cache_write": 6.25, + "cache_write_1h": null, + "batch_input": 2.5, + "batch_output": 12.5 + }, "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", "effective_from": null, "notes": "Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate." }, + { + "provider_id": "anthropic", + "model_id": "claude-opus-5", + "display_name": "Claude Opus 5", + "model_family": "Claude Opus", + "status": "active", + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 5.0, + "output": 25.0, + "cached_input": 0.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, + "batch_input": 2.5, + "batch_output": 12.5 + }, + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "accessed_at": "2026-07-29T00:00:00Z", + "last_verified_at": "2026-07-29T00:00:00Z", + "effective_from": "2026-07-24", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing." + }, { "provider_id": "anthropic", "model_id": "claude-sonnet-5-intro", "display_name": "Claude Sonnet 5 introductory pricing", "model_family": "Claude Sonnet", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 2.0, "output": 10.0, "cached_input": 0.2, "cache_write": 2.5, "batch_input": 1.0, "batch_output": 5.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 2.0, + "output": 10.0, + "cached_input": 0.2, + "cache_write": 2.5, + "cache_write_1h": null, + "batch_input": 1.0, + "batch_output": 5.0 + }, "official_source_url": "https://www.anthropic.com/news/claude-sonnet-5", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -135,7 +258,17 @@ "display_name": "Claude Sonnet 4.6", "model_family": "Claude Sonnet", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 3.0, "output": 15.0, "cached_input": 0.3, "cache_write": 3.75, "batch_input": 1.5, "batch_output": 7.5}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 3.0, + "output": 15.0, + "cached_input": 0.3, + "cache_write": 3.75, + "cache_write_1h": null, + "batch_input": 1.5, + "batch_output": 7.5 + }, "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -148,7 +281,17 @@ "display_name": "Claude Haiku 4.5", "model_family": "Claude Haiku", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 1.0, "output": 5.0, "cached_input": 0.1, "cache_write": 1.25, "batch_input": 0.5, "batch_output": 2.5}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 1.0, + "output": 5.0, + "cached_input": 0.1, + "cache_write": 1.25, + "cache_write_1h": null, + "batch_input": 0.5, + "batch_output": 2.5 + }, "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -161,7 +304,17 @@ "display_name": "Gemini 2.5 Pro", "model_family": "Gemini 2.5", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 1.25, "output": 10.0, "cached_input": 0.125, "cache_write": null, "batch_input": 0.625, "batch_output": 5.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 1.25, + "output": 10.0, + "cached_input": 0.125, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 0.625, + "batch_output": 5.0 + }, "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -174,7 +327,17 @@ "display_name": "Gemini 2.5 Flash", "model_family": "Gemini 2.5", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 0.3, "output": 2.5, "cached_input": 0.03, "cache_write": null, "batch_input": 0.15, "batch_output": 1.25}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 0.3, + "output": 2.5, + "cached_input": 0.03, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 0.15, + "batch_output": 1.25 + }, "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -187,7 +350,17 @@ "display_name": "Grok 4.3", "model_family": "Grok 4", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 1.25, "output": 2.5, "cached_input": 0.2, "cache_write": null, "batch_input": 1.0, "batch_output": 2.0}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 1.25, + "output": 2.5, + "cached_input": 0.2, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 1.0, + "batch_output": 2.0 + }, "official_source_url": "https://docs.x.ai/developers/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -200,7 +373,17 @@ "display_name": "DeepSeek V4 Flash", "model_family": "DeepSeek V4", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 0.14, "output": 0.28, "cached_input": 0.0028, "cache_write": null, "batch_input": null, "batch_output": null}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 0.14, + "output": 0.28, + "cached_input": 0.0028, + "cache_write": null, + "cache_write_1h": null, + "batch_input": null, + "batch_output": null + }, "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -213,7 +396,17 @@ "display_name": "DeepSeek V4 Pro", "model_family": "DeepSeek V4", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 0.435, "output": 0.87, "cached_input": 0.003625, "cache_write": null, "batch_input": null, "batch_output": null}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 0.435, + "output": 0.87, + "cached_input": 0.003625, + "cache_write": null, + "cache_write_1h": null, + "batch_input": null, + "batch_output": null + }, "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -226,7 +419,17 @@ "display_name": "Mistral Large 3", "model_family": "Mistral Large", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 0.5, "output": 1.5, "cached_input": 0.05, "cache_write": null, "batch_input": 0.25, "batch_output": 0.75}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 0.5, + "output": 1.5, + "cached_input": 0.05, + "cache_write": null, + "cache_write_1h": null, + "batch_input": 0.25, + "batch_output": 0.75 + }, "official_source_url": "https://mistral.ai/pricing/api/", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -239,7 +442,17 @@ "display_name": "Command A+", "model_family": "Command", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": null, "output": null, "cached_input": null, "cache_write": null, "batch_input": null, "batch_output": null}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": null, + "output": null, + "cached_input": null, + "cache_write": null, + "cache_write_1h": null, + "batch_input": null, + "batch_output": null + }, "official_source_url": "https://docs.cohere.com/docs/command-a-plus", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -252,7 +465,17 @@ "display_name": "Command R+ 08-2024", "model_family": "Command R", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 2.5, "output": 10.0, "cached_input": null, "cache_write": null, "batch_input": null, "batch_output": null}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 2.5, + "output": 10.0, + "cached_input": null, + "cache_write": null, + "cache_write_1h": null, + "batch_input": null, + "batch_output": null + }, "official_source_url": "https://cohere.com/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", @@ -265,7 +488,17 @@ "display_name": "Aya Expanse 32B", "model_family": "Aya", "status": "active", - "pricing": {"currency": "USD", "unit": "1M tokens", "input": 0.5, "output": 1.5, "cached_input": null, "cache_write": null, "batch_input": null, "batch_output": null}, + "pricing": { + "currency": "USD", + "unit": "1M tokens", + "input": 0.5, + "output": 1.5, + "cached_input": null, + "cache_write": null, + "cache_write_1h": null, + "batch_input": null, + "batch_output": null + }, "official_source_url": "https://cohere.com/pricing", "accessed_at": "2026-07-27T00:00:00Z", "last_verified_at": "2026-07-27T00:00:00Z", diff --git a/data/history/anthropic/claude-haiku-4.5.jsonl b/data/history/anthropic/claude-haiku-4.5.jsonl index 1bf1637..79cfafa 100644 --- a/data/history/anthropic/claude-haiku-4.5.jsonl +++ b/data/history/anthropic/claude-haiku-4.5.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "claude-haiku-4.5", "notes": "cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, "cached_input": 0.1, "currency": "USD", "input": 1.0, "output": 5.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-haiku-4.5", "notes": "cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, "cached_input": 0.1, "currency": "USD", "input": 1.0, "output": 5.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-haiku-4.5", "notes": "cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, "output": 5.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/anthropic/claude-opus-4.8.jsonl b/data/history/anthropic/claude-opus-4.8.jsonl index 72cd343..d251a1c 100644 --- a/data/history/anthropic/claude-opus-4.8.jsonl +++ b/data/history/anthropic/claude-opus-4.8.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "claude-opus-4.8", "notes": "Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 25.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-opus-4.8", "notes": "Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 25.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-opus-4.8", "notes": "Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 25.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/anthropic/claude-opus-5.jsonl b/data/history/anthropic/claude-opus-5.jsonl new file mode 100644 index 0000000..2884011 --- /dev/null +++ b/data/history/anthropic/claude-opus-5.jsonl @@ -0,0 +1 @@ +{"effective_from": "2026-07-24", "last_verified_at": "2026-07-29T00:00:00Z", "model_id": "claude-opus-5", "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", "pricing": {"batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, "cache_write_1h": 10.0, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 25.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/anthropic/claude-sonnet-4.6.jsonl b/data/history/anthropic/claude-sonnet-4.6.jsonl index 3031358..ba0717a 100644 --- a/data/history/anthropic/claude-sonnet-4.6.jsonl +++ b/data/history/anthropic/claude-sonnet-4.6.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "claude-sonnet-4.6", "notes": "cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, "cached_input": 0.3, "currency": "USD", "input": 3.0, "output": 15.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-sonnet-4.6", "notes": "cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, "cached_input": 0.3, "currency": "USD", "input": 3.0, "output": 15.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-sonnet-4.6", "notes": "cache_write stores the 5-minute write rate.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "pricing": {"batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, "cache_write_1h": null, "cached_input": 0.3, "currency": "USD", "input": 3.0, "output": 15.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/anthropic/claude-sonnet-5-intro.jsonl b/data/history/anthropic/claude-sonnet-5-intro.jsonl index e5f9a5c..66df7a7 100644 --- a/data/history/anthropic/claude-sonnet-5-intro.jsonl +++ b/data/history/anthropic/claude-sonnet-5-intro.jsonl @@ -1,2 +1,3 @@ {"effective_from": "2026-07-05", "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "claude-sonnet-5-intro", "notes": "Introductory pricing is listed by Anthropic as effective through 2026-08-31; standard pricing starts 2026-09-01.", "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing#claude-sonnet-5-introductory-pricing", "pricing": {"batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, "cached_input": 0.2, "currency": "USD", "input": 2.0, "output": 10.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": "2026-06-30", "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-sonnet-5-intro", "notes": "Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates.", "official_source_url": "https://www.anthropic.com/news/claude-sonnet-5", "pricing": {"batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, "cached_input": 0.2, "currency": "USD", "input": 2.0, "output": 10.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": "2026-06-30", "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "claude-sonnet-5-intro", "notes": "Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates.", "official_source_url": "https://www.anthropic.com/news/claude-sonnet-5", "pricing": {"batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 2.0, "output": 10.0, "unit": "1M tokens"}, "provider_id": "anthropic", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/cohere/aya-expanse-32b.jsonl b/data/history/cohere/aya-expanse-32b.jsonl index 37a9961..b24821e 100644 --- a/data/history/cohere/aya-expanse-32b.jsonl +++ b/data/history/cohere/aya-expanse-32b.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "aya-expanse-32b", "notes": "Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output.", "official_source_url": "https://cohere.com/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": null, "currency": "USD", "input": 0.5, "output": 1.5, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "aya-expanse-32b", "notes": "Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output.", "official_source_url": "https://cohere.com/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": null, "currency": "USD", "input": 0.5, "output": 1.5, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "aya-expanse-32b", "notes": "Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output.", "official_source_url": "https://cohere.com/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 0.5, "output": 1.5, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/cohere/command-a-plus.jsonl b/data/history/cohere/command-a-plus.jsonl index b08d9ea..f6027bb 100644 --- a/data/history/cohere/command-a-plus.jsonl +++ b/data/history/cohere/command-a-plus.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "command-a-plus", "notes": "Cohere official pricing page lists Command A+ but the extracted public page did not expose a confirmed token price. Values are null rather than guessed.", "official_source_url": "https://cohere.com/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": null, "currency": "USD", "input": null, "output": null, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "command-a-plus", "notes": "Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled.", "official_source_url": "https://docs.cohere.com/docs/command-a-plus", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": null, "currency": "USD", "input": null, "output": null, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "command-a-plus", "notes": "Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled.", "official_source_url": "https://docs.cohere.com/docs/command-a-plus", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": null, "output": null, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/cohere/command-r-plus-08-2024.jsonl b/data/history/cohere/command-r-plus-08-2024.jsonl index 4b5cfb7..39846cd 100644 --- a/data/history/cohere/command-r-plus-08-2024.jsonl +++ b/data/history/cohere/command-r-plus-08-2024.jsonl @@ -1,2 +1,3 @@ {"effective_from": "2024-08-01", "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "command-r-plus-08-2024", "notes": "Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens.", "official_source_url": "https://cohere.com/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": null, "currency": "USD", "input": 2.5, "output": 10.0, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": "2024-08-01", "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "command-r-plus-08-2024", "notes": "Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens.", "official_source_url": "https://cohere.com/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": null, "currency": "USD", "input": 2.5, "output": 10.0, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": "2024-08-01", "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "command-r-plus-08-2024", "notes": "Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens.", "official_source_url": "https://cohere.com/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 2.5, "output": 10.0, "unit": "1M tokens"}, "provider_id": "cohere", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/deepseek/deepseek-v4-flash.jsonl b/data/history/deepseek/deepseek-v4-flash.jsonl index 0c33ed3..8ba6f72 100644 --- a/data/history/deepseek/deepseek-v4-flash.jsonl +++ b/data/history/deepseek/deepseek-v4-flash.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "deepseek-v4-flash", "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, "output": 0.28, "unit": "1M tokens"}, "provider_id": "deepseek", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "deepseek-v4-flash", "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, "output": 0.28, "unit": "1M tokens"}, "provider_id": "deepseek", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "deepseek-v4-flash", "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cache_write_1h": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, "output": 0.28, "unit": "1M tokens"}, "provider_id": "deepseek", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/deepseek/deepseek-v4-pro.jsonl b/data/history/deepseek/deepseek-v4-pro.jsonl index 8af6738..ccddcdf 100644 --- a/data/history/deepseek/deepseek-v4-pro.jsonl +++ b/data/history/deepseek/deepseek-v4-pro.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "deepseek-v4-pro", "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, "output": 0.87, "unit": "1M tokens"}, "provider_id": "deepseek", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "deepseek-v4-pro", "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, "output": 0.87, "unit": "1M tokens"}, "provider_id": "deepseek", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "deepseek-v4-pro", "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cache_write_1h": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, "output": 0.87, "unit": "1M tokens"}, "provider_id": "deepseek", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/google-gemini/gemini-2.5-flash.jsonl b/data/history/google-gemini/gemini-2.5-flash.jsonl index f346aef..fd1b703 100644 --- a/data/history/google-gemini/gemini-2.5-flash.jsonl +++ b/data/history/google-gemini/gemini-2.5-flash.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "gemini-2.5-flash", "notes": "Rates are for text/image/video input; Google lists separate audio rates in the official pricing table.", "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "pricing": {"batch_input": 0.15, "batch_output": 1.25, "cache_write": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, "output": 2.5, "unit": "1M tokens"}, "provider_id": "google-gemini", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gemini-2.5-flash", "notes": "Rates are for text/image/video input; Google lists separate audio rates in the official pricing table.", "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "pricing": {"batch_input": 0.15, "batch_output": 1.25, "cache_write": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, "output": 2.5, "unit": "1M tokens"}, "provider_id": "google-gemini", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gemini-2.5-flash", "notes": "Rates are for text/image/video input; Google lists separate audio rates in the official pricing table.", "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "pricing": {"batch_input": 0.15, "batch_output": 1.25, "cache_write": null, "cache_write_1h": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, "output": 2.5, "unit": "1M tokens"}, "provider_id": "google-gemini", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/google-gemini/gemini-2.5-pro.jsonl b/data/history/google-gemini/gemini-2.5-pro.jsonl index d70cf17..700bc77 100644 --- a/data/history/google-gemini/gemini-2.5-pro.jsonl +++ b/data/history/google-gemini/gemini-2.5-pro.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "gemini-2.5-pro", "notes": "Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table.", "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "pricing": {"batch_input": 0.625, "batch_output": 5.0, "cache_write": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, "output": 10.0, "unit": "1M tokens"}, "provider_id": "google-gemini", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gemini-2.5-pro", "notes": "Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table.", "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "pricing": {"batch_input": 0.625, "batch_output": 5.0, "cache_write": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, "output": 10.0, "unit": "1M tokens"}, "provider_id": "google-gemini", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gemini-2.5-pro", "notes": "Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table.", "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", "pricing": {"batch_input": 0.625, "batch_output": 5.0, "cache_write": null, "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, "output": 10.0, "unit": "1M tokens"}, "provider_id": "google-gemini", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/mistral-ai/mistral-large.jsonl b/data/history/mistral-ai/mistral-large.jsonl index aa842ae..535a0d6 100644 --- a/data/history/mistral-ai/mistral-large.jsonl +++ b/data/history/mistral-ai/mistral-large.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "mistral-large", "notes": "Mistral official pricing FAQ states Mistral Large costs $2/M input and $6/M output and batch processing gets a 50% discount.", "official_source_url": "https://mistral.ai/pricing", "pricing": {"batch_input": 1.0, "batch_output": 3.0, "cache_write": null, "cached_input": null, "currency": "USD", "input": 2.0, "output": 6.0, "unit": "1M tokens"}, "provider_id": "mistral-ai", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "mistral-large", "notes": "mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount.", "official_source_url": "https://mistral.ai/pricing/api/", "pricing": {"batch_input": 0.25, "batch_output": 0.75, "cache_write": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, "output": 1.5, "unit": "1M tokens"}, "provider_id": "mistral-ai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "mistral-large", "notes": "mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount.", "official_source_url": "https://mistral.ai/pricing/api/", "pricing": {"batch_input": 0.25, "batch_output": 0.75, "cache_write": null, "cache_write_1h": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, "output": 1.5, "unit": "1M tokens"}, "provider_id": "mistral-ai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/gpt-4.1.jsonl b/data/history/openai/gpt-4.1.jsonl index 326237c..29504c0 100644 --- a/data/history/openai/gpt-4.1.jsonl +++ b/data/history/openai/gpt-4.1.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "gpt-4.1", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 1.0, "batch_output": 4.0, "cache_write": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, "output": 8.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-4.1", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 1.0, "batch_output": 4.0, "cache_write": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, "output": 8.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-4.1", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 1.0, "batch_output": 4.0, "cache_write": null, "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, "output": 8.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/gpt-5.4-mini.jsonl b/data/history/openai/gpt-5.4-mini.jsonl index 66d95d2..c4b31f6 100644 --- a/data/history/openai/gpt-5.4-mini.jsonl +++ b/data/history/openai/gpt-5.4-mini.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "gpt-5.4-mini", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 0.375, "batch_output": 2.25, "cache_write": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, "output": 4.5, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.4-mini", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 0.375, "batch_output": 2.25, "cache_write": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, "output": 4.5, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.4-mini", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 0.375, "batch_output": 2.25, "cache_write": null, "cache_write_1h": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, "output": 4.5, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/gpt-5.5.jsonl b/data/history/openai/gpt-5.5.jsonl index 41df53e..8049fb9 100644 --- a/data/history/openai/gpt-5.5.jsonl +++ b/data/history/openai/gpt-5.5.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "gpt-5.5", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 2.5, "batch_output": 15.0, "cache_write": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 30.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.5", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 2.5, "batch_output": 15.0, "cache_write": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 30.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.5", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 2.5, "batch_output": 15.0, "cache_write": null, "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 30.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/gpt-5.6-luna.jsonl b/data/history/openai/gpt-5.6-luna.jsonl index 5600655..e106423 100644 --- a/data/history/openai/gpt-5.6-luna.jsonl +++ b/data/history/openai/gpt-5.6-luna.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-10T00:00:00Z", "model_id": "gpt-5.6-luna", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, "cached_input": 0.1, "currency": "USD", "input": 1.0, "output": 6.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-09T18:36:17Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.6-luna", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, "cached_input": 0.1, "currency": "USD", "input": 1.0, "output": 6.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.6-luna", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, "output": 6.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/gpt-5.6-sol.jsonl b/data/history/openai/gpt-5.6-sol.jsonl index 571d713..e10beea 100644 --- a/data/history/openai/gpt-5.6-sol.jsonl +++ b/data/history/openai/gpt-5.6-sol.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-10T00:00:00Z", "model_id": "gpt-5.6-sol", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 30.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-09T18:36:17Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.6-sol", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 30.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.6-sol", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, "output": 30.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/gpt-5.6-terra.jsonl b/data/history/openai/gpt-5.6-terra.jsonl index 99bad16..d128eba 100644 --- a/data/history/openai/gpt-5.6-terra.jsonl +++ b/data/history/openai/gpt-5.6-terra.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-10T00:00:00Z", "model_id": "gpt-5.6-terra", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, "cached_input": 0.25, "currency": "USD", "input": 2.5, "output": 15.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-09T18:36:17Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.6-terra", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, "cached_input": 0.25, "currency": "USD", "input": 2.5, "output": 15.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5.6-terra", "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", "official_source_url": "https://developers.openai.com/api/docs/pricing", "pricing": {"batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, "cache_write_1h": null, "cached_input": 0.25, "currency": "USD", "input": 2.5, "output": 15.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/gpt-5.jsonl b/data/history/openai/gpt-5.jsonl index 2322150..c8fe21c 100644 --- a/data/history/openai/gpt-5.jsonl +++ b/data/history/openai/gpt-5.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "gpt-5", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 0.625, "batch_output": 5.0, "cache_write": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, "output": 10.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 0.625, "batch_output": 5.0, "cache_write": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, "output": 10.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "gpt-5", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 0.625, "batch_output": 5.0, "cache_write": null, "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, "output": 10.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/openai/o3.jsonl b/data/history/openai/o3.jsonl index 29b962b..da45bdb 100644 --- a/data/history/openai/o3.jsonl +++ b/data/history/openai/o3.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "o3", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 1.0, "batch_output": 4.0, "cache_write": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, "output": 8.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "o3", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 1.0, "batch_output": 4.0, "cache_write": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, "output": 8.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "o3", "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "official_source_url": "https://platform.openai.com/docs/pricing", "pricing": {"batch_input": 1.0, "batch_output": 4.0, "cache_write": null, "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, "output": 8.0, "unit": "1M tokens"}, "provider_id": "openai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/history/xai/grok-4.3.jsonl b/data/history/xai/grok-4.3.jsonl index 6ca19e4..e200c3b 100644 --- a/data/history/xai/grok-4.3.jsonl +++ b/data/history/xai/grok-4.3.jsonl @@ -1,2 +1,3 @@ {"effective_from": null, "last_verified_at": "2026-07-05T00:00:00Z", "model_id": "grok-4.3", "notes": "xAI official model page lists Grok 4.3 input and output rates per 1M tokens. Cached and batch rates were not shown in the extracted official model card.", "official_source_url": "https://docs.x.ai/developers/models", "pricing": {"batch_input": null, "batch_output": null, "cache_write": null, "cached_input": null, "currency": "USD", "input": 1.25, "output": 2.5, "unit": "1M tokens"}, "provider_id": "xai", "recorded_at": "2026-07-05T00:00:00Z"} {"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "grok-4.3", "notes": "V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields.", "official_source_url": "https://docs.x.ai/developers/pricing", "pricing": {"batch_input": 1.0, "batch_output": 2.0, "cache_write": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, "output": 2.5, "unit": "1M tokens"}, "provider_id": "xai", "recorded_at": "2026-07-27T00:00:00Z"} +{"effective_from": null, "last_verified_at": "2026-07-27T00:00:00Z", "model_id": "grok-4.3", "notes": "V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields.", "official_source_url": "https://docs.x.ai/developers/pricing", "pricing": {"batch_input": 1.0, "batch_output": 2.0, "cache_write": null, "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, "output": 2.5, "unit": "1M tokens"}, "provider_id": "xai", "recorded_at": "2026-07-29T09:21:37Z"} diff --git a/data/models/anthropic/claude-haiku-4.5.json b/data/models/anthropic/claude-haiku-4.5.json index c201ead..9372ead 100644 --- a/data/models/anthropic/claude-haiku-4.5.json +++ b/data/models/anthropic/claude-haiku-4.5.json @@ -11,6 +11,7 @@ "batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, diff --git a/data/models/anthropic/claude-opus-4.8.json b/data/models/anthropic/claude-opus-4.8.json index d5e2db9..aea7ef0 100644 --- a/data/models/anthropic/claude-opus-4.8.json +++ b/data/models/anthropic/claude-opus-4.8.json @@ -11,6 +11,7 @@ "batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, diff --git a/data/models/anthropic/claude-opus-5.json b/data/models/anthropic/claude-opus-5.json new file mode 100644 index 0000000..2cd74de --- /dev/null +++ b/data/models/anthropic/claude-opus-5.json @@ -0,0 +1,23 @@ +{ + "accessed_at": "2026-07-29T00:00:00Z", + "display_name": "Claude Opus 5", + "effective_from": "2026-07-24", + "last_verified_at": "2026-07-29T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-5", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" +} diff --git a/data/models/anthropic/claude-sonnet-4.6.json b/data/models/anthropic/claude-sonnet-4.6.json index e9a5590..d67d4c9 100644 --- a/data/models/anthropic/claude-sonnet-4.6.json +++ b/data/models/anthropic/claude-sonnet-4.6.json @@ -11,6 +11,7 @@ "batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, + "cache_write_1h": null, "cached_input": 0.3, "currency": "USD", "input": 3.0, diff --git a/data/models/anthropic/claude-sonnet-5-intro.json b/data/models/anthropic/claude-sonnet-5-intro.json index af4499a..9397a4d 100644 --- a/data/models/anthropic/claude-sonnet-5-intro.json +++ b/data/models/anthropic/claude-sonnet-5-intro.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 2.0, diff --git a/data/models/cohere/aya-expanse-32b.json b/data/models/cohere/aya-expanse-32b.json index f8ba278..9ab9431 100644 --- a/data/models/cohere/aya-expanse-32b.json +++ b/data/models/cohere/aya-expanse-32b.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 0.5, diff --git a/data/models/cohere/command-a-plus.json b/data/models/cohere/command-a-plus.json index 0d4f45b..3ed85f3 100644 --- a/data/models/cohere/command-a-plus.json +++ b/data/models/cohere/command-a-plus.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": null, diff --git a/data/models/cohere/command-r-plus-08-2024.json b/data/models/cohere/command-r-plus-08-2024.json index d10294b..2bd0624 100644 --- a/data/models/cohere/command-r-plus-08-2024.json +++ b/data/models/cohere/command-r-plus-08-2024.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 2.5, diff --git a/data/models/deepseek/deepseek-v4-flash.json b/data/models/deepseek/deepseek-v4-flash.json index 52f31ad..0079733 100644 --- a/data/models/deepseek/deepseek-v4-flash.json +++ b/data/models/deepseek/deepseek-v4-flash.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, diff --git a/data/models/deepseek/deepseek-v4-pro.json b/data/models/deepseek/deepseek-v4-pro.json index 1d6a1f6..45c0edc 100644 --- a/data/models/deepseek/deepseek-v4-pro.json +++ b/data/models/deepseek/deepseek-v4-pro.json @@ -11,6 +11,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, diff --git a/data/models/google-gemini/gemini-2.5-flash.json b/data/models/google-gemini/gemini-2.5-flash.json index 91bea1e..3cfc2c8 100644 --- a/data/models/google-gemini/gemini-2.5-flash.json +++ b/data/models/google-gemini/gemini-2.5-flash.json @@ -11,6 +11,7 @@ "batch_input": 0.15, "batch_output": 1.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, diff --git a/data/models/google-gemini/gemini-2.5-pro.json b/data/models/google-gemini/gemini-2.5-pro.json index 32997b2..f33ee39 100644 --- a/data/models/google-gemini/gemini-2.5-pro.json +++ b/data/models/google-gemini/gemini-2.5-pro.json @@ -11,6 +11,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, diff --git a/data/models/mistral-ai/mistral-large.json b/data/models/mistral-ai/mistral-large.json index 109a096..76d6a93 100644 --- a/data/models/mistral-ai/mistral-large.json +++ b/data/models/mistral-ai/mistral-large.json @@ -11,6 +11,7 @@ "batch_input": 0.25, "batch_output": 0.75, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, diff --git a/data/models/openai/gpt-4.1.json b/data/models/openai/gpt-4.1.json index 6bc6e29..d62e71f 100644 --- a/data/models/openai/gpt-4.1.json +++ b/data/models/openai/gpt-4.1.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, diff --git a/data/models/openai/gpt-5.4-mini.json b/data/models/openai/gpt-5.4-mini.json index 0207b01..e58e6a8 100644 --- a/data/models/openai/gpt-5.4-mini.json +++ b/data/models/openai/gpt-5.4-mini.json @@ -11,6 +11,7 @@ "batch_input": 0.375, "batch_output": 2.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, diff --git a/data/models/openai/gpt-5.5.json b/data/models/openai/gpt-5.5.json index 07f4d09..dc96c8c 100644 --- a/data/models/openai/gpt-5.5.json +++ b/data/models/openai/gpt-5.5.json @@ -11,6 +11,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, diff --git a/data/models/openai/gpt-5.6-luna.json b/data/models/openai/gpt-5.6-luna.json index 12aecbb..46ab3c0 100644 --- a/data/models/openai/gpt-5.6-luna.json +++ b/data/models/openai/gpt-5.6-luna.json @@ -11,6 +11,7 @@ "batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, diff --git a/data/models/openai/gpt-5.6-sol.json b/data/models/openai/gpt-5.6-sol.json index 8fe085e..d364d20 100644 --- a/data/models/openai/gpt-5.6-sol.json +++ b/data/models/openai/gpt-5.6-sol.json @@ -11,6 +11,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, diff --git a/data/models/openai/gpt-5.6-terra.json b/data/models/openai/gpt-5.6-terra.json index 3531a31..71f25ce 100644 --- a/data/models/openai/gpt-5.6-terra.json +++ b/data/models/openai/gpt-5.6-terra.json @@ -11,6 +11,7 @@ "batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, + "cache_write_1h": null, "cached_input": 0.25, "currency": "USD", "input": 2.5, diff --git a/data/models/openai/gpt-5.json b/data/models/openai/gpt-5.json index 1ba3653..ef6a457 100644 --- a/data/models/openai/gpt-5.json +++ b/data/models/openai/gpt-5.json @@ -11,6 +11,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, diff --git a/data/models/openai/o3.json b/data/models/openai/o3.json index 4f9c4e3..19c566f 100644 --- a/data/models/openai/o3.json +++ b/data/models/openai/o3.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, diff --git a/data/models/xai/grok-4.3.json b/data/models/xai/grok-4.3.json index f4d16b8..3ab0744 100644 --- a/data/models/xai/grok-4.3.json +++ b/data/models/xai/grok-4.3.json @@ -11,6 +11,7 @@ "batch_input": 1.0, "batch_output": 2.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, diff --git a/data/prices.csv b/data/prices.csv index 47b95df..ef52ce6 100644 --- a/data/prices.csv +++ b/data/prices.csv @@ -1,22 +1,23 @@ -provider_id,model_id,display_name,model_family,status,currency,unit,input,output,cached_input,cache_write,batch_input,batch_output,official_source_url,accessed_at,last_verified_at,effective_from,notes -anthropic,claude-haiku-4.5,Claude Haiku 4.5,Claude Haiku,active,USD,1M tokens,1.0,5.0,0.1,1.25,0.5,2.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. -anthropic,claude-opus-4.8,Claude Opus 4.8,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,2.5,12.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate." -anthropic,claude-sonnet-4.6,Claude Sonnet 4.6,Claude Sonnet,active,USD,1M tokens,3.0,15.0,0.3,3.75,1.5,7.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. -anthropic,claude-sonnet-5-intro,Claude Sonnet 5 introductory pricing,Claude Sonnet,active,USD,1M tokens,2.0,10.0,0.2,2.5,1.0,5.0,https://www.anthropic.com/news/claude-sonnet-5,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2026-06-30,Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates. -cohere,aya-expanse-32b,Aya Expanse 32B,Aya,active,USD,1M tokens,0.5,1.5,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output. -cohere,command-a-plus,Command A+,Command,active,USD,1M tokens,,,,,,,https://docs.cohere.com/docs/command-a-plus,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled." -cohere,command-r-plus-08-2024,Command R+ 08-2024,Command R,active,USD,1M tokens,2.5,10.0,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2024-08-01,Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens. -deepseek,deepseek-v4-flash,DeepSeek V4 Flash,DeepSeek V4,active,USD,1M tokens,0.14,0.28,0.0028,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. -deepseek,deepseek-v4-pro,DeepSeek V4 Pro,DeepSeek V4,active,USD,1M tokens,0.435,0.87,0.003625,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. -google-gemini,gemini-2.5-flash,Gemini 2.5 Flash,Gemini 2.5,active,USD,1M tokens,0.3,2.5,0.03,,0.15,1.25,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for text/image/video input; Google lists separate audio rates in the official pricing table. -google-gemini,gemini-2.5-pro,Gemini 2.5 Pro,Gemini 2.5,active,USD,1M tokens,1.25,10.0,0.125,,0.625,5.0,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table. -mistral-ai,mistral-large,Mistral Large 3,Mistral Large,active,USD,1M tokens,0.5,1.5,0.05,,0.25,0.75,https://mistral.ai/pricing/api/,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount. -openai,gpt-4.1,GPT-4.1,GPT-4.1,active,USD,1M tokens,2.0,8.0,0.5,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -openai,gpt-5,GPT-5,GPT-5,active,USD,1M tokens,1.25,10.0,0.125,,0.625,5.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -openai,gpt-5.4-mini,GPT-5.4 mini,GPT-5.4,active,USD,1M tokens,0.75,4.5,0.075,,0.375,2.25,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -openai,gpt-5.5,GPT-5.5,GPT-5.5,active,USD,1M tokens,5.0,30.0,0.5,,2.5,15.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown. -openai,gpt-5.6-luna,GPT-5.6 Luna,GPT-5.6,active,USD,1M tokens,1.0,6.0,0.1,1.25,0.5,3.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." -openai,gpt-5.6-sol,GPT-5.6 Sol,GPT-5.6,active,USD,1M tokens,5.0,30.0,0.5,6.25,2.5,15.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." -openai,gpt-5.6-terra,GPT-5.6 Terra,GPT-5.6,active,USD,1M tokens,2.5,15.0,0.25,3.125,1.25,7.5,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." -openai,o3,o3,o-series,active,USD,1M tokens,2.0,8.0,0.5,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. -xai,grok-4.3,Grok 4.3,Grok 4,active,USD,1M tokens,1.25,2.5,0.2,,1.0,2.0,https://docs.x.ai/developers/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields. +provider_id,model_id,display_name,model_family,status,currency,unit,input,output,cached_input,cache_write,cache_write_1h,batch_input,batch_output,official_source_url,accessed_at,last_verified_at,effective_from,notes +anthropic,claude-haiku-4.5,Claude Haiku 4.5,Claude Haiku,active,USD,1M tokens,1.0,5.0,0.1,1.25,,0.5,2.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. +anthropic,claude-opus-4.8,Claude Opus 4.8,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,,2.5,12.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate." +anthropic,claude-opus-5,Claude Opus 5,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,10.0,2.5,12.5,https://platform.claude.com/docs/en/about-claude/pricing,2026-07-29T00:00:00Z,2026-07-29T00:00:00Z,2026-07-24,"Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing." +anthropic,claude-sonnet-4.6,Claude Sonnet 4.6,Claude Sonnet,active,USD,1M tokens,3.0,15.0,0.3,3.75,,1.5,7.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. +anthropic,claude-sonnet-5-intro,Claude Sonnet 5 introductory pricing,Claude Sonnet,active,USD,1M tokens,2.0,10.0,0.2,2.5,,1.0,5.0,https://www.anthropic.com/news/claude-sonnet-5,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2026-06-30,Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates. +cohere,aya-expanse-32b,Aya Expanse 32B,Aya,active,USD,1M tokens,0.5,1.5,,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output. +cohere,command-a-plus,Command A+,Command,active,USD,1M tokens,,,,,,,,https://docs.cohere.com/docs/command-a-plus,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled." +cohere,command-r-plus-08-2024,Command R+ 08-2024,Command R,active,USD,1M tokens,2.5,10.0,,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2024-08-01,Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens. +deepseek,deepseek-v4-flash,DeepSeek V4 Flash,DeepSeek V4,active,USD,1M tokens,0.14,0.28,0.0028,,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. +deepseek,deepseek-v4-pro,DeepSeek V4 Pro,DeepSeek V4,active,USD,1M tokens,0.435,0.87,0.003625,,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. +google-gemini,gemini-2.5-flash,Gemini 2.5 Flash,Gemini 2.5,active,USD,1M tokens,0.3,2.5,0.03,,,0.15,1.25,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for text/image/video input; Google lists separate audio rates in the official pricing table. +google-gemini,gemini-2.5-pro,Gemini 2.5 Pro,Gemini 2.5,active,USD,1M tokens,1.25,10.0,0.125,,,0.625,5.0,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table. +mistral-ai,mistral-large,Mistral Large 3,Mistral Large,active,USD,1M tokens,0.5,1.5,0.05,,,0.25,0.75,https://mistral.ai/pricing/api/,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount. +openai,gpt-4.1,GPT-4.1,GPT-4.1,active,USD,1M tokens,2.0,8.0,0.5,,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5,GPT-5,GPT-5,active,USD,1M tokens,1.25,10.0,0.125,,,0.625,5.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5.4-mini,GPT-5.4 mini,GPT-5.4,active,USD,1M tokens,0.75,4.5,0.075,,,0.375,2.25,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5.5,GPT-5.5,GPT-5.5,active,USD,1M tokens,5.0,30.0,0.5,,,2.5,15.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown. +openai,gpt-5.6-luna,GPT-5.6 Luna,GPT-5.6,active,USD,1M tokens,1.0,6.0,0.1,1.25,,0.5,3.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,gpt-5.6-sol,GPT-5.6 Sol,GPT-5.6,active,USD,1M tokens,5.0,30.0,0.5,6.25,,2.5,15.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,gpt-5.6-terra,GPT-5.6 Terra,GPT-5.6,active,USD,1M tokens,2.5,15.0,0.25,3.125,,1.25,7.5,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,o3,o3,o-series,active,USD,1M tokens,2.0,8.0,0.5,,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +xai,grok-4.3,Grok 4.3,Grok 4,active,USD,1M tokens,1.25,2.5,0.2,,,1.0,2.0,https://docs.x.ai/developers/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields. diff --git a/data/prices.json b/data/prices.json index 21cf181..0a8336c 100644 --- a/data/prices.json +++ b/data/prices.json @@ -2,14 +2,14 @@ "dataset_name": "AICostBudget AI API Pricing Dataset", "dataset_version": "1.0.0", "description": "Open, machine-readable pricing data for LLM and AI APIs.", - "generated_at": "2026-07-27T00:00:00Z", + "generated_at": "2026-07-29T09:50:41Z", "homepage": "https://aicostbudget.com", - "last_verified_at": "2026-07-27T00:00:00Z", + "last_verified_at": "2026-07-29T00:00:00Z", "licenses": { "code": "MIT", "data": "CC BY 4.0" }, - "model_count": 21, + "model_count": 22, "models": [ { "accessed_at": "2026-07-27T00:00:00Z", @@ -24,6 +24,7 @@ "batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -46,6 +47,30 @@ "batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-29T00:00:00Z", + "display_name": "Claude Opus 5", + "effective_from": "2026-07-24", + "last_verified_at": "2026-07-29T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-5", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -68,6 +93,7 @@ "batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, + "cache_write_1h": null, "cached_input": 0.3, "currency": "USD", "input": 3.0, @@ -90,6 +116,7 @@ "batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 2.0, @@ -112,6 +139,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 0.5, @@ -134,6 +162,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": null, @@ -156,6 +185,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 2.5, @@ -178,6 +208,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, @@ -200,6 +231,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, @@ -222,6 +254,7 @@ "batch_input": 0.15, "batch_output": 1.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, @@ -244,6 +277,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, @@ -266,6 +300,7 @@ "batch_input": 0.25, "batch_output": 0.75, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, @@ -288,6 +323,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, @@ -310,6 +346,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, @@ -332,6 +369,7 @@ "batch_input": 0.375, "batch_output": 2.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, @@ -354,6 +392,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -376,6 +415,7 @@ "batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -398,6 +438,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -420,6 +461,7 @@ "batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, + "cache_write_1h": null, "cached_input": 0.25, "currency": "USD", "input": 2.5, @@ -442,6 +484,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, @@ -464,6 +507,7 @@ "batch_input": 1.0, "batch_output": 2.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, @@ -474,7 +518,7 @@ "status": "active" } ], - "official_source_count": 10, + "official_source_count": 11, "official_sources": [ "https://ai.google.dev/gemini-api/docs/pricing", "https://api-docs.deepseek.com/quick_start/pricing", @@ -484,6 +528,7 @@ "https://docs.cohere.com/docs/command-a-plus", "https://docs.x.ai/developers/pricing", "https://mistral.ai/pricing/api/", + "https://platform.claude.com/docs/en/about-claude/pricing", "https://platform.openai.com/docs/pricing", "https://www.anthropic.com/news/claude-sonnet-5" ], diff --git a/data/pricing-v2-preview/candidate-disposition-map.json b/data/pricing-v2-preview/candidate-disposition-map.json index 36f2493..c436024 100644 --- a/data/pricing-v2-preview/candidate-disposition-map.json +++ b/data/pricing-v2-preview/candidate-disposition-map.json @@ -54,6 +54,17 @@ "sourceSide": "common", "verificationStatus": "verified" }, + { + "aliasTarget": null, + "candidateId": "anthropic/claude-opus-5", + "disposition": "canonical_identity", + "finalInternalId": "anthropic/claude-opus-5", + "mergeTarget": null, + "provider": "anthropic", + "reason": "Candidate is retained as a canonical model identity.", + "sourceSide": "public_only", + "verificationStatus": "partially_verified" + }, { "aliasTarget": null, "candidateId": "anthropic/claude-sonnet-4", diff --git a/data/pricing-v2-preview/convergence-report.json b/data/pricing-v2-preview/convergence-report.json index 0c5648d..265b60e 100644 --- a/data/pricing-v2-preview/convergence-report.json +++ b/data/pricing-v2-preview/convergence-report.json @@ -2,28 +2,28 @@ "aliasCount": 2, "candidateDispositionCounts": { "alias": 2, - "canonical_identity": 35, + "canonical_identity": 36, "historical_reference": 1, "merged_duplicate": 1, "unresolved": 3 }, - "candidateUnionCount": 42, + "candidateUnionCount": 43, "commonCount": 14, "counts": { - "chargeRecordCount": 212, - "modelRecordCount": 38, - "priceRecordCount": 70, - "sourceRecordCount": 14 + "chargeRecordCount": 223, + "modelRecordCount": 39, + "priceRecordCount": 73, + "sourceRecordCount": 19 }, "duplicateIdentityCount": 4, - "generatedAt": "2026-07-10T00:00:00Z", + "generatedAt": "2026-07-29T00:00:00Z", "lifecycleConflicts": [ { "internalId": "xai/grok-3", "resolution": "retired identity retained; redirects to xai/grok-4.3 current billing" } ], - "normalizedCanonicalIdentityCount": 38, + "normalizedCanonicalIdentityCount": 39, "pricingConflicts": [ { "internalId": "openai/gpt-4.1", @@ -38,7 +38,7 @@ "reason": "no safe default calculation price" } ], - "publicOnlyCount": 7, + "publicOnlyCount": 8, "sourceConflicts": [], "specialCases": { "claude-sonnet-5_intro_pricing": "claude-sonnet-5-intro is not modeled as an identity; it is a merged_duplicate candidate and an introductory PriceRecord on anthropic/claude-sonnet-5.", @@ -588,7 +588,7 @@ } }, { - "classification": "exact_parity", + "classification": "expected_difference", "internalId": "xai/grok-4.3", "modelId": "grok-4.3", "oldWebsiteValue": { @@ -596,9 +596,9 @@ "inputPrice": 1.25, "outputPrice": 2.5 }, - "reason": "Website values match the selected V2 default calculation price.", + "reason": "canonical V2 projection has richer condition/source metadata", "v2PreviewValue": { - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "inputPrice": 1.25, "outputPrice": 2.5 } @@ -620,7 +620,7 @@ } }, { - "classification": "expected_difference", + "classification": "exact_parity", "internalId": "xai/grok-3", "modelId": "grok-3", "oldWebsiteValue": { @@ -628,9 +628,9 @@ "inputPrice": 1.25, "outputPrice": 2.5 }, - "reason": "canonical V2 projection has richer condition/source metadata", + "reason": "Website values match the selected V2 default calculation price.", "v2PreviewValue": { - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "inputPrice": 1.25, "outputPrice": 2.5 } @@ -664,7 +664,7 @@ "openai/gpt-5.6-luna", "openai/gpt-5.6-sol", "openai/gpt-5.6-terra", - "xai/grok-4.3", + "xai/grok-3", "xai/grok-build-0.1" ], "expected_difference": [ @@ -677,7 +677,7 @@ "reason": "canonical V2 projection has richer condition/source metadata" }, { - "internalId": "xai/grok-3", + "internalId": "xai/grok-4.3", "reason": "canonical V2 projection has richer condition/source metadata" } ], diff --git a/data/pricing-v2-preview/generated/model-pricing.v2.json b/data/pricing-v2-preview/generated/model-pricing.v2.json index 4da0555..8d5aaa6 100644 --- a/data/pricing-v2-preview/generated/model-pricing.v2.json +++ b/data/pricing-v2-preview/generated/model-pricing.v2.json @@ -9,7 +9,7 @@ "review_required": "display only with warning; no default or recommendation placement", "unsafe": "exclude from default calculations and show warning only where explicitly allowed" }, - "effectiveAt": "2026-07-07T00:00:00Z", + "effectiveAt": "2026-07-29T00:00:00Z", "effectiveTimezone": "UTC", "failureBehavior": { "atomicWrite": true, @@ -18,7 +18,7 @@ "partialJson": "not_written", "publicV1Mutation": "forbidden" }, - "generatedAt": "2026-07-07T00:00:00Z", + "generatedAt": "2026-07-29T00:00:00Z", "generatedAtPolicy": "deterministic static timestamp for reviewable repo-local artifacts", "models": [ { @@ -28,7 +28,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 1, "canonicalInternalId": "anthropic/claude-fable-5", - "checkedAt": "2026-07-03", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -73,7 +73,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.1, "canonicalInternalId": "anthropic/claude-haiku-4.5", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -111,7 +111,7 @@ ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-29T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -120,7 +120,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 1, "canonicalInternalId": "anthropic/claude-mythos-5", - "checkedAt": "2026-07-03", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -165,7 +165,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 1.5, "canonicalInternalId": "anthropic/claude-opus-4.1", - "checkedAt": "2026-07-03", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -210,7 +210,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.5, "canonicalInternalId": "anthropic/claude-opus-4.8", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -248,7 +248,52 @@ ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-29T00:00:00Z" + }, + { + "aliasTargetInternalId": null, + "availability": "Standard", + "billingModelInternalId": null, + "blockedFromDefaultReasons": [], + "cachedInputPrice": 0.5, + "canonicalInternalId": "anthropic/claude-opus-5", + "checkedAt": "2026-07-29T00:00:00Z", + "contextWindow": null, + "contextWindowStatus": "unknown_not_guessed", + "defaultPriceSelectionRule": [ + "current_effective_utc", + "verified", + "standard", + "text", + "default_context_class" + ], + "defaultSafe": true, + "id": "claude-opus-5", + "identityType": "canonical_model", + "inputPrice": 5, + "lifecycleStatus": "active", + "model": "Claude Opus 5", + "officialSourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", + "outputPrice": 25, + "provider": "anthropic", + "redirectTargetInternalId": null, + "releaseStage": "stable", + "replacementInternalId": null, + "routingBehavior": "direct", + "routingDetails": {}, + "selectedBillingPriceRecordId": "price:anthropic/claude-opus-5:standard:short:current", + "selectedPriceEffectiveFrom": "2026-07-24", + "selectedPriceEffectiveUntil": null, + "selectedPriceRecordId": "price:anthropic/claude-opus-5:standard:short:current", + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "sourceUrls": [ + "https://platform.claude.com/docs/en/about-claude/pricing" + ], + "status": "latest", + "verificationStatus": "verified", + "verifiedAt": "2026-07-29T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -260,7 +305,7 @@ ], "cachedInputPrice": null, "canonicalInternalId": "anthropic/claude-sonnet-4", - "checkedAt": "2026-07-03", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -305,7 +350,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.3, "canonicalInternalId": "anthropic/claude-sonnet-4.6", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -343,7 +388,7 @@ ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-29T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -352,7 +397,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.2, "canonicalInternalId": "anthropic/claude-sonnet-5", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -368,7 +413,7 @@ "inputPrice": 2, "lifecycleStatus": "active", "model": "Claude Sonnet 5", - "officialSourceUrl": "https://docs.anthropic.com/en/docs/about-claude/pricing#claude-sonnet-5-introductory-pricing", + "officialSourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing", "outputPrice": 10, "provider": "anthropic", "redirectTargetInternalId": null, @@ -377,20 +422,20 @@ "routingBehavior": "direct", "routingDetails": {}, "selectedBillingPriceRecordId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", - "selectedPriceEffectiveFrom": "2026-07-05", + "selectedPriceEffectiveFrom": "2026-06-30", "selectedPriceEffectiveUntil": "2026-08-31", "selectedPriceRecordId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "sourceUrls": [ - "https://docs.anthropic.com/en/docs/about-claude/pricing#claude-sonnet-5-introductory-pricing", - "https://platform.claude.com/docs/en/about-claude/pricing" + "https://platform.claude.com/docs/en/about-claude/pricing", + "https://www.anthropic.com/news/claude-sonnet-5" ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-29T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -399,7 +444,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": null, "canonicalInternalId": "cohere/aya-expanse-32b", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -447,7 +492,7 @@ ], "cachedInputPrice": null, "canonicalInternalId": "cohere/command-a-plus", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -463,7 +508,7 @@ "inputPrice": null, "lifecycleStatus": "active", "model": "Command A+", - "officialSourceUrl": "https://cohere.com/pricing", + "officialSourceUrl": "https://docs.cohere.com/docs/command-a-plus", "outputPrice": null, "provider": "cohere", "redirectTargetInternalId": null, @@ -476,10 +521,10 @@ "selectedPriceEffectiveUntil": null, "selectedPriceRecordId": null, "sourceRefs": [ - "source:cohere:cohere-com-pricing" + "source:cohere:docs-cohere-com-docs-command-a-plus" ], "sourceUrls": [ - "https://cohere.com/pricing" + "https://docs.cohere.com/docs/command-a-plus" ], "status": "latest", "verificationStatus": "partially_verified", @@ -492,7 +537,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": null, "canonicalInternalId": "cohere/command-r-plus-08-2024", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -546,7 +591,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.0028, "canonicalInternalId": "deepseek/deepseek-chat", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -586,7 +631,7 @@ ], "status": "legacy", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "alias": { @@ -604,7 +649,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.0028, "canonicalInternalId": "deepseek/deepseek-reasoner", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -644,7 +689,7 @@ ], "status": "legacy", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -653,7 +698,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.0028, "canonicalInternalId": "deepseek/deepseek-v4-flash", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -689,7 +734,7 @@ ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -698,7 +743,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.003625, "canonicalInternalId": "deepseek/deepseek-v4-pro", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -734,7 +779,7 @@ ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -743,7 +788,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.03, "canonicalInternalId": "google-gemini/gemini-2.5-flash", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -779,7 +824,7 @@ ], "status": "legacy", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -788,7 +833,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.125, "canonicalInternalId": "google-gemini/gemini-2.5-pro", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -824,7 +869,7 @@ ], "status": "legacy", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -833,7 +878,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.05, "canonicalInternalId": "google-gemini/gemini-3-flash-preview", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -878,7 +923,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.025, "canonicalInternalId": "google-gemini/gemini-3.1-flash-lite", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -923,7 +968,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.2, "canonicalInternalId": "google-gemini/gemini-3.1-pro-preview", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -968,7 +1013,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.15, "canonicalInternalId": "google-gemini/gemini-3.5-flash", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1011,9 +1056,9 @@ "availability": "active", "billingModelInternalId": null, "blockedFromDefaultReasons": [], - "cachedInputPrice": null, + "cachedInputPrice": 0.05, "canonicalInternalId": "mistral-ai/mistral-large", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1026,11 +1071,11 @@ "defaultSafe": true, "id": "mistral-large", "identityType": "canonical_model", - "inputPrice": 2, + "inputPrice": 0.5, "lifecycleStatus": "active", - "model": "Mistral Large", - "officialSourceUrl": "https://mistral.ai/pricing", - "outputPrice": 6, + "model": "Mistral Large 3", + "officialSourceUrl": "https://mistral.ai/pricing/api/", + "outputPrice": 1.5, "provider": "mistral-ai", "redirectTargetInternalId": null, "releaseStage": "stable", @@ -1042,10 +1087,10 @@ "selectedPriceEffectiveUntil": null, "selectedPriceRecordId": "price:mistral-ai/mistral-large:standard:short:current", "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "sourceUrls": [ - "https://mistral.ai/pricing" + "https://mistral.ai/pricing/api/" ], "status": "latest", "verificationStatus": "verified", @@ -1106,7 +1151,7 @@ ], "cachedInputPrice": null, "canonicalInternalId": "openai/gpt-4.1", - "checkedAt": "2026-07-07T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1252,7 +1297,7 @@ ], "cachedInputPrice": null, "canonicalInternalId": "openai/gpt-5", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1387,7 +1432,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.075, "canonicalInternalId": "openai/gpt-5.4-mini", - "checkedAt": "2026-07-07T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1425,7 +1470,7 @@ ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-07T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -1524,7 +1569,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": 0.5, "canonicalInternalId": "openai/gpt-5.5", - "checkedAt": "2026-07-07T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1562,7 +1607,7 @@ ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-07T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -1754,7 +1799,7 @@ ], "cachedInputPrice": null, "canonicalInternalId": "openai/o3", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1797,9 +1842,9 @@ "availability": "Retired; requests redirect to Grok 4.3", "billingModelInternalId": "xai/grok-4.3", "blockedFromDefaultReasons": [], - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "canonicalInternalId": "xai/grok-3", - "checkedAt": "2026-07-06", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1849,24 +1894,26 @@ "selectedPriceRecordId": "price:xai/grok-4.3:standard:short:current", "sourceRefs": [ "source:xai:docs-x-ai-developers-migration-may-15-retirement", - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "sourceUrls": [ "https://docs.x.ai/developers/migration/may-15-retirement", - "https://docs.x.ai/developers/models" + "https://docs.x.ai/developers/models", + "https://docs.x.ai/developers/pricing" ], "status": "retired", "verificationStatus": "verified", - "verifiedAt": "2026-07-06" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, "availability": "Standard", "billingModelInternalId": null, "blockedFromDefaultReasons": [], - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "canonicalInternalId": "xai/grok-4.3", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ @@ -1895,14 +1942,16 @@ "selectedPriceEffectiveUntil": null, "selectedPriceRecordId": "price:xai/grok-4.3:standard:short:current", "sourceRefs": [ - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "sourceUrls": [ - "https://docs.x.ai/developers/models" + "https://docs.x.ai/developers/models", + "https://docs.x.ai/developers/pricing" ], "status": "latest", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "aliasTargetInternalId": null, @@ -1911,7 +1960,7 @@ "blockedFromDefaultReasons": [], "cachedInputPrice": null, "canonicalInternalId": "xai/grok-build-0.1", - "checkedAt": "2026-07-05T00:00:00Z", + "checkedAt": "2026-07-03", "contextWindow": null, "contextWindowStatus": "unknown_not_guessed", "defaultPriceSelectionRule": [ diff --git a/data/pricing-v2-preview/generated/model-pricing.website-preview.json b/data/pricing-v2-preview/generated/model-pricing.website-preview.json index 4241378..7d69258 100644 --- a/data/pricing-v2-preview/generated/model-pricing.website-preview.json +++ b/data/pricing-v2-preview/generated/model-pricing.website-preview.json @@ -576,7 +576,7 @@ "verificationStatus": "verified" }, { - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "defaultPriceRecordId": "price:xai/grok-4.3:standard:short:current", "defaultPriceSelectionRule": [ "current_effective", @@ -612,7 +612,7 @@ "verificationStatus": "partially_verified" }, { - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "defaultPriceRecordId": "price:xai/grok-4.3:standard:short:current", "defaultPriceSelectionRule": [ "current_effective", diff --git a/data/pricing-v2-preview/generated/seed-pricing.preview.sql b/data/pricing-v2-preview/generated/seed-pricing.preview.sql index 774d041..77e0450 100644 --- a/data/pricing-v2-preview/generated/seed-pricing.preview.sql +++ b/data/pricing-v2-preview/generated/seed-pricing.preview.sql @@ -1,33 +1,37 @@ --- AICostBudget Pricing V2 preview seed. --- Generated from data/pricing-v2-preview/*.json; not a production Supabase seed. begin; create table if not exists pricing_v2_preview_sources (source_id text primary key, payload jsonb not null); create table if not exists pricing_v2_preview_models (internal_id text primary key, payload jsonb not null); create table if not exists pricing_v2_preview_prices (pricing_id text primary key, model_internal_id text not null, payload jsonb not null); -insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "docs.anthropic.com", "providerId": "anthropic", "sourceId": "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Anthropic official source", "url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "docs.anthropic.com", "providerId": "anthropic", "sourceId": "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Anthropic official source", "url": "https://docs.anthropic.com/en/docs/about-claude/pricing#claude-sonnet-5-introductory-pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:platform-claude-com-docs-en-about-claude-pricing', '{"accessedAt": "2026-07-03", "checkedAt": "2026-07-03", "officialProviderDomain": "platform.claude.com", "providerId": "anthropic", "sourceId": "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Anthropic official source", "url": "https://platform.claude.com/docs/en/about-claude/pricing", "verificationStatus": "partially_verified", "verifiedAt": null}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:cohere:cohere-com-pricing', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "cohere.com", "providerId": "cohere", "sourceId": "source:cohere:cohere-com-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Cohere official source", "url": "https://cohere.com/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "docs.anthropic.com", "providerId": "anthropic", "sourceId": "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Anthropic official source", "url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:platform-claude-com-docs-en-about-claude-models-overview', '{"accessedAt": "2026-07-29T00:00:00Z", "checkedAt": "2026-07-29T00:00:00Z", "officialProviderDomain": "platform.claude.com", "providerId": "anthropic", "sourceId": "source:anthropic:platform-claude-com-docs-en-about-claude-models-overview", "sourceType": "official_model_docs", "supports": ["models", "availability"], "title": "Anthropic Claude model overview", "url": "https://platform.claude.com/docs/en/about-claude/models/overview", "verificationStatus": "verified", "verifiedAt": "2026-07-29T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:platform-claude-com-docs-en-about-claude-pricing', '{"accessedAt": "2026-07-29T00:00:00Z", "checkedAt": "2026-07-29T00:00:00Z", "officialProviderDomain": "platform.claude.com", "providerId": "anthropic", "sourceId": "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Anthropic official source", "url": "https://platform.claude.com/docs/en/about-claude/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-29T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:platform-claude-com-docs-en-build-with-claude-batch-processing', '{"accessedAt": "2026-07-29T00:00:00Z", "checkedAt": "2026-07-29T00:00:00Z", "officialProviderDomain": "platform.claude.com", "providerId": "anthropic", "sourceId": "source:anthropic:platform-claude-com-docs-en-build-with-claude-batch-processing", "sourceType": "official_pricing_page", "supports": ["pricing", "batch"], "title": "Anthropic batch processing documentation", "url": "https://platform.claude.com/docs/en/build-with-claude/batch-processing", "verificationStatus": "verified", "verifiedAt": "2026-07-29T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:www-anthropic-com-news-claude-opus-5', '{"accessedAt": "2026-07-29T00:00:00Z", "checkedAt": "2026-07-29T00:00:00Z", "officialProviderDomain": "anthropic.com", "providerId": "anthropic", "sourceId": "source:anthropic:www-anthropic-com-news-claude-opus-5", "sourceType": "official_release_announcement", "supports": ["models", "release"], "title": "Anthropic Claude Opus 5 announcement", "url": "https://www.anthropic.com/news/claude-opus-5", "verificationStatus": "verified", "verifiedAt": "2026-07-29T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:anthropic:www-anthropic-com-news-claude-sonnet-5', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "anthropic.com", "providerId": "anthropic", "sourceId": "source:anthropic:www-anthropic-com-news-claude-sonnet-5", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Anthropic official source", "url": "https://www.anthropic.com/news/claude-sonnet-5", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:cohere:cohere-com-pricing', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "cohere.com", "providerId": "cohere", "sourceId": "source:cohere:cohere-com-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Cohere official source", "url": "https://cohere.com/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:cohere:docs-cohere-com-docs-command-a-plus', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "cohere.com", "providerId": "cohere", "sourceId": "source:cohere:docs-cohere-com-docs-command-a-plus", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Cohere official source", "url": "https://docs.cohere.com/docs/command-a-plus", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; insert into pricing_v2_preview_sources (source_id, payload) values ('source:cohere:docs-cohere-com-docs-how-does-cohere-pricing-work', '{"accessedAt": "2026-07-07T00:00:00Z", "checkedAt": "2026-07-07T00:00:00Z", "officialProviderDomain": "cohere.com", "providerId": "cohere", "sourceId": "source:cohere:docs-cohere-com-docs-how-does-cohere-pricing-work", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Cohere official pricing methodology", "url": "https://docs.cohere.com/docs/how-does-cohere-pricing-work", "verificationStatus": "verified", "verifiedAt": "2026-07-07T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; insert into pricing_v2_preview_sources (source_id, payload) values ('source:cohere:docs-cohere-com-docs-models', '{"accessedAt": "2026-07-07T00:00:00Z", "checkedAt": "2026-07-07T00:00:00Z", "officialProviderDomain": "cohere.com", "providerId": "cohere", "sourceId": "source:cohere:docs-cohere-com-docs-models", "sourceType": "official_model_page", "supports": ["models"], "title": "Cohere official model documentation", "url": "https://docs.cohere.com/docs/models", "verificationStatus": "verified", "verifiedAt": "2026-07-07T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:deepseek:api-docs-deepseek-com-quick_start-pricing', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "api-docs.deepseek.com", "providerId": "deepseek", "sourceId": "source:deepseek:api-docs-deepseek-com-quick_start-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "DeepSeek official source", "url": "https://api-docs.deepseek.com/quick_start/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:google-gemini:ai-google-dev-gemini-api-docs-pricing', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "ai.google.dev", "providerId": "google-gemini", "sourceId": "source:google-gemini:ai-google-dev-gemini-api-docs-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Google official source", "url": "https://ai.google.dev/gemini-api/docs/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:mistral-ai:mistral-ai-pricing', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "mistral.ai", "providerId": "mistral-ai", "sourceId": "source:mistral-ai:mistral-ai-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Mistral AI official source", "url": "https://mistral.ai/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:deepseek:api-docs-deepseek-com-quick_start-pricing', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "api-docs.deepseek.com", "providerId": "deepseek", "sourceId": "source:deepseek:api-docs-deepseek-com-quick_start-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "DeepSeek official source", "url": "https://api-docs.deepseek.com/quick_start/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:google-gemini:ai-google-dev-gemini-api-docs-pricing', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "ai.google.dev", "providerId": "google-gemini", "sourceId": "source:google-gemini:ai-google-dev-gemini-api-docs-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Google official source", "url": "https://ai.google.dev/gemini-api/docs/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:mistral-ai:mistral-ai-pricing-api', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "mistral.ai", "providerId": "mistral-ai", "sourceId": "source:mistral-ai:mistral-ai-pricing-api", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "Mistral AI official source", "url": "https://mistral.ai/pricing/api/", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; insert into pricing_v2_preview_sources (source_id, payload) values ('source:openai:developers-openai-com-api-docs-models', '{"accessedAt": "2026-07-07T00:00:00Z", "checkedAt": "2026-07-07T00:00:00Z", "officialProviderDomain": "developers.openai.com", "providerId": "openai", "sourceId": "source:openai:developers-openai-com-api-docs-models", "sourceType": "official_model_page", "supports": ["models"], "title": "OpenAI official API models", "url": "https://developers.openai.com/api/docs/models", "verificationStatus": "verified", "verifiedAt": "2026-07-07T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; insert into pricing_v2_preview_sources (source_id, payload) values ('source:openai:developers-openai-com-api-docs-pricing', '{"accessedAt": "2026-07-07T00:00:00Z", "checkedAt": "2026-07-07T00:00:00Z", "officialProviderDomain": "developers.openai.com", "providerId": "openai", "sourceId": "source:openai:developers-openai-com-api-docs-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "OpenAI official API pricing", "url": "https://developers.openai.com/api/docs/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-07T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:openai:platform-openai-com-docs-pricing', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "platform.openai.com", "providerId": "openai", "sourceId": "source:openai:platform-openai-com-docs-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "OpenAI official source", "url": "https://platform.openai.com/docs/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:openai:platform-openai-com-docs-pricing', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "platform.openai.com", "providerId": "openai", "sourceId": "source:openai:platform-openai-com-docs-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "OpenAI official source", "url": "https://platform.openai.com/docs/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; insert into pricing_v2_preview_sources (source_id, payload) values ('source:xai:docs-x-ai-developers-migration-may-15-retirement', '{"accessedAt": "2026-07-06", "checkedAt": "2026-07-06", "officialProviderDomain": "docs.x.ai", "providerId": "xai", "sourceId": "source:xai:docs-x-ai-developers-migration-may-15-retirement", "sourceType": "official_deprecation_or_redirect", "supports": ["billing", "pricing", "redirect", "retirement"], "title": "xAI official source", "url": "https://docs.x.ai/developers/migration/may-15-retirement", "verificationStatus": "verified", "verifiedAt": "2026-07-06"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_sources (source_id, payload) values ('source:xai:docs-x-ai-developers-models', '{"accessedAt": "2026-07-05T00:00:00Z", "checkedAt": "2026-07-05T00:00:00Z", "officialProviderDomain": "docs.x.ai", "providerId": "xai", "sourceId": "source:xai:docs-x-ai-developers-models", "sourceType": "official_model_docs", "supports": ["pricing"], "title": "xAI official source", "url": "https://docs.x.ai/developers/models", "verificationStatus": "verified", "verifiedAt": "2026-07-05T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:xai:docs-x-ai-developers-models', '{"accessedAt": "2026-07-03", "checkedAt": "2026-07-03", "officialProviderDomain": "docs.x.ai", "providerId": "xai", "sourceId": "source:xai:docs-x-ai-developers-models", "sourceType": "official_model_docs", "supports": ["pricing"], "title": "xAI official source", "url": "https://docs.x.ai/developers/models", "verificationStatus": "partially_verified", "verifiedAt": null}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_sources (source_id, payload) values ('source:xai:docs-x-ai-developers-pricing', '{"accessedAt": "2026-07-27T00:00:00Z", "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "docs.x.ai", "providerId": "xai", "sourceId": "source:xai:docs-x-ai-developers-pricing", "sourceType": "official_pricing_page", "supports": ["pricing"], "title": "xAI official source", "url": "https://docs.x.ai/developers/pricing", "verificationStatus": "verified", "verifiedAt": "2026-07-27T00:00:00Z"}'::jsonb) on conflict (source_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-fable-5', '{"availability": "Standard", "canonicalOfficialId": "claude-fable-5", "defaultPriceRecordId": "price:anthropic/claude-fable-5:standard:short:website-preview", "displayName": "Claude Fable 5", "internalId": "anthropic/claude-fable-5", "lifecycleStatus": "active", "officialIds": [{"id": "claude-fable-5", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-haiku-4.5', '{"availability": "Standard", "canonicalOfficialId": "claude-haiku-4.5", "defaultPriceRecordId": "price:anthropic/claude-haiku-4.5:standard:short:current", "displayName": "Claude Haiku 4.5", "internalId": "anthropic/claude-haiku-4.5", "lifecycleStatus": "active", "officialIds": [{"id": "claude-haiku-4.5", "source": "public_dataset", "type": "canonical"}, {"id": "claude-haiku-4.5", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-mythos-5', '{"availability": "Limited availability", "canonicalOfficialId": "claude-mythos-5", "defaultPriceRecordId": "price:anthropic/claude-mythos-5:standard:short:website-preview", "displayName": "Claude Mythos 5", "internalId": "anthropic/claude-mythos-5", "lifecycleStatus": "active", "officialIds": [{"id": "claude-mythos-5", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-opus-4.1', '{"availability": "Deprecated", "canonicalOfficialId": "claude-opus-4.1", "defaultPriceRecordId": "price:anthropic/claude-opus-4.1:standard:short:website-preview", "displayName": "Claude Opus 4.1", "internalId": "anthropic/claude-opus-4.1", "lifecycleStatus": "deprecated", "officialIds": [{"id": "claude-opus-4.1", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "legacy", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-opus-4.8', '{"availability": "Standard", "canonicalOfficialId": "claude-opus-4.8", "defaultPriceRecordId": "price:anthropic/claude-opus-4.8:standard:short:current", "displayName": "Claude Opus 4.8", "internalId": "anthropic/claude-opus-4.8", "lifecycleStatus": "active", "officialIds": [{"id": "claude-opus-4.8", "source": "public_dataset", "type": "canonical"}, {"id": "claude-opus-4.8", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-opus-5', '{"availability": "Standard", "canonicalOfficialId": "claude-opus-5", "defaultPriceRecordId": "price:anthropic/claude-opus-5:standard:short:current", "displayName": "Claude Opus 5", "internalId": "anthropic/claude-opus-5", "lifecycleStatus": "active", "officialIds": [{"id": "claude-opus-5", "source": "public_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-sonnet-4', '{"availability": "Retired except partner clouds", "canonicalOfficialId": "claude-sonnet-4", "defaultPriceRecordId": "price:anthropic/claude-sonnet-4:standard:short:website-preview", "displayName": "Claude Sonnet 4", "internalId": "anthropic/claude-sonnet-4", "lifecycleStatus": "retired", "officialIds": [{"id": "claude-sonnet-4", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "legacy", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-sonnet-4.6', '{"availability": "Standard", "canonicalOfficialId": "claude-sonnet-4.6", "defaultPriceRecordId": "price:anthropic/claude-sonnet-4.6:standard:short:current", "displayName": "Claude Sonnet 4.6", "internalId": "anthropic/claude-sonnet-4.6", "lifecycleStatus": "active", "officialIds": [{"id": "claude-sonnet-4.6", "source": "public_dataset", "type": "canonical"}, {"id": "claude-sonnet-4.6", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-sonnet-5', '{"availability": "Standard", "canonicalOfficialId": "claude-sonnet-5", "defaultPriceRecordId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", "displayName": "Claude Sonnet 5", "internalId": "anthropic/claude-sonnet-5", "lifecycleStatus": "active", "officialIds": [{"id": "claude-sonnet-5", "source": "public_dataset", "type": "canonical"}, {"id": "claude-sonnet-5", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_models (internal_id, payload) values ('anthropic/claude-sonnet-5', '{"availability": "Standard", "canonicalOfficialId": "claude-sonnet-5", "defaultPriceRecordId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", "displayName": "Claude Sonnet 5", "internalId": "anthropic/claude-sonnet-5", "lifecycleStatus": "active", "officialIds": [{"id": "claude-sonnet-5", "source": "public_dataset", "type": "canonical"}, {"id": "claude-sonnet-5", "source": "website_dataset", "type": "canonical"}], "providerId": "anthropic", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing", "source:anthropic:www-anthropic-com-news-claude-sonnet-5"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('cohere/aya-expanse-32b', '{"availability": "active", "canonicalOfficialId": "aya-expanse-32b", "defaultPriceRecordId": "price:cohere/aya-expanse-32b:standard:short:current", "displayName": "Aya Expanse 32B", "internalId": "cohere/aya-expanse-32b", "lifecycleStatus": "active", "officialIds": [{"id": "aya-expanse-32b", "source": "public_dataset", "type": "canonical"}], "providerId": "cohere", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:cohere:cohere-com-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_models (internal_id, payload) values ('cohere/command-a-plus', '{"availability": "active", "canonicalOfficialId": "command-a-plus", "defaultPriceRecordId": null, "displayName": "Command A+", "internalId": "cohere/command-a-plus", "lifecycleStatus": "active", "officialIds": [{"id": "command-a-plus", "source": "public_dataset", "type": "canonical"}], "providerId": "cohere", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:cohere:cohere-com-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_models (internal_id, payload) values ('cohere/command-a-plus', '{"availability": "active", "canonicalOfficialId": "command-a-plus", "defaultPriceRecordId": null, "displayName": "Command A+", "internalId": "cohere/command-a-plus", "lifecycleStatus": "active", "officialIds": [{"id": "command-a-plus", "source": "public_dataset", "type": "canonical"}], "providerId": "cohere", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:cohere:docs-cohere-com-docs-command-a-plus"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('cohere/command-r-plus-08-2024', '{"availability": "active", "canonicalOfficialId": "command-r-plus-08-2024", "defaultPriceRecordId": "price:cohere/command-r-plus-08-2024:standard:short:current", "displayName": "Command R+ 08-2024", "internalId": "cohere/command-r-plus-08-2024", "lifecycleStatus": "active", "officialIds": [{"id": "command-r-plus-08-2024", "source": "public_dataset", "type": "canonical"}], "providerId": "cohere", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:cohere:cohere-com-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('deepseek/deepseek-v4-flash', '{"availability": "Standard", "canonicalOfficialId": "deepseek-v4-flash", "defaultPriceRecordId": "price:deepseek/deepseek-v4-flash:standard:short:current", "displayName": "DeepSeek V4 Flash", "internalId": "deepseek/deepseek-v4-flash", "lifecycleStatus": "active", "officialIds": [{"id": "deepseek-v4-flash", "source": "public_dataset", "type": "canonical"}, {"id": "deepseek-v4-flash", "source": "website_dataset", "type": "canonical"}], "providerId": "deepseek", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:deepseek:api-docs-deepseek-com-quick_start-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('deepseek/deepseek-v4-pro', '{"availability": "Standard", "canonicalOfficialId": "deepseek-v4-pro", "defaultPriceRecordId": "price:deepseek/deepseek-v4-pro:standard:short:current", "displayName": "DeepSeek V4 Pro", "internalId": "deepseek/deepseek-v4-pro", "lifecycleStatus": "active", "officialIds": [{"id": "deepseek-v4-pro", "source": "public_dataset", "type": "canonical"}, {"id": "deepseek-v4-pro", "source": "website_dataset", "type": "canonical"}], "providerId": "deepseek", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:deepseek:api-docs-deepseek-com-quick_start-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; @@ -37,7 +41,7 @@ insert into pricing_v2_preview_models (internal_id, payload) values ('google-gem insert into pricing_v2_preview_models (internal_id, payload) values ('google-gemini/gemini-3.1-flash-lite', '{"availability": "Standard", "canonicalOfficialId": "gemini-3.1-flash-lite", "defaultPriceRecordId": "price:google-gemini/gemini-3.1-flash-lite:standard:short:website-preview", "displayName": "Gemini 3.1 Flash-Lite", "internalId": "google-gemini/gemini-3.1-flash-lite", "lifecycleStatus": "active", "officialIds": [{"id": "gemini-3.1-flash-lite", "source": "website_dataset", "type": "canonical"}], "providerId": "google-gemini", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:google-gemini:ai-google-dev-gemini-api-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('google-gemini/gemini-3.1-pro-preview', '{"availability": "Preview", "canonicalOfficialId": "gemini-3.1-pro-preview", "defaultPriceRecordId": "price:google-gemini/gemini-3.1-pro-preview:standard:short:website-preview", "displayName": "Gemini 3.1 Pro Preview", "internalId": "google-gemini/gemini-3.1-pro-preview", "lifecycleStatus": "active", "officialIds": [{"id": "gemini-3.1-pro-preview", "source": "website_dataset", "type": "canonical"}], "providerId": "google-gemini", "releaseStage": "preview", "routingBehavior": "direct", "sourceRefs": ["source:google-gemini:ai-google-dev-gemini-api-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('google-gemini/gemini-3.5-flash', '{"availability": "Standard", "canonicalOfficialId": "gemini-3.5-flash", "defaultPriceRecordId": "price:google-gemini/gemini-3.5-flash:standard:short:website-preview", "displayName": "Gemini 3.5 Flash", "internalId": "google-gemini/gemini-3.5-flash", "lifecycleStatus": "active", "officialIds": [{"id": "gemini-3.5-flash", "source": "website_dataset", "type": "canonical"}], "providerId": "google-gemini", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:google-gemini:ai-google-dev-gemini-api-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_models (internal_id, payload) values ('mistral-ai/mistral-large', '{"availability": "active", "canonicalOfficialId": "mistral-large", "defaultPriceRecordId": "price:mistral-ai/mistral-large:standard:short:current", "displayName": "Mistral Large", "internalId": "mistral-ai/mistral-large", "lifecycleStatus": "active", "officialIds": [{"id": "mistral-large", "source": "public_dataset", "type": "canonical"}], "providerId": "mistral-ai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:mistral-ai:mistral-ai-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_models (internal_id, payload) values ('mistral-ai/mistral-large', '{"availability": "active", "canonicalOfficialId": "mistral-large", "defaultPriceRecordId": "price:mistral-ai/mistral-large:standard:short:current", "displayName": "Mistral Large 3", "internalId": "mistral-ai/mistral-large", "lifecycleStatus": "active", "officialIds": [{"id": "mistral-large", "source": "public_dataset", "type": "canonical"}], "providerId": "mistral-ai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:mistral-ai:mistral-ai-pricing-api"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('openai/chatgpt-chat-latest', '{"availability": "ChatGPT category", "canonicalOfficialId": "chatgpt-chat-latest", "defaultPriceRecordId": "price:openai/chatgpt-chat-latest:standard:short:website-preview", "displayName": "chat-latest", "internalId": "openai/chatgpt-chat-latest", "lifecycleStatus": "active", "officialIds": [{"id": "chatgpt-chat-latest", "source": "website_dataset", "type": "canonical"}], "providerId": "openai", "releaseStage": "specialized", "routingBehavior": "direct", "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('openai/gpt-4.1', '{"availability": "Legacy", "canonicalOfficialId": "gpt-4.1", "defaultPriceRecordId": null, "displayName": "GPT-4.1", "internalId": "openai/gpt-4.1", "lifecycleStatus": "deprecated", "officialIds": [{"id": "gpt-4.1", "source": "public_dataset", "type": "canonical"}, {"id": "gpt-4.1", "source": "website_dataset", "type": "canonical"}], "providerId": "openai", "releaseStage": "legacy", "routingBehavior": "direct", "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing", "source:openai:platform-openai-com-docs-pricing"], "verificationStatus": "review_required"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('openai/gpt-4.1-mini', '{"availability": "Legacy", "canonicalOfficialId": "gpt-4.1-mini", "defaultPriceRecordId": null, "displayName": "GPT-4.1 mini", "internalId": "openai/gpt-4.1-mini", "lifecycleStatus": "deprecated", "officialIds": [{"id": "gpt-4.1-mini", "source": "website_dataset", "type": "canonical"}], "providerId": "openai", "releaseStage": "legacy", "routingBehavior": "direct", "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing"], "verificationStatus": "review_required"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; @@ -54,7 +58,7 @@ insert into pricing_v2_preview_models (internal_id, payload) values ('openai/gpt insert into pricing_v2_preview_models (internal_id, payload) values ('openai/gpt-5.6-sol', '{"availability": "Standard", "canonicalOfficialId": "gpt-5.6-sol", "defaultPriceRecordId": "price:openai/gpt-5.6-sol:standard:short:current", "displayName": "GPT-5.6 Sol", "internalId": "openai/gpt-5.6-sol", "lifecycleStatus": "active", "officialIds": [{"id": "gpt-5.6-sol", "source": "public_dataset", "type": "canonical"}, {"id": "gpt-5.6-sol", "source": "website_dataset", "type": "canonical"}], "providerId": "openai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('openai/gpt-5.6-terra', '{"availability": "Standard", "canonicalOfficialId": "gpt-5.6-terra", "defaultPriceRecordId": "price:openai/gpt-5.6-terra:standard:short:current", "displayName": "GPT-5.6 Terra", "internalId": "openai/gpt-5.6-terra", "lifecycleStatus": "active", "officialIds": [{"id": "gpt-5.6-terra", "source": "public_dataset", "type": "canonical"}, {"id": "gpt-5.6-terra", "source": "website_dataset", "type": "canonical"}], "providerId": "openai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('openai/o3', '{"availability": "active", "canonicalOfficialId": "o3", "defaultPriceRecordId": null, "displayName": "o3", "internalId": "openai/o3", "lifecycleStatus": "active", "officialIds": [{"id": "o3", "source": "public_dataset", "type": "canonical"}], "providerId": "openai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:openai:platform-openai-com-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; -insert into pricing_v2_preview_models (internal_id, payload) values ('xai/grok-4.3', '{"availability": "Standard", "canonicalOfficialId": "grok-4.3", "defaultPriceRecordId": "price:xai/grok-4.3:standard:short:current", "displayName": "Grok 4.3", "internalId": "xai/grok-4.3", "lifecycleStatus": "active", "officialIds": [{"id": "grok-4.3", "source": "public_dataset", "type": "canonical"}, {"id": "grok-4.3", "source": "website_dataset", "type": "canonical"}], "providerId": "xai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:xai:docs-x-ai-developers-models"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; +insert into pricing_v2_preview_models (internal_id, payload) values ('xai/grok-4.3', '{"availability": "Standard", "canonicalOfficialId": "grok-4.3", "defaultPriceRecordId": "price:xai/grok-4.3:standard:short:current", "displayName": "Grok 4.3", "internalId": "xai/grok-4.3", "lifecycleStatus": "active", "officialIds": [{"id": "grok-4.3", "source": "public_dataset", "type": "canonical"}, {"id": "grok-4.3", "source": "website_dataset", "type": "canonical"}], "providerId": "xai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:xai:docs-x-ai-developers-models", "source:xai:docs-x-ai-developers-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_models (internal_id, payload) values ('xai/grok-build-0.1', '{"availability": "Coding", "canonicalOfficialId": "grok-build-0.1", "defaultPriceRecordId": "price:xai/grok-build-0.1:standard:short:website-preview", "displayName": "Grok Build 0.1", "internalId": "xai/grok-build-0.1", "lifecycleStatus": "active", "officialIds": [{"id": "grok-build-0.1", "source": "website_dataset", "type": "canonical"}], "providerId": "xai", "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": ["source:xai:docs-x-ai-developers-models"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (internal_id) do update set payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-fable-5:standard:short:website-preview', 'anthropic/claude-fable-5', '{"billingNote": "Anthropic also lists 5-minute and 1-hour cache write prices. This calculator uses base input, cache hit, and output prices.", "calculationDefault": true, "charges": [{"amount": "10", "chargeId": "price:anthropic/claude-fable-5:standard:short:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "1", "chargeId": "price:anthropic/claude-fable-5:standard:short:website-preview:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "50", "chargeId": "price:anthropic/claude-fable-5:standard:short:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "anthropic/claude-fable-5", "pricingId": "price:anthropic/claude-fable-5:standard:short:website-preview", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["claude-fable-5"]}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-haiku-4.5:standard:short:current', 'anthropic/claude-haiku-4.5', '{"billingNote": "cache_write stores the 5-minute write rate.", "calculationDefault": true, "charges": [{"amount": "1", "chargeId": "price:anthropic/claude-haiku-4.5:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.1", "chargeId": "price:anthropic/claude-haiku-4.5:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "1.25", "chargeId": "price:anthropic/claude-haiku-4.5:standard:short:current:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "5", "chargeId": "price:anthropic/claude-haiku-4.5:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "anthropic/claude-haiku-4.5", "pricingId": "price:anthropic/claude-haiku-4.5:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-haiku-4.5"], "websiteIds": ["claude-haiku-4.5"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; @@ -63,14 +67,16 @@ insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) v insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-opus-4.1:standard:short:website-preview', 'anthropic/claude-opus-4.1', '{"billingNote": "Anthropic marks Claude Opus 4.1 as deprecated. Kept only for old forecast comparison.", "calculationDefault": true, "charges": [{"amount": "15", "chargeId": "price:anthropic/claude-opus-4.1:standard:short:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "1.5", "chargeId": "price:anthropic/claude-opus-4.1:standard:short:website-preview:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "75", "chargeId": "price:anthropic/claude-opus-4.1:standard:short:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "anthropic/claude-opus-4.1", "pricingId": "price:anthropic/claude-opus-4.1:standard:short:website-preview", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["claude-opus-4.1"]}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-opus-4.8:standard:short:current', 'anthropic/claude-opus-4.8', '{"billingNote": "Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate.", "calculationDefault": true, "charges": [{"amount": "5", "chargeId": "price:anthropic/claude-opus-4.8:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.5", "chargeId": "price:anthropic/claude-opus-4.8:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "6.25", "chargeId": "price:anthropic/claude-opus-4.8:standard:short:current:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "25", "chargeId": "price:anthropic/claude-opus-4.8:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "anthropic/claude-opus-4.8", "pricingId": "price:anthropic/claude-opus-4.8:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-opus-4.8"], "websiteIds": ["claude-opus-4.8"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-opus-4.8:batch:short:current', 'anthropic/claude-opus-4.8', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for anthropic/claude-opus-4.8.", "calculationDefault": false, "charges": [{"amount": "2.5", "chargeId": "price:anthropic/claude-opus-4.8:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "12.5", "chargeId": "price:anthropic/claude-opus-4.8:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "anthropic/claude-opus-4.8", "pricingId": "price:anthropic/claude-opus-4.8:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-opus-4.8"], "websiteIds": ["claude-opus-4.8"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-opus-5:standard:short:current', 'anthropic/claude-opus-5', '{"billingNote": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", "calculationDefault": true, "charges": [{"amount": "5", "chargeId": "price:anthropic/claude-opus-5:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.5", "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "6.25", "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "10", "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cache_write_1h:text:per_1m_tokens", "component": "cache_write_1h", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "25", "chargeId": "price:anthropic/claude-opus-5:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-24", "effectiveUntil": null, "modelInternalId": "anthropic/claude-opus-5", "pricingId": "price:anthropic/claude-opus-5:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-opus-5"], "websiteIds": []}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-opus-5:batch:short:current', 'anthropic/claude-opus-5', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for anthropic/claude-opus-5.", "calculationDefault": false, "charges": [{"amount": "2.5", "chargeId": "price:anthropic/claude-opus-5:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "12.5", "chargeId": "price:anthropic/claude-opus-5:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-24", "effectiveUntil": null, "modelInternalId": "anthropic/claude-opus-5", "pricingId": "price:anthropic/claude-opus-5:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-opus-5"], "websiteIds": []}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-4:standard:short:website-preview', 'anthropic/claude-sonnet-4', '{"billingNote": "Anthropic marks Sonnet 4 as retired except on Bedrock and Vertex AI.", "calculationDefault": true, "charges": [{"amount": "3", "chargeId": "price:anthropic/claude-sonnet-4:standard:short:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.3", "chargeId": "price:anthropic/claude-sonnet-4:standard:short:website-preview:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "15", "chargeId": "price:anthropic/claude-sonnet-4:standard:short:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "anthropic/claude-sonnet-4", "pricingId": "price:anthropic/claude-sonnet-4:standard:short:website-preview", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["claude-sonnet-4"]}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-4.6:standard:short:current', 'anthropic/claude-sonnet-4.6', '{"billingNote": "cache_write stores the 5-minute write rate.", "calculationDefault": true, "charges": [{"amount": "3", "chargeId": "price:anthropic/claude-sonnet-4.6:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.3", "chargeId": "price:anthropic/claude-sonnet-4.6:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "3.75", "chargeId": "price:anthropic/claude-sonnet-4.6:standard:short:current:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "15", "chargeId": "price:anthropic/claude-sonnet-4.6:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "anthropic/claude-sonnet-4.6", "pricingId": "price:anthropic/claude-sonnet-4.6:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-4.6"], "websiteIds": ["claude-sonnet-4.6"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-4.6:batch:short:current', 'anthropic/claude-sonnet-4.6', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for anthropic/claude-sonnet-4.6.", "calculationDefault": false, "charges": [{"amount": "1.5", "chargeId": "price:anthropic/claude-sonnet-4.6:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "7.5", "chargeId": "price:anthropic/claude-sonnet-4.6:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "anthropic/claude-sonnet-4.6", "pricingId": "price:anthropic/claude-sonnet-4.6:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-4.6"], "websiteIds": ["claude-sonnet-4.6"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; -insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-5:standard:intro:2026-07-05', 'anthropic/claude-sonnet-5', '{"billingNote": "Introductory pricing is listed by Anthropic as effective through 2026-08-31; standard pricing starts 2026-09-01.", "calculationDefault": true, "charges": [{"amount": "2", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.2", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "2.5", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "10", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-05", "effectiveUntil": "2026-08-31", "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-5-intro"], "websiteIds": ["claude-sonnet-5"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; -insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-5:standard:short:2026-09-01', 'anthropic/claude-sonnet-5', '{"billingNote": "Future standard pricing for Claude Sonnet 5 starts 2026-09-01 per Anthropic official pricing.", "calculationDefault": false, "charges": [{"amount": "3", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.3", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "3.75", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "15", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-09-01", "effectiveUntil": null, "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-5"], "websiteIds": ["claude-sonnet-5"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; -insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-5:batch:short:current', 'anthropic/claude-sonnet-5', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for anthropic/claude-sonnet-5.", "calculationDefault": false, "charges": [{"amount": "1", "chargeId": "price:anthropic/claude-sonnet-5:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "5", "chargeId": "price:anthropic/claude-sonnet-5:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-05", "effectiveUntil": "2026-08-31", "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-5-intro"], "websiteIds": ["claude-sonnet-5"]}, "sourceRefs": ["source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", "source:anthropic:platform-claude-com-docs-en-about-claude-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-5:standard:intro:2026-07-05', 'anthropic/claude-sonnet-5', '{"billingNote": "Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates.", "calculationDefault": true, "charges": [{"amount": "2", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.2", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "2.5", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "10", "chargeId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-06-30", "effectiveUntil": "2026-08-31", "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-5-intro"], "websiteIds": ["claude-sonnet-5"]}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing", "source:anthropic:www-anthropic-com-news-claude-sonnet-5"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-5:standard:short:2026-09-01', 'anthropic/claude-sonnet-5', '{"billingNote": "Future standard pricing for Claude Sonnet 5 starts 2026-09-01 per Anthropic official pricing.", "calculationDefault": false, "charges": [{"amount": "3", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.3", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "3.75", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:cache_write_5m:text:per_1m_tokens", "component": "cache_write_5m", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "15", "chargeId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-09-01", "effectiveUntil": null, "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-5"], "websiteIds": ["claude-sonnet-5"]}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing", "source:anthropic:www-anthropic-com-news-claude-sonnet-5"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:anthropic/claude-sonnet-5:batch:short:current', 'anthropic/claude-sonnet-5', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for anthropic/claude-sonnet-5.", "calculationDefault": false, "charges": [{"amount": "1", "chargeId": "price:anthropic/claude-sonnet-5:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "5", "chargeId": "price:anthropic/claude-sonnet-5:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-06-30", "effectiveUntil": "2026-08-31", "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["claude-sonnet-5-intro"], "websiteIds": ["claude-sonnet-5"]}, "sourceRefs": ["source:anthropic:platform-claude-com-docs-en-about-claude-pricing", "source:anthropic:www-anthropic-com-news-claude-sonnet-5"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:cohere/aya-expanse-32b:standard:short:current', 'cohere/aya-expanse-32b', '{"billingNote": "Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output.", "calculationDefault": true, "charges": [{"amount": "0.5", "chargeId": "price:cohere/aya-expanse-32b:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "1.5", "chargeId": "price:cohere/aya-expanse-32b:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "cohere/aya-expanse-32b", "pricingId": "price:cohere/aya-expanse-32b:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["aya-expanse-32b"], "websiteIds": []}, "sourceRefs": ["source:cohere:cohere-com-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; -insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:cohere/command-a-plus:standard:short:current', 'cohere/command-a-plus', '{"billingNote": "Cohere official pricing page lists Command A+ but the extracted public page did not expose a confirmed token price. Values are null rather than guessed.", "calculationDefault": false, "charges": [], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "cohere/command-a-plus", "pricingId": "price:cohere/command-a-plus:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["command-a-plus"], "websiteIds": []}, "sourceRefs": ["source:cohere:cohere-com-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:cohere/command-a-plus:standard:short:current', 'cohere/command-a-plus', '{"billingNote": "Cohere''s official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled.", "calculationDefault": false, "charges": [], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "cohere/command-a-plus", "pricingId": "price:cohere/command-a-plus:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["command-a-plus"], "websiteIds": []}, "sourceRefs": ["source:cohere:docs-cohere-com-docs-command-a-plus"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:cohere/command-r-plus-08-2024:standard:short:current', 'cohere/command-r-plus-08-2024', '{"billingNote": "Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens.", "calculationDefault": true, "charges": [{"amount": "2.5", "chargeId": "price:cohere/command-r-plus-08-2024:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "10", "chargeId": "price:cohere/command-r-plus-08-2024:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2024-08-01", "effectiveUntil": null, "modelInternalId": "cohere/command-r-plus-08-2024", "pricingId": "price:cohere/command-r-plus-08-2024:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["command-r-plus-08-2024"], "websiteIds": []}, "sourceRefs": ["source:cohere:cohere-com-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:deepseek/deepseek-v4-flash:standard:short:current', 'deepseek/deepseek-v4-flash', '{"billingNote": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "calculationDefault": true, "charges": [{"amount": "0.14", "chargeId": "price:deepseek/deepseek-v4-flash:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.0028", "chargeId": "price:deepseek/deepseek-v4-flash:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.28", "chargeId": "price:deepseek/deepseek-v4-flash:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "deepseek/deepseek-v4-flash", "pricingId": "price:deepseek/deepseek-v4-flash:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["deepseek-v4-flash"], "websiteIds": ["deepseek-v4-flash"]}, "sourceRefs": ["source:deepseek:api-docs-deepseek-com-quick_start-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:deepseek/deepseek-v4-pro:standard:short:current', 'deepseek/deepseek-v4-pro', '{"billingNote": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", "calculationDefault": true, "charges": [{"amount": "0.435", "chargeId": "price:deepseek/deepseek-v4-pro:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.003625", "chargeId": "price:deepseek/deepseek-v4-pro:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.87", "chargeId": "price:deepseek/deepseek-v4-pro:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "deepseek/deepseek-v4-pro", "pricingId": "price:deepseek/deepseek-v4-pro:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["deepseek-v4-pro"], "websiteIds": ["deepseek-v4-pro"]}, "sourceRefs": ["source:deepseek:api-docs-deepseek-com-quick_start-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; @@ -83,8 +89,8 @@ insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) v insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:google-gemini/gemini-3.1-pro-preview:standard:short:website-preview', 'google-gemini/gemini-3.1-pro-preview', '{"billingNote": "Prompts over 200K tokens cost more: $4 input, $0.40 cached input, $18 output per 1M tokens.", "calculationDefault": true, "charges": [{"amount": "2", "chargeId": "price:google-gemini/gemini-3.1-pro-preview:standard:short:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.2", "chargeId": "price:google-gemini/gemini-3.1-pro-preview:standard:short:website-preview:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "12", "chargeId": "price:google-gemini/gemini-3.1-pro-preview:standard:short:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "google-gemini/gemini-3.1-pro-preview", "pricingId": "price:google-gemini/gemini-3.1-pro-preview:standard:short:website-preview", "processingMode": "standard", "promptTokenThreshold": 200000, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["gemini-3.1-pro-preview"]}, "sourceRefs": ["source:google-gemini:ai-google-dev-gemini-api-docs-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:google-gemini/gemini-3.1-pro-preview:standard:long:website-preview', 'google-gemini/gemini-3.1-pro-preview', '{"billingNote": "Structured Gemini 3.1 Pro Preview standard pricing for prompts > 200k tokens.", "calculationDefault": false, "charges": [{"amount": "4", "chargeId": "price:google-gemini/gemini-3.1-pro-preview:standard:long:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.4", "chargeId": "price:google-gemini/gemini-3.1-pro-preview:standard:long:website-preview:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "18", "chargeId": "price:google-gemini/gemini-3.1-pro-preview:standard:long:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "long", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "google-gemini/gemini-3.1-pro-preview", "pricingId": "price:google-gemini/gemini-3.1-pro-preview:standard:long:website-preview", "processingMode": "standard", "promptTokenThreshold": 200000, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["gemini-3.1-pro-preview"]}, "sourceRefs": ["source:google-gemini:ai-google-dev-gemini-api-docs-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:google-gemini/gemini-3.5-flash:standard:short:website-preview', 'google-gemini/gemini-3.5-flash', '{"billingNote": "Current Gemini Flash tier for higher-quality fast workloads; Google also lists Batch and Priority pricing for eligible usage.", "calculationDefault": true, "charges": [{"amount": "1.5", "chargeId": "price:google-gemini/gemini-3.5-flash:standard:short:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.15", "chargeId": "price:google-gemini/gemini-3.5-flash:standard:short:website-preview:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "9", "chargeId": "price:google-gemini/gemini-3.5-flash:standard:short:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "google-gemini/gemini-3.5-flash", "pricingId": "price:google-gemini/gemini-3.5-flash:standard:short:website-preview", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["gemini-3.5-flash"]}, "sourceRefs": ["source:google-gemini:ai-google-dev-gemini-api-docs-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; -insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:mistral-ai/mistral-large:standard:short:current', 'mistral-ai/mistral-large', '{"billingNote": "Mistral official pricing FAQ states Mistral Large costs $2/M input and $6/M output and batch processing gets a 50% discount.", "calculationDefault": true, "charges": [{"amount": "2", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "6", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "mistral-ai/mistral-large", "pricingId": "price:mistral-ai/mistral-large:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["mistral-large"], "websiteIds": []}, "sourceRefs": ["source:mistral-ai:mistral-ai-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; -insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:mistral-ai/mistral-large:batch:short:current', 'mistral-ai/mistral-large', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for mistral-ai/mistral-large.", "calculationDefault": false, "charges": [{"amount": "1", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "3", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "mistral-ai/mistral-large", "pricingId": "price:mistral-ai/mistral-large:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["mistral-large"], "websiteIds": []}, "sourceRefs": ["source:mistral-ai:mistral-ai-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:mistral-ai/mistral-large:standard:short:current', 'mistral-ai/mistral-large', '{"billingNote": "mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount.", "calculationDefault": true, "charges": [{"amount": "0.5", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.05", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "1.5", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "mistral-ai/mistral-large", "pricingId": "price:mistral-ai/mistral-large:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["mistral-large"], "websiteIds": []}, "sourceRefs": ["source:mistral-ai:mistral-ai-pricing-api"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:mistral-ai/mistral-large:batch:short:current', 'mistral-ai/mistral-large', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for mistral-ai/mistral-large.", "calculationDefault": false, "charges": [{"amount": "0.25", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.75", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "mistral-ai/mistral-large", "pricingId": "price:mistral-ai/mistral-large:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["mistral-large"], "websiteIds": []}, "sourceRefs": ["source:mistral-ai:mistral-ai-pricing-api"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:openai/chatgpt-chat-latest:standard:short:website-preview', 'openai/chatgpt-chat-latest', '{"billingNote": "Use this for ChatGPT-style chat-latest estimates only. Production API model IDs may differ.", "calculationDefault": true, "charges": [{"amount": "5", "chargeId": "price:openai/chatgpt-chat-latest:standard:short:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.5", "chargeId": "price:openai/chatgpt-chat-latest:standard:short:website-preview:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "30", "chargeId": "price:openai/chatgpt-chat-latest:standard:short:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "openai/chatgpt-chat-latest", "pricingId": "price:openai/chatgpt-chat-latest:standard:short:website-preview", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["chatgpt-chat-latest"]}, "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:openai/gpt-4.1:standard:short:current', 'openai/gpt-4.1', '{"billingNote": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "calculationDefault": false, "charges": [{"amount": "2", "chargeId": "price:openai/gpt-4.1:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.5", "chargeId": "price:openai/gpt-4.1:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "8", "chargeId": "price:openai/gpt-4.1:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "openai/gpt-4.1", "pricingId": "price:openai/gpt-4.1:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["gpt-4.1"], "websiteIds": ["gpt-4.1"]}, "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing", "source:openai:platform-openai-com-docs-pricing"], "verificationStatus": "review_required"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:openai/gpt-4.1:batch:short:current', 'openai/gpt-4.1', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for openai/gpt-4.1.", "calculationDefault": false, "charges": [{"amount": "1", "chargeId": "price:openai/gpt-4.1:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "4", "chargeId": "price:openai/gpt-4.1:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "openai/gpt-4.1", "pricingId": "price:openai/gpt-4.1:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["gpt-4.1"], "websiteIds": ["gpt-4.1"]}, "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing", "source:openai:platform-openai-com-docs-pricing"], "verificationStatus": "review_required"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; @@ -124,6 +130,7 @@ insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) v insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:openai/gpt-5.6-terra:priority:short:current', 'openai/gpt-5.6-terra', '{"billingNote": "OpenAI official pricing page lists this GPT-5.6 tier and context class per 1M tokens.", "calculationDefault": false, "charges": [{"amount": "5", "chargeId": "price:openai/gpt-5.6-terra:priority:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.5", "chargeId": "price:openai/gpt-5.6-terra:priority:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "6.25", "chargeId": "price:openai/gpt-5.6-terra:priority:short:current:cache_write:text:per_1m_tokens", "component": "cache_write", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "30", "chargeId": "price:openai/gpt-5.6-terra:priority:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "openai/gpt-5.6-terra", "pricingId": "price:openai/gpt-5.6-terra:priority:short:current", "processingMode": "priority", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["gpt-5.6-terra"], "websiteIds": ["gpt-5.6-terra"]}, "sourceRefs": ["source:openai:developers-openai-com-api-docs-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:openai/o3:standard:short:current', 'openai/o3', '{"billingNote": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", "calculationDefault": false, "charges": [{"amount": "2", "chargeId": "price:openai/o3:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.5", "chargeId": "price:openai/o3:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "8", "chargeId": "price:openai/o3:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "openai/o3", "pricingId": "price:openai/o3:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["o3"], "websiteIds": []}, "sourceRefs": ["source:openai:platform-openai-com-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:openai/o3:batch:short:current', 'openai/o3', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for openai/o3.", "calculationDefault": false, "charges": [{"amount": "1", "chargeId": "price:openai/o3:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "4", "chargeId": "price:openai/o3:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "openai/o3", "pricingId": "price:openai/o3:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["o3"], "websiteIds": []}, "sourceRefs": ["source:openai:platform-openai-com-docs-pricing"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; -insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:xai/grok-4.3:standard:short:current', 'xai/grok-4.3', '{"billingNote": "xAI official model page lists Grok 4.3 input and output rates per 1M tokens. Cached and batch rates were not shown in the extracted official model card.", "calculationDefault": true, "charges": [{"amount": "1.25", "chargeId": "price:xai/grok-4.3:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "2.5", "chargeId": "price:xai/grok-4.3:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "xai/grok-4.3", "pricingId": "price:xai/grok-4.3:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["grok-4.3"], "websiteIds": ["grok-4.3"]}, "sourceRefs": ["source:xai:docs-x-ai-developers-models"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:xai/grok-4.3:standard:short:current', 'xai/grok-4.3', '{"billingNote": "V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields.", "calculationDefault": true, "charges": [{"amount": "1.25", "chargeId": "price:xai/grok-4.3:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "0.2", "chargeId": "price:xai/grok-4.3:standard:short:current:cached_input:text:per_1m_tokens", "component": "cached_input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "2.5", "chargeId": "price:xai/grok-4.3:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "xai/grok-4.3", "pricingId": "price:xai/grok-4.3:standard:short:current", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["grok-4.3"], "websiteIds": ["grok-4.3"]}, "sourceRefs": ["source:xai:docs-x-ai-developers-models", "source:xai:docs-x-ai-developers-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; +insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:xai/grok-4.3:batch:short:current', 'xai/grok-4.3', '{"billingNote": "Batch projection derived from explicit Public V1 batch fields for xai/grok-4.3.", "calculationDefault": false, "charges": [{"amount": "1", "chargeId": "price:xai/grok-4.3:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "2", "chargeId": "price:xai/grok-4.3:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": null, "effectiveUntil": null, "modelInternalId": "xai/grok-4.3", "pricingId": "price:xai/grok-4.3:batch:short:current", "processingMode": "batch", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": ["grok-4.3"], "websiteIds": ["grok-4.3"]}, "sourceRefs": ["source:xai:docs-x-ai-developers-models", "source:xai:docs-x-ai-developers-pricing"], "verificationStatus": "verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values ('price:xai/grok-build-0.1:standard:short:website-preview', 'xai/grok-build-0.1', '{"billingNote": "Fast coding model trained for agentic coding workflows.", "calculationDefault": true, "charges": [{"amount": "1", "chargeId": "price:xai/grok-build-0.1:standard:short:website-preview:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens"}, {"amount": "2", "chargeId": "price:xai/grok-build-0.1:standard:short:website-preview:output:text:per_1m_tokens", "component": "output", "modality": "text", "unit": "per_1m_tokens"}], "contextClass": "short", "currency": "USD", "effectiveFrom": "2026-07-03", "effectiveUntil": null, "modelInternalId": "xai/grok-build-0.1", "pricingId": "price:xai/grok-build-0.1:standard:short:website-preview", "processingMode": "standard", "promptTokenThreshold": null, "regionPolicy": "global", "sourceDatasetIds": {"publicDatasetIds": [], "websiteIds": ["grok-build-0.1"]}, "sourceRefs": ["source:xai:docs-x-ai-developers-models"], "verificationStatus": "partially_verified"}'::jsonb) on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload; commit; diff --git a/data/pricing-v2-preview/model-identity-registry.json b/data/pricing-v2-preview/model-identity-registry.json index e945414..b805a13 100644 --- a/data/pricing-v2-preview/model-identity-registry.json +++ b/data/pricing-v2-preview/model-identity-registry.json @@ -180,6 +180,39 @@ "claude-opus-4.8" ] }, + { + "aliasTargetInternalId": null, + "availability": "Standard", + "billingModelInternalId": null, + "canonicalOfficialId": "claude-opus-5", + "deprecationDate": null, + "displayName": "Claude Opus 5", + "identityType": "canonical_model", + "internalId": "anthropic/claude-opus-5", + "lifecycleStatus": "active", + "officialIds": [ + { + "id": "claude-opus-5", + "source": "public_dataset", + "type": "canonical" + } + ], + "providerId": "anthropic", + "publicDatasetIds": [ + "claude-opus-5" + ], + "redirectTargetInternalId": null, + "releaseStage": "stable", + "replacementInternalId": null, + "retirementDate": null, + "routingBehavior": "direct", + "routingDetails": {}, + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "verificationStatus": "partially_verified", + "websiteIds": [] + }, { "aliasTargetInternalId": null, "availability": "Retired except partner clouds", @@ -348,7 +381,7 @@ "routingBehavior": "direct", "routingDetails": {}, "sourceRefs": [ - "source:cohere:cohere-com-pricing" + "source:cohere:docs-cohere-com-docs-command-a-plus" ], "verificationStatus": "partially_verified", "websiteIds": [] @@ -758,7 +791,7 @@ "billingModelInternalId": null, "canonicalOfficialId": "mistral-large", "deprecationDate": null, - "displayName": "Mistral Large", + "displayName": "Mistral Large 3", "identityType": "canonical_model", "internalId": "mistral-ai/mistral-large", "lifecycleStatus": "active", @@ -780,7 +813,7 @@ "routingBehavior": "direct", "routingDetails": {}, "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "verificationStatus": "partially_verified", "websiteIds": [] @@ -1429,7 +1462,8 @@ "routingBehavior": "direct", "routingDetails": {}, "sourceRefs": [ - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "verificationStatus": "verified", "websiteIds": [ diff --git a/data/pricing-v2-preview/models.json b/data/pricing-v2-preview/models.json index 7f972f9..dcc48f6 100644 --- a/data/pricing-v2-preview/models.json +++ b/data/pricing-v2-preview/models.json @@ -121,6 +121,28 @@ ], "verificationStatus": "verified" }, + { + "availability": "Standard", + "canonicalOfficialId": "claude-opus-5", + "defaultPriceRecordId": "price:anthropic/claude-opus-5:standard:short:current", + "displayName": "Claude Opus 5", + "internalId": "anthropic/claude-opus-5", + "lifecycleStatus": "active", + "officialIds": [ + { + "id": "claude-opus-5", + "source": "public_dataset", + "type": "canonical" + } + ], + "providerId": "anthropic", + "releaseStage": "stable", + "routingBehavior": "direct", + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "verificationStatus": "partially_verified" + }, { "availability": "Retired except partner clouds", "canonicalOfficialId": "claude-sonnet-4", @@ -194,8 +216,8 @@ "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationStatus": "verified" }, @@ -239,7 +261,7 @@ "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": [ - "source:cohere:cohere-com-pricing" + "source:cohere:docs-cohere-com-docs-command-a-plus" ], "verificationStatus": "partially_verified" }, @@ -465,7 +487,7 @@ "availability": "active", "canonicalOfficialId": "mistral-large", "defaultPriceRecordId": "price:mistral-ai/mistral-large:standard:short:current", - "displayName": "Mistral Large", + "displayName": "Mistral Large 3", "internalId": "mistral-ai/mistral-large", "lifecycleStatus": "active", "officialIds": [ @@ -479,7 +501,7 @@ "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "verificationStatus": "partially_verified" }, @@ -891,7 +913,8 @@ "releaseStage": "stable", "routingBehavior": "direct", "sourceRefs": [ - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "verificationStatus": "verified" }, diff --git a/data/pricing-v2-preview/phase2-5-cutover-readiness.json b/data/pricing-v2-preview/phase2-5-cutover-readiness.json index b808b57..e53ec32 100644 --- a/data/pricing-v2-preview/phase2-5-cutover-readiness.json +++ b/data/pricing-v2-preview/phase2-5-cutover-readiness.json @@ -5,7 +5,7 @@ "Claude Sonnet 5 future standard PriceRecord is not present in the 47-record preview; effective-date switch remains blocked for cutover." ], "defaultPricingReadiness": "ready", - "generatedAt": "2026-07-10T00:00:00Z", + "generatedAt": "2026-07-29T00:00:00Z", "identityReadiness": "conditional", "provenanceReadiness": "conditional", "regressionReadiness": "pending_runtime_validation", diff --git a/data/pricing-v2-preview/phase2-5-default-safe-report.json b/data/pricing-v2-preview/phase2-5-default-safe-report.json index 6b7bf1e..26fd565 100644 --- a/data/pricing-v2-preview/phase2-5-default-safe-report.json +++ b/data/pricing-v2-preview/phase2-5-default-safe-report.json @@ -1,14 +1,14 @@ { "P0PartialAfter": 0, - "P0PartialBefore": 15, - "P1PartialCount": 6, + "P0PartialBefore": 16, + "P1PartialCount": 7, "P2PartialCount": 0, "P3PartialCount": 5, "blockers": [], - "defaultSafeCount": 31, - "defaultUnsafeCount": 39, - "generatedAt": "2026-07-10T00:00:00Z", - "productionDefaultCandidateCount": 31, + "defaultSafeCount": 32, + "defaultUnsafeCount": 41, + "generatedAt": "2026-07-29T00:00:00Z", + "productionDefaultCandidateCount": 32, "productionDefaultCandidates": [ { "afterEvidenceCompleteness": "complete", @@ -148,6 +148,34 @@ ], "verificationDecision": "unchanged" }, + { + "afterEvidenceCompleteness": "complete", + "afterVerificationStatus": "verified", + "beforeEvidenceCompleteness": "partial", + "beforeVerificationStatus": "partially_verified", + "blocker": [], + "businessCriticality": "production_default_candidate", + "currentEffective": true, + "currentPrices": { + "cached_input": "0.5", + "input": "5", + "output": "25" + }, + "defaultSafe": true, + "modelInternalId": "anthropic/claude-opus-5", + "officialEvidence": [ + "https://platform.claude.com/docs/en/about-claude/pricing" + ], + "phase25VerifiedAt": "2026-07-29T00:00:00Z", + "pricingId": "price:anthropic/claude-opus-5:standard:short:current", + "priorityClass": "P0", + "provider": "anthropic", + "reason": "Default-safe gate passed.", + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "verificationDecision": "official_verified_in_phase2_5" + }, { "afterEvidenceCompleteness": "complete", "afterVerificationStatus": "verified", @@ -197,8 +225,8 @@ "provider": "anthropic", "reason": "Default-safe gate passed.", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationDecision": "unchanged" }, @@ -483,9 +511,9 @@ "businessCriticality": "production_default_candidate", "currentEffective": true, "currentPrices": { - "cached_input": null, - "input": "2", - "output": "6" + "cached_input": "0.05", + "input": "0.5", + "output": "1.5" }, "defaultSafe": true, "modelInternalId": "mistral-ai/mistral-large", @@ -498,7 +526,7 @@ "provider": "mistral-ai", "reason": "Default-safe gate passed.", "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "verificationDecision": "official_verified_in_phase2_5" }, @@ -811,7 +839,7 @@ "businessCriticality": "production_default_candidate", "currentEffective": true, "currentPrices": { - "cached_input": null, + "cached_input": "0.2", "input": "1.25", "output": "2.5" }, @@ -824,7 +852,8 @@ "provider": "xai", "reason": "Default-safe gate passed.", "sourceRefs": [ - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "verificationDecision": "unchanged" }, @@ -857,7 +886,7 @@ "verificationDecision": "official_verified_in_phase2_5" } ], - "productionDefaultSafeCount": 31, + "productionDefaultSafeCount": 32, "productionDefaultUnsafeCount": 0, - "totalPriceRecords": 70 + "totalPriceRecords": 73 } diff --git a/data/pricing-v2-preview/phase2-5-evidence-completion.json b/data/pricing-v2-preview/phase2-5-evidence-completion.json index c47d239..87b8b42 100644 --- a/data/pricing-v2-preview/phase2-5-evidence-completion.json +++ b/data/pricing-v2-preview/phase2-5-evidence-completion.json @@ -197,6 +197,65 @@ ], "verificationDecision": "unchanged" }, + { + "afterEvidenceCompleteness": "complete", + "afterVerificationStatus": "verified", + "beforeEvidenceCompleteness": "partial", + "beforeVerificationStatus": "partially_verified", + "blocker": [], + "businessCriticality": "production_default_candidate", + "currentEffective": true, + "currentPrices": { + "cached_input": "0.5", + "input": "5", + "output": "25" + }, + "defaultSafe": true, + "modelInternalId": "anthropic/claude-opus-5", + "officialEvidence": [ + "https://platform.claude.com/docs/en/about-claude/pricing" + ], + "phase25VerifiedAt": "2026-07-29T00:00:00Z", + "pricingId": "price:anthropic/claude-opus-5:standard:short:current", + "priorityClass": "P0", + "provider": "anthropic", + "reason": "Default-safe gate passed.", + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "verificationDecision": "official_verified_in_phase2_5" + }, + { + "afterEvidenceCompleteness": "partial", + "afterVerificationStatus": "partially_verified", + "beforeEvidenceCompleteness": "partial", + "beforeVerificationStatus": "partially_verified", + "blocker": [ + "evidence_not_complete", + "not_production_default_candidate", + "not_standard_processing_mode", + "verification_not_verified" + ], + "businessCriticality": "non_default_tier", + "currentEffective": true, + "currentPrices": { + "cached_input": null, + "input": "2.5", + "output": "12.5" + }, + "defaultSafe": false, + "modelInternalId": "anthropic/claude-opus-5", + "officialEvidence": [], + "phase25VerifiedAt": null, + "pricingId": "price:anthropic/claude-opus-5:batch:short:current", + "priorityClass": "P1", + "provider": "anthropic", + "reason": "Default-safe gate blocked by: evidence_not_complete, not_production_default_candidate, not_standard_processing_mode, verification_not_verified", + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "verificationDecision": "retain_partial" + }, { "afterEvidenceCompleteness": "partial", "afterVerificationStatus": "partially_verified", @@ -308,8 +367,8 @@ "provider": "anthropic", "reason": "Default-safe gate passed.", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationDecision": "unchanged" }, @@ -338,8 +397,8 @@ "provider": "anthropic", "reason": "Default-safe gate blocked by: not_current_effective, not_production_default_candidate", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationDecision": "unchanged" }, @@ -368,8 +427,8 @@ "provider": "anthropic", "reason": "Default-safe gate blocked by: not_production_default_candidate, not_standard_processing_mode", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationDecision": "unchanged" }, @@ -429,7 +488,7 @@ "provider": "cohere", "reason": "Default-safe gate blocked by: evidence_not_complete, missing_charge_components, missing_text_modality, not_production_default_candidate, verification_not_verified", "sourceRefs": [ - "source:cohere:cohere-com-pricing" + "source:cohere:docs-cohere-com-docs-command-a-plus" ], "verificationDecision": "retain_partial" }, @@ -772,9 +831,9 @@ "businessCriticality": "production_default_candidate", "currentEffective": true, "currentPrices": { - "cached_input": null, - "input": "2", - "output": "6" + "cached_input": "0.05", + "input": "0.5", + "output": "1.5" }, "defaultSafe": true, "modelInternalId": "mistral-ai/mistral-large", @@ -787,7 +846,7 @@ "provider": "mistral-ai", "reason": "Default-safe gate passed.", "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "verificationDecision": "official_verified_in_phase2_5" }, @@ -806,8 +865,8 @@ "currentEffective": true, "currentPrices": { "cached_input": null, - "input": "1", - "output": "3" + "input": "0.25", + "output": "0.75" }, "defaultSafe": false, "modelInternalId": "mistral-ai/mistral-large", @@ -818,7 +877,7 @@ "provider": "mistral-ai", "reason": "Default-safe gate blocked by: evidence_not_complete, not_production_default_candidate, not_standard_processing_mode, verification_not_verified", "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "verificationDecision": "retain_partial" }, @@ -1967,7 +2026,7 @@ "businessCriticality": "production_default_candidate", "currentEffective": true, "currentPrices": { - "cached_input": null, + "cached_input": "0.2", "input": "1.25", "output": "2.5" }, @@ -1980,7 +2039,38 @@ "provider": "xai", "reason": "Default-safe gate passed.", "sourceRefs": [ - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" + ], + "verificationDecision": "unchanged" + }, + { + "afterEvidenceCompleteness": "complete", + "afterVerificationStatus": "verified", + "beforeEvidenceCompleteness": "complete", + "beforeVerificationStatus": "verified", + "blocker": [ + "not_production_default_candidate", + "not_standard_processing_mode" + ], + "businessCriticality": "non_default_tier", + "currentEffective": true, + "currentPrices": { + "cached_input": null, + "input": "1", + "output": "2" + }, + "defaultSafe": false, + "modelInternalId": "xai/grok-4.3", + "officialEvidence": [], + "phase25VerifiedAt": null, + "pricingId": "price:xai/grok-4.3:batch:short:current", + "priorityClass": "not_partial", + "provider": "xai", + "reason": "Default-safe gate blocked by: not_production_default_candidate, not_standard_processing_mode", + "sourceRefs": [ + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "verificationDecision": "unchanged" }, diff --git a/data/pricing-v2-preview/phase2-6-default-safe-closure.json b/data/pricing-v2-preview/phase2-6-default-safe-closure.json index a174d12..cd01904 100644 --- a/data/pricing-v2-preview/phase2-6-default-safe-closure.json +++ b/data/pricing-v2-preview/phase2-6-default-safe-closure.json @@ -1,7 +1,7 @@ { "closureGatePassed": true, - "defaultCandidatesAfter": 31, - "defaultCandidatesBefore": 31, + "defaultCandidatesAfter": 32, + "defaultCandidatesBefore": 32, "evidenceBasedUpgrades": [ "google-gemini/gemini-3.1-pro-preview", "google-gemini/gemini-3.5-flash" @@ -12,8 +12,8 @@ "openai/o3" ], "generatedAt": "2026-07-07T00:00:00Z", - "safeAfter": 31, - "safeBefore": 26, + "safeAfter": 32, + "safeBefore": 27, "unsafeAfter": 0, "unsafeBefore": 5 } diff --git a/data/pricing-v2-preview/phase2-6-p0-resolution.json b/data/pricing-v2-preview/phase2-6-p0-resolution.json index a1e8493..941bbd8 100644 --- a/data/pricing-v2-preview/phase2-6-p0-resolution.json +++ b/data/pricing-v2-preview/phase2-6-p0-resolution.json @@ -37,7 +37,7 @@ "source:cohere:cohere-com-pricing", "source:cohere:docs-cohere-com-docs-how-does-cohere-pricing-work" ], - "verifiedAt": "2026-07-07T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "blockerReason": null, @@ -65,7 +65,7 @@ "standard_long": "prompts > 200k tokens", "standard_short": "prompts <= 200k tokens" }, - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "blockerReason": null, @@ -88,7 +88,7 @@ "pricingSourceRefs": [ "source:google-gemini:ai-google-dev-gemini-api-docs-pricing" ], - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "blockerReason": "current OpenAI API pricing page does not list gpt-5 current API pricing as a callable default model.", @@ -139,8 +139,8 @@ "verifiedAt": "2026-07-07T00:00:00Z" } ], - "productionDefaultCandidateCount": 31, - "productionDefaultSafeCount": 31, + "productionDefaultCandidateCount": 32, + "productionDefaultSafeCount": 32, "productionDefaultUnsafeCount": 0, "remainingBlockers": [], "reviewRequiredRemaining": [ diff --git a/data/pricing-v2-preview/phase2-conflict-resolution-report.json b/data/pricing-v2-preview/phase2-conflict-resolution-report.json index 0c590d5..aa92c62 100644 --- a/data/pricing-v2-preview/phase2-conflict-resolution-report.json +++ b/data/pricing-v2-preview/phase2-conflict-resolution-report.json @@ -27,11 +27,11 @@ "reason": "canonical V2 projection has richer condition/source metadata" }, { - "internalId": "xai/grok-3", + "internalId": "xai/grok-4.3", "reason": "canonical V2 projection has richer condition/source metadata" } ], - "generatedAt": "2026-07-10T00:00:00Z", + "generatedAt": "2026-07-29T00:00:00Z", "gpt4_1Family": { "finalStatus": "review_required", "officialEvidence": [ diff --git a/data/pricing-v2-preview/phase2-cutover-readiness.json b/data/pricing-v2-preview/phase2-cutover-readiness.json index b295b70..7ca69da 100644 --- a/data/pricing-v2-preview/phase2-cutover-readiness.json +++ b/data/pricing-v2-preview/phase2-cutover-readiness.json @@ -4,14 +4,14 @@ "Some PriceRecords remain partial evidence because their sources are official but not independently verified in Phase 2." ], "counts": { - "candidateUnionCount": 42, - "chargeRecordCount": 212, - "completeEvidencePriceRecordCount": 44, + "candidateUnionCount": 43, + "chargeRecordCount": 223, + "completeEvidencePriceRecordCount": 45, "insufficientEvidencePriceRecordCount": 0, - "normalizedCanonicalIdentityCount": 38, - "partialEvidencePriceRecordCount": 26, - "priceRecordCount": 70, - "sourceRecordCount": 14 + "normalizedCanonicalIdentityCount": 39, + "partialEvidencePriceRecordCount": 28, + "priceRecordCount": 73, + "sourceRecordCount": 19 }, "gates": { "identity": "conditional", @@ -21,7 +21,7 @@ "supabaseProjection": "conditional", "websiteCompatibility": "blocked" }, - "generatedAt": "2026-07-10T00:00:00Z", + "generatedAt": "2026-07-29T00:00:00Z", "overall": "blocked", "phase2SafeToCommitPreview": true, "productionMigration": "not_allowed_in_phase2", diff --git a/data/pricing-v2-preview/phase2-evidence-matrix.json b/data/pricing-v2-preview/phase2-evidence-matrix.json index b4556fe..b55fab0 100644 --- a/data/pricing-v2-preview/phase2-evidence-matrix.json +++ b/data/pricing-v2-preview/phase2-evidence-matrix.json @@ -36,7 +36,9 @@ "official_pricing_page" ], "verificationStatus": "partially_verified", - "verifiedAt": [] + "verifiedAt": [ + "2026-07-29T00:00:00Z" + ] }, { "evidenceCompleteness": "complete", @@ -85,7 +87,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { @@ -121,7 +124,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { @@ -161,7 +165,9 @@ "official_pricing_page" ], "verificationStatus": "partially_verified", - "verifiedAt": [] + "verifiedAt": [ + "2026-07-29T00:00:00Z" + ] }, { "evidenceCompleteness": "partial", @@ -200,7 +206,9 @@ "official_pricing_page" ], "verificationStatus": "partially_verified", - "verifiedAt": [] + "verifiedAt": [ + "2026-07-29T00:00:00Z" + ] }, { "evidenceCompleteness": "complete", @@ -249,7 +257,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { @@ -285,7 +294,97 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" + ] + }, + { + "evidenceCompleteness": "partial", + "modelInternalId": "anthropic/claude-opus-5", + "officialProviderDomain": [ + "platform.claude.com" + ], + "priceComponents": [ + { + "amount": "5", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:input:text:per_1m_tokens", + "component": "input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "0.5", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cached_input:text:per_1m_tokens", + "component": "cached_input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "6.25", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cache_write_5m:text:per_1m_tokens", + "component": "cache_write_5m", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "10", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cache_write_1h:text:per_1m_tokens", + "component": "cache_write_1h", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "25", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:output:text:per_1m_tokens", + "component": "output", + "modality": "text", + "unit": "per_1m_tokens" + } + ], + "pricingId": "price:anthropic/claude-opus-5:standard:short:current", + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "sourceType": [ + "official_pricing_page" + ], + "verificationStatus": "partially_verified", + "verifiedAt": [ + "2026-07-29T00:00:00Z" + ] + }, + { + "evidenceCompleteness": "partial", + "modelInternalId": "anthropic/claude-opus-5", + "officialProviderDomain": [ + "platform.claude.com" + ], + "priceComponents": [ + { + "amount": "2.5", + "chargeId": "price:anthropic/claude-opus-5:batch:short:current:input:text:per_1m_tokens", + "component": "input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "12.5", + "chargeId": "price:anthropic/claude-opus-5:batch:short:current:output:text:per_1m_tokens", + "component": "output", + "modality": "text", + "unit": "per_1m_tokens" + } + ], + "pricingId": "price:anthropic/claude-opus-5:batch:short:current", + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "sourceType": [ + "official_pricing_page" + ], + "verificationStatus": "partially_verified", + "verifiedAt": [ + "2026-07-29T00:00:00Z" ] }, { @@ -325,7 +424,9 @@ "official_pricing_page" ], "verificationStatus": "partially_verified", - "verifiedAt": [] + "verifiedAt": [ + "2026-07-29T00:00:00Z" + ] }, { "evidenceCompleteness": "complete", @@ -374,7 +475,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { @@ -410,14 +512,15 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { "evidenceCompleteness": "complete", "modelInternalId": "anthropic/claude-sonnet-5", "officialProviderDomain": [ - "docs.anthropic.com", + "anthropic.com", "platform.claude.com" ], "priceComponents": [ @@ -452,22 +555,23 @@ ], "pricingId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "sourceType": [ "official_pricing_page" ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { "evidenceCompleteness": "complete", "modelInternalId": "anthropic/claude-sonnet-5", "officialProviderDomain": [ - "docs.anthropic.com", + "anthropic.com", "platform.claude.com" ], "priceComponents": [ @@ -502,22 +606,23 @@ ], "pricingId": "price:anthropic/claude-sonnet-5:standard:short:2026-09-01", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "sourceType": [ "official_pricing_page" ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { "evidenceCompleteness": "complete", "modelInternalId": "anthropic/claude-sonnet-5", "officialProviderDomain": [ - "docs.anthropic.com", + "anthropic.com", "platform.claude.com" ], "priceComponents": [ @@ -538,15 +643,16 @@ ], "pricingId": "price:anthropic/claude-sonnet-5:batch:short:current", "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "sourceType": [ "official_pricing_page" ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z", + "2026-07-29T00:00:00Z" ] }, { @@ -580,7 +686,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -592,14 +698,14 @@ "priceComponents": [], "pricingId": "price:cohere/command-a-plus:standard:short:current", "sourceRefs": [ - "source:cohere:cohere-com-pricing" + "source:cohere:docs-cohere-com-docs-command-a-plus" ], "sourceType": [ "official_pricing_page" ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -633,7 +739,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -674,7 +780,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -715,7 +821,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -756,7 +862,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -790,7 +896,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -831,7 +937,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -865,7 +971,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -906,7 +1012,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -947,7 +1053,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -988,7 +1094,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -1029,7 +1135,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -1070,7 +1176,7 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -1081,14 +1187,21 @@ ], "priceComponents": [ { - "amount": "2", + "amount": "0.5", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens" }, { - "amount": "6", + "amount": "0.05", + "chargeId": "price:mistral-ai/mistral-large:standard:short:current:cached_input:text:per_1m_tokens", + "component": "cached_input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "1.5", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", @@ -1097,14 +1210,14 @@ ], "pricingId": "price:mistral-ai/mistral-large:standard:short:current", "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "sourceType": [ "official_pricing_page" ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -1115,14 +1228,14 @@ ], "priceComponents": [ { - "amount": "1", + "amount": "0.25", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens" }, { - "amount": "3", + "amount": "0.75", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", @@ -1131,14 +1244,14 @@ ], "pricingId": "price:mistral-ai/mistral-large:batch:short:current", "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "sourceType": [ "official_pricing_page" ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -1222,8 +1335,8 @@ ], "verificationStatus": "review_required", "verifiedAt": [ - "2026-07-05T00:00:00Z", - "2026-07-07T00:00:00Z" + "2026-07-07T00:00:00Z", + "2026-07-27T00:00:00Z" ] }, { @@ -1259,8 +1372,8 @@ ], "verificationStatus": "review_required", "verifiedAt": [ - "2026-07-05T00:00:00Z", - "2026-07-07T00:00:00Z" + "2026-07-07T00:00:00Z", + "2026-07-27T00:00:00Z" ] }, { @@ -1369,7 +1482,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -1403,7 +1516,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -1528,8 +1641,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z", - "2026-07-07T00:00:00Z" + "2026-07-07T00:00:00Z", + "2026-07-27T00:00:00Z" ] }, { @@ -1565,8 +1678,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z", - "2026-07-07T00:00:00Z" + "2026-07-07T00:00:00Z", + "2026-07-27T00:00:00Z" ] }, { @@ -1684,8 +1797,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z", - "2026-07-07T00:00:00Z" + "2026-07-07T00:00:00Z", + "2026-07-27T00:00:00Z" ] }, { @@ -1721,8 +1834,8 @@ ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z", - "2026-07-07T00:00:00Z" + "2026-07-07T00:00:00Z", + "2026-07-27T00:00:00Z" ] }, { @@ -2805,7 +2918,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -2839,7 +2952,7 @@ ], "verificationStatus": "partially_verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -2856,6 +2969,13 @@ "modality": "text", "unit": "per_1m_tokens" }, + { + "amount": "0.2", + "chargeId": "price:xai/grok-4.3:standard:short:current:cached_input:text:per_1m_tokens", + "component": "cached_input", + "modality": "text", + "unit": "per_1m_tokens" + }, { "amount": "2.5", "chargeId": "price:xai/grok-4.3:standard:short:current:output:text:per_1m_tokens", @@ -2866,14 +2986,52 @@ ], "pricingId": "price:xai/grok-4.3:standard:short:current", "sourceRefs": [ - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "sourceType": [ - "official_model_docs" + "official_model_docs", + "official_pricing_page" + ], + "verificationStatus": "verified", + "verifiedAt": [ + "2026-07-27T00:00:00Z" + ] + }, + { + "evidenceCompleteness": "complete", + "modelInternalId": "xai/grok-4.3", + "officialProviderDomain": [ + "docs.x.ai" + ], + "priceComponents": [ + { + "amount": "1", + "chargeId": "price:xai/grok-4.3:batch:short:current:input:text:per_1m_tokens", + "component": "input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "2", + "chargeId": "price:xai/grok-4.3:batch:short:current:output:text:per_1m_tokens", + "component": "output", + "modality": "text", + "unit": "per_1m_tokens" + } + ], + "pricingId": "price:xai/grok-4.3:batch:short:current", + "sourceRefs": [ + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" + ], + "sourceType": [ + "official_model_docs", + "official_pricing_page" ], "verificationStatus": "verified", "verifiedAt": [ - "2026-07-05T00:00:00Z" + "2026-07-27T00:00:00Z" ] }, { @@ -2906,8 +3064,6 @@ "official_model_docs" ], "verificationStatus": "partially_verified", - "verifiedAt": [ - "2026-07-05T00:00:00Z" - ] + "verifiedAt": [] } ] diff --git a/data/pricing-v2-preview/phase3-5-approval-report.json b/data/pricing-v2-preview/phase3-5-approval-report.json index 4d1311a..30fd19d 100644 --- a/data/pricing-v2-preview/phase3-5-approval-report.json +++ b/data/pricing-v2-preview/phase3-5-approval-report.json @@ -237,8 +237,8 @@ }, "consumerCount": 13, "integrationMappingCount": 174, - "productionDefaultCandidateCount": 31, - "productionDefaultSafeCount": 31, + "productionDefaultCandidateCount": 32, + "productionDefaultSafeCount": 32, "productionDefaultUnsafeCount": 0 }, "safeToCommitPhase35": true, diff --git a/data/pricing-v2-preview/phase3-readiness.json b/data/pricing-v2-preview/phase3-readiness.json index b144caa..b958f75 100644 --- a/data/pricing-v2-preview/phase3-readiness.json +++ b/data/pricing-v2-preview/phase3-readiness.json @@ -16,8 +16,8 @@ "integrationMappingCount": 174, "noProductionRuntimeDependencyOnGitHubPages": true, "phase26Closure": { - "productionDefaultCandidateCount": 31, - "productionDefaultSafeCount": 31, + "productionDefaultCandidateCount": 32, + "productionDefaultSafeCount": 32, "productionDefaultUnsafeCount": 0, "safeToEnterWebsiteIntegrationPlanning": true }, diff --git a/data/pricing-v2-preview/phase4a-5-context-window-audit.json b/data/pricing-v2-preview/phase4a-5-context-window-audit.json index da96b84..72277c9 100644 --- a/data/pricing-v2-preview/phase4a-5-context-window-audit.json +++ b/data/pricing-v2-preview/phase4a-5-context-window-audit.json @@ -1,7 +1,7 @@ { - "contextWindowRows": 41, - "generatedAt": "2026-07-07T00:00:00Z", - "projectedNullCount": 41, + "contextWindowRows": 42, + "generatedAt": "2026-07-29T00:00:00Z", + "projectedNullCount": 42, "rows": [ { "canonicalContextWindow": null, @@ -43,6 +43,14 @@ "projectedContextWindow": null, "reason": "Canonical V2 has no verified context-window field for this identity; projection leaves null rather than copying Website editorial text." }, + { + "canonicalContextWindow": null, + "canonicalVerificationStatus": "not_present", + "modelInternalId": "anthropic/claude-opus-5", + "officialSourceAvailable": true, + "projectedContextWindow": null, + "reason": "Canonical V2 has no verified context-window field for this identity; projection leaves null rather than copying Website editorial text." + }, { "canonicalContextWindow": null, "canonicalVerificationStatus": "not_present", diff --git a/data/pricing-v2-preview/phase4a-5-projection-row-reconciliation.json b/data/pricing-v2-preview/phase4a-5-projection-row-reconciliation.json index 38767c6..2ab9003 100644 --- a/data/pricing-v2-preview/phase4a-5-projection-row-reconciliation.json +++ b/data/pricing-v2-preview/phase4a-5-projection-row-reconciliation.json @@ -1,15 +1,15 @@ { "counts": { "alias": 2, - "canonical_model": 38, + "canonical_model": 39, "historical_reference": 0, "other": 0, "redirecting_identity": 1 }, "formula": "35 canonical_model + 2 alias + 1 redirecting_identity = 38 projection rows", - "generatedAt": "2026-07-07T00:00:00Z", - "normalizedCanonicalIdentities": 38, - "projectionRows": 41, + "generatedAt": "2026-07-29T00:00:00Z", + "normalizedCanonicalIdentities": 39, + "projectionRows": 42, "rows": [ { "aliasTargetInternalId": null, @@ -71,6 +71,18 @@ "sourceIdentityType": "canonical_model", "status": "latest" }, + { + "aliasTargetInternalId": null, + "billingModelInternalId": null, + "canonicalInternalId": "anthropic/claude-opus-5", + "classification": "canonical_model", + "defaultSafe": true, + "projectionRowId": "claude-opus-5", + "reason": "canonical model row", + "redirectTargetInternalId": null, + "sourceIdentityType": "canonical_model", + "status": "latest" + }, { "aliasTargetInternalId": null, "billingModelInternalId": null, diff --git a/data/pricing-v2-preview/phase4a-5-safe-price-record-reconciliation.json b/data/pricing-v2-preview/phase4a-5-safe-price-record-reconciliation.json index b2e3167..d07c5b5 100644 --- a/data/pricing-v2-preview/phase4a-5-safe-price-record-reconciliation.json +++ b/data/pricing-v2-preview/phase4a-5-safe-price-record-reconciliation.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-07-07T00:00:00Z", + "generatedAt": "2026-07-29T00:00:00Z", "rows": [ { "contextClass": "short", @@ -96,6 +96,25 @@ "promptTokenThreshold": null, "selectedAsCurrentDefault": true }, + { + "contextClass": "short", + "effectiveFrom": "2026-07-24", + "effectiveUntil": null, + "mergeReason": null, + "mergedWithOtherPriceRecord": false, + "modelInternalId": "anthropic/claude-opus-5", + "omissionReason": null, + "omittedFromProjection": false, + "pricingId": "price:anthropic/claude-opus-5:standard:short:current", + "processingMode": "standard", + "projectionRowId": "claude-opus-5", + "projectionRowIds": [ + "claude-opus-5", + "claude-opus-5" + ], + "promptTokenThreshold": null, + "selectedAsCurrentDefault": true + }, { "contextClass": "short", "effectiveFrom": null, @@ -117,7 +136,7 @@ }, { "contextClass": "short", - "effectiveFrom": "2026-07-05", + "effectiveFrom": "2026-06-30", "effectiveUntil": "2026-08-31", "mergeReason": null, "mergedWithOtherPriceRecord": false, @@ -599,10 +618,10 @@ ], "stats": { "futureNonEffective": 0, - "mappedToProjection": 31, + "mappedToProjection": 32, "mergedIntoSameIdentity": 0, "omitted": 0, - "safePriceRecordsInput": 31, + "safePriceRecordsInput": 32, "unexplained": 0 } } diff --git a/data/pricing-v2-preview/phase4a-5-unsafe-difference-audit.json b/data/pricing-v2-preview/phase4a-5-unsafe-difference-audit.json index d224d70..da58e31 100644 --- a/data/pricing-v2-preview/phase4a-5-unsafe-difference-audit.json +++ b/data/pricing-v2-preview/phase4a-5-unsafe-difference-audit.json @@ -2,19 +2,8 @@ "beforePhase4A5UnsafeDifferenceCount": 16, "blockerUnsafeDifferences": [], "currentUnsafeDifferenceCount": 4, - "generatedAt": "2026-07-07T00:00:00Z", - "nullDifferenceRows": [ - { - "canonicalInternalId": "xai/grok-3", - "oldPriceVerified": true, - "shouldContinueLegacyTemporarily": false, - "shouldExclude": false, - "shouldWarning": true, - "websiteHasOldPrice": true, - "websiteModelId": "grok-3", - "whyProjectionNull": "cachedInputPrice is null because the canonical selected PriceRecord has no verified cached_input charge." - } - ], + "generatedAt": "2026-07-29T00:00:00Z", + "nullDifferenceRows": [], "severitySummary": { "blocker": 0, "high": 0, diff --git a/data/pricing-v2-preview/phase4a-website-projection-report.json b/data/pricing-v2-preview/phase4a-website-projection-report.json index bbae2f3..1e1b3cc 100644 --- a/data/pricing-v2-preview/phase4a-website-projection-report.json +++ b/data/pricing-v2-preview/phase4a-website-projection-report.json @@ -1,13 +1,12 @@ { "artifactPath": "data/pricing-v2-preview/generated/model-pricing.v2.json", - "defaultSafeModelCount": 34, - "generatedAt": "2026-07-07T00:00:00Z", + "defaultSafeModelCount": 35, + "generatedAt": "2026-07-29T00:00:00Z", "nullPriceCount": 7, "parity": { "counts": { "exact_parity": 28, - "expected_difference": 2, - "null_difference": 1, + "expected_difference": 3, "unsafe_difference": 4 }, "details": [ @@ -492,14 +491,14 @@ } }, { - "classification": "null_difference", + "classification": "exact_parity", "modelId": "grok-3", "projection": { - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "inputPrice": 1.25, "outputPrice": 2.5 }, - "reason": "Projection has no current calculation price.", + "reason": "Legacy Website values match current projection values.", "website": { "cachedInputPrice": 0.2, "inputPrice": 1.25, @@ -507,14 +506,14 @@ } }, { - "classification": "exact_parity", + "classification": "expected_difference", "modelId": "grok-4.3", "projection": { - "cachedInputPrice": null, + "cachedInputPrice": 0.2, "inputPrice": 1.25, "outputPrice": 2.5 }, - "reason": "Legacy Website values match current projection values.", + "reason": "Projection uses canonical verified pricing.", "website": { "cachedInputPrice": null, "inputPrice": 1.25, @@ -537,12 +536,12 @@ } } ], - "projectionModelCount": 41, + "projectionModelCount": 42, "websiteModelCount": 35 }, "phase": "Phase 4A Production-Ready Website Projection", "phase35Readiness": "ready", - "projectionModelCount": 41, + "projectionModelCount": 42, "runtimeNetworkDependency": "none", "unsafeIdentityCount": 7 } diff --git a/data/pricing-v2-preview/prices.json b/data/pricing-v2-preview/prices.json index 16f4881..89feea5 100644 --- a/data/pricing-v2-preview/prices.json +++ b/data/pricing-v2-preview/prices.json @@ -333,6 +333,105 @@ ], "verificationStatus": "verified" }, + { + "billingNote": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "calculationDefault": true, + "charges": [ + { + "amount": "5", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:input:text:per_1m_tokens", + "component": "input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "0.5", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cached_input:text:per_1m_tokens", + "component": "cached_input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "6.25", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cache_write_5m:text:per_1m_tokens", + "component": "cache_write_5m", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "10", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:cache_write_1h:text:per_1m_tokens", + "component": "cache_write_1h", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "25", + "chargeId": "price:anthropic/claude-opus-5:standard:short:current:output:text:per_1m_tokens", + "component": "output", + "modality": "text", + "unit": "per_1m_tokens" + } + ], + "contextClass": "short", + "currency": "USD", + "effectiveFrom": "2026-07-24", + "effectiveUntil": null, + "modelInternalId": "anthropic/claude-opus-5", + "pricingId": "price:anthropic/claude-opus-5:standard:short:current", + "processingMode": "standard", + "promptTokenThreshold": null, + "regionPolicy": "global", + "sourceDatasetIds": { + "publicDatasetIds": [ + "claude-opus-5" + ], + "websiteIds": [] + }, + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "verificationStatus": "partially_verified" + }, + { + "billingNote": "Batch projection derived from explicit Public V1 batch fields for anthropic/claude-opus-5.", + "calculationDefault": false, + "charges": [ + { + "amount": "2.5", + "chargeId": "price:anthropic/claude-opus-5:batch:short:current:input:text:per_1m_tokens", + "component": "input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "12.5", + "chargeId": "price:anthropic/claude-opus-5:batch:short:current:output:text:per_1m_tokens", + "component": "output", + "modality": "text", + "unit": "per_1m_tokens" + } + ], + "contextClass": "short", + "currency": "USD", + "effectiveFrom": "2026-07-24", + "effectiveUntil": null, + "modelInternalId": "anthropic/claude-opus-5", + "pricingId": "price:anthropic/claude-opus-5:batch:short:current", + "processingMode": "batch", + "promptTokenThreshold": null, + "regionPolicy": "global", + "sourceDatasetIds": { + "publicDatasetIds": [ + "claude-opus-5" + ], + "websiteIds": [] + }, + "sourceRefs": [ + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + ], + "verificationStatus": "partially_verified" + }, { "billingNote": "Anthropic marks Sonnet 4 as retired except on Bedrock and Vertex AI.", "calculationDefault": true, @@ -478,7 +577,7 @@ "verificationStatus": "verified" }, { - "billingNote": "Introductory pricing is listed by Anthropic as effective through 2026-08-31; standard pricing starts 2026-09-01.", + "billingNote": "Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates.", "calculationDefault": true, "charges": [ { @@ -512,7 +611,7 @@ ], "contextClass": "short", "currency": "USD", - "effectiveFrom": "2026-07-05", + "effectiveFrom": "2026-06-30", "effectiveUntil": "2026-08-31", "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:standard:intro:2026-07-05", @@ -528,8 +627,8 @@ ] }, "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationStatus": "verified" }, @@ -584,8 +683,8 @@ ] }, "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationStatus": "verified" }, @@ -610,7 +709,7 @@ ], "contextClass": "short", "currency": "USD", - "effectiveFrom": "2026-07-05", + "effectiveFrom": "2026-06-30", "effectiveUntil": "2026-08-31", "modelInternalId": "anthropic/claude-sonnet-5", "pricingId": "price:anthropic/claude-sonnet-5:batch:short:current", @@ -626,8 +725,8 @@ ] }, "sourceRefs": [ - "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", - "source:anthropic:platform-claude-com-docs-en-about-claude-pricing" + "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "source:anthropic:www-anthropic-com-news-claude-sonnet-5" ], "verificationStatus": "verified" }, @@ -671,7 +770,7 @@ "verificationStatus": "partially_verified" }, { - "billingNote": "Cohere official pricing page lists Command A+ but the extracted public page did not expose a confirmed token price. Values are null rather than guessed.", + "billingNote": "Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled.", "calculationDefault": false, "charges": [], "contextClass": "short", @@ -690,7 +789,7 @@ "websiteIds": [] }, "sourceRefs": [ - "source:cohere:cohere-com-pricing" + "source:cohere:docs-cohere-com-docs-command-a-plus" ], "verificationStatus": "partially_verified" }, @@ -1238,18 +1337,25 @@ "verificationStatus": "verified" }, { - "billingNote": "Mistral official pricing FAQ states Mistral Large costs $2/M input and $6/M output and batch processing gets a 50% discount.", + "billingNote": "mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount.", "calculationDefault": true, "charges": [ { - "amount": "2", + "amount": "0.5", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens" }, { - "amount": "6", + "amount": "0.05", + "chargeId": "price:mistral-ai/mistral-large:standard:short:current:cached_input:text:per_1m_tokens", + "component": "cached_input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "1.5", "chargeId": "price:mistral-ai/mistral-large:standard:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", @@ -1272,7 +1378,7 @@ "websiteIds": [] }, "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "verificationStatus": "partially_verified" }, @@ -1281,14 +1387,14 @@ "calculationDefault": false, "charges": [ { - "amount": "1", + "amount": "0.25", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:input:text:per_1m_tokens", "component": "input", "modality": "text", "unit": "per_1m_tokens" }, { - "amount": "3", + "amount": "0.75", "chargeId": "price:mistral-ai/mistral-large:batch:short:current:output:text:per_1m_tokens", "component": "output", "modality": "text", @@ -1311,7 +1417,7 @@ "websiteIds": [] }, "sourceRefs": [ - "source:mistral-ai:mistral-ai-pricing" + "source:mistral-ai:mistral-ai-pricing-api" ], "verificationStatus": "partially_verified" }, @@ -3254,7 +3360,7 @@ "verificationStatus": "partially_verified" }, { - "billingNote": "xAI official model page lists Grok 4.3 input and output rates per 1M tokens. Cached and batch rates were not shown in the extracted official model card.", + "billingNote": "V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields.", "calculationDefault": true, "charges": [ { @@ -3264,6 +3370,13 @@ "modality": "text", "unit": "per_1m_tokens" }, + { + "amount": "0.2", + "chargeId": "price:xai/grok-4.3:standard:short:current:cached_input:text:per_1m_tokens", + "component": "cached_input", + "modality": "text", + "unit": "per_1m_tokens" + }, { "amount": "2.5", "chargeId": "price:xai/grok-4.3:standard:short:current:output:text:per_1m_tokens", @@ -3290,7 +3403,50 @@ ] }, "sourceRefs": [ - "source:xai:docs-x-ai-developers-models" + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" + ], + "verificationStatus": "verified" + }, + { + "billingNote": "Batch projection derived from explicit Public V1 batch fields for xai/grok-4.3.", + "calculationDefault": false, + "charges": [ + { + "amount": "1", + "chargeId": "price:xai/grok-4.3:batch:short:current:input:text:per_1m_tokens", + "component": "input", + "modality": "text", + "unit": "per_1m_tokens" + }, + { + "amount": "2", + "chargeId": "price:xai/grok-4.3:batch:short:current:output:text:per_1m_tokens", + "component": "output", + "modality": "text", + "unit": "per_1m_tokens" + } + ], + "contextClass": "short", + "currency": "USD", + "effectiveFrom": null, + "effectiveUntil": null, + "modelInternalId": "xai/grok-4.3", + "pricingId": "price:xai/grok-4.3:batch:short:current", + "processingMode": "batch", + "promptTokenThreshold": null, + "regionPolicy": "global", + "sourceDatasetIds": { + "publicDatasetIds": [ + "grok-4.3" + ], + "websiteIds": [ + "grok-4.3" + ] + }, + "sourceRefs": [ + "source:xai:docs-x-ai-developers-models", + "source:xai:docs-x-ai-developers-pricing" ], "verificationStatus": "verified" }, diff --git a/data/pricing-v2-preview/sources.json b/data/pricing-v2-preview/sources.json index 071c43a..5886410 100644 --- a/data/pricing-v2-preview/sources.json +++ b/data/pricing-v2-preview/sources.json @@ -1,7 +1,7 @@ [ { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "docs.anthropic.com", "providerId": "anthropic", "sourceId": "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing", @@ -12,41 +12,89 @@ "title": "Anthropic official source", "url": "https://docs.anthropic.com/en/docs/about-claude/pricing", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", - "officialProviderDomain": "docs.anthropic.com", + "accessedAt": "2026-07-29T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", + "officialProviderDomain": "platform.claude.com", + "providerId": "anthropic", + "sourceId": "source:anthropic:platform-claude-com-docs-en-about-claude-models-overview", + "sourceType": "official_model_docs", + "supports": [ + "models", + "availability" + ], + "title": "Anthropic Claude model overview", + "url": "https://platform.claude.com/docs/en/about-claude/models/overview", + "verificationStatus": "verified", + "verifiedAt": "2026-07-29T00:00:00Z" + }, + { + "accessedAt": "2026-07-29T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", + "officialProviderDomain": "platform.claude.com", "providerId": "anthropic", - "sourceId": "source:anthropic:docs-anthropic-com-en-docs-about-claude-pricing-claude-sonnet-5-introductory-pri", + "sourceId": "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", "sourceType": "official_pricing_page", "supports": [ "pricing" ], "title": "Anthropic official source", - "url": "https://docs.anthropic.com/en/docs/about-claude/pricing#claude-sonnet-5-introductory-pricing", + "url": "https://platform.claude.com/docs/en/about-claude/pricing", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-29T00:00:00Z" }, { - "accessedAt": "2026-07-03", - "checkedAt": "2026-07-03", + "accessedAt": "2026-07-29T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", "officialProviderDomain": "platform.claude.com", "providerId": "anthropic", - "sourceId": "source:anthropic:platform-claude-com-docs-en-about-claude-pricing", + "sourceId": "source:anthropic:platform-claude-com-docs-en-build-with-claude-batch-processing", + "sourceType": "official_pricing_page", + "supports": [ + "pricing", + "batch" + ], + "title": "Anthropic batch processing documentation", + "url": "https://platform.claude.com/docs/en/build-with-claude/batch-processing", + "verificationStatus": "verified", + "verifiedAt": "2026-07-29T00:00:00Z" + }, + { + "accessedAt": "2026-07-29T00:00:00Z", + "checkedAt": "2026-07-29T00:00:00Z", + "officialProviderDomain": "anthropic.com", + "providerId": "anthropic", + "sourceId": "source:anthropic:www-anthropic-com-news-claude-opus-5", + "sourceType": "official_release_announcement", + "supports": [ + "models", + "release" + ], + "title": "Anthropic Claude Opus 5 announcement", + "url": "https://www.anthropic.com/news/claude-opus-5", + "verificationStatus": "verified", + "verifiedAt": "2026-07-29T00:00:00Z" + }, + { + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", + "officialProviderDomain": "anthropic.com", + "providerId": "anthropic", + "sourceId": "source:anthropic:www-anthropic-com-news-claude-sonnet-5", "sourceType": "official_pricing_page", "supports": [ "pricing" ], "title": "Anthropic official source", - "url": "https://platform.claude.com/docs/en/about-claude/pricing", - "verificationStatus": "partially_verified", - "verifiedAt": null + "url": "https://www.anthropic.com/news/claude-sonnet-5", + "verificationStatus": "verified", + "verifiedAt": "2026-07-27T00:00:00Z" }, { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "cohere.com", "providerId": "cohere", "sourceId": "source:cohere:cohere-com-pricing", @@ -57,7 +105,22 @@ "title": "Cohere official source", "url": "https://cohere.com/pricing", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" + }, + { + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", + "officialProviderDomain": "cohere.com", + "providerId": "cohere", + "sourceId": "source:cohere:docs-cohere-com-docs-command-a-plus", + "sourceType": "official_pricing_page", + "supports": [ + "pricing" + ], + "title": "Cohere official source", + "url": "https://docs.cohere.com/docs/command-a-plus", + "verificationStatus": "verified", + "verifiedAt": "2026-07-27T00:00:00Z" }, { "accessedAt": "2026-07-07T00:00:00Z", @@ -90,8 +153,8 @@ "verifiedAt": "2026-07-07T00:00:00Z" }, { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "api-docs.deepseek.com", "providerId": "deepseek", "sourceId": "source:deepseek:api-docs-deepseek-com-quick_start-pricing", @@ -102,11 +165,11 @@ "title": "DeepSeek official source", "url": "https://api-docs.deepseek.com/quick_start/pricing", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "ai.google.dev", "providerId": "google-gemini", "sourceId": "source:google-gemini:ai-google-dev-gemini-api-docs-pricing", @@ -117,22 +180,22 @@ "title": "Google official source", "url": "https://ai.google.dev/gemini-api/docs/pricing", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "mistral.ai", "providerId": "mistral-ai", - "sourceId": "source:mistral-ai:mistral-ai-pricing", + "sourceId": "source:mistral-ai:mistral-ai-pricing-api", "sourceType": "official_pricing_page", "supports": [ "pricing" ], "title": "Mistral AI official source", - "url": "https://mistral.ai/pricing", + "url": "https://mistral.ai/pricing/api/", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "accessedAt": "2026-07-07T00:00:00Z", @@ -165,8 +228,8 @@ "verifiedAt": "2026-07-07T00:00:00Z" }, { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", "officialProviderDomain": "platform.openai.com", "providerId": "openai", "sourceId": "source:openai:platform-openai-com-docs-pricing", @@ -177,7 +240,7 @@ "title": "OpenAI official source", "url": "https://platform.openai.com/docs/pricing", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" }, { "accessedAt": "2026-07-06", @@ -198,8 +261,8 @@ "verifiedAt": "2026-07-06" }, { - "accessedAt": "2026-07-05T00:00:00Z", - "checkedAt": "2026-07-05T00:00:00Z", + "accessedAt": "2026-07-03", + "checkedAt": "2026-07-03", "officialProviderDomain": "docs.x.ai", "providerId": "xai", "sourceId": "source:xai:docs-x-ai-developers-models", @@ -209,7 +272,22 @@ ], "title": "xAI official source", "url": "https://docs.x.ai/developers/models", + "verificationStatus": "partially_verified", + "verifiedAt": null + }, + { + "accessedAt": "2026-07-27T00:00:00Z", + "checkedAt": "2026-07-27T00:00:00Z", + "officialProviderDomain": "docs.x.ai", + "providerId": "xai", + "sourceId": "source:xai:docs-x-ai-developers-pricing", + "sourceType": "official_pricing_page", + "supports": [ + "pricing" + ], + "title": "xAI official source", + "url": "https://docs.x.ai/developers/pricing", "verificationStatus": "verified", - "verifiedAt": "2026-07-05T00:00:00Z" + "verifiedAt": "2026-07-27T00:00:00Z" } ] diff --git a/data/providers/anthropic.json b/data/providers/anthropic.json index 5e7be6c..57bc97f 100644 --- a/data/providers/anthropic.json +++ b/data/providers/anthropic.json @@ -15,6 +15,7 @@ "batch_input": 0.5, "batch_output": 2.5, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -37,6 +38,30 @@ "batch_input": 2.5, "batch_output": 12.5, "cache_write": 6.25, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-29T00:00:00Z", + "display_name": "Claude Opus 5", + "effective_from": "2026-07-24", + "last_verified_at": "2026-07-29T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-5", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -59,6 +84,7 @@ "batch_input": 1.5, "batch_output": 7.5, "cache_write": 3.75, + "cache_write_1h": null, "cached_input": 0.3, "currency": "USD", "input": 3.0, @@ -81,6 +107,7 @@ "batch_input": 1.0, "batch_output": 5.0, "cache_write": 2.5, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 2.0, diff --git a/data/providers/cohere.json b/data/providers/cohere.json index c6cadff..a4ddb5a 100644 --- a/data/providers/cohere.json +++ b/data/providers/cohere.json @@ -15,6 +15,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 0.5, @@ -37,6 +38,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": null, @@ -59,6 +61,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": null, "currency": "USD", "input": 2.5, diff --git a/data/providers/deepseek.json b/data/providers/deepseek.json index 16bd173..cf40f41 100644 --- a/data/providers/deepseek.json +++ b/data/providers/deepseek.json @@ -15,6 +15,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.0028, "currency": "USD", "input": 0.14, @@ -37,6 +38,7 @@ "batch_input": null, "batch_output": null, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.003625, "currency": "USD", "input": 0.435, diff --git a/data/providers/google-gemini.json b/data/providers/google-gemini.json index e28af5a..492ee40 100644 --- a/data/providers/google-gemini.json +++ b/data/providers/google-gemini.json @@ -15,6 +15,7 @@ "batch_input": 0.15, "batch_output": 1.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.03, "currency": "USD", "input": 0.3, @@ -37,6 +38,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, diff --git a/data/providers/mistral-ai.json b/data/providers/mistral-ai.json index 237f155..7387716 100644 --- a/data/providers/mistral-ai.json +++ b/data/providers/mistral-ai.json @@ -15,6 +15,7 @@ "batch_input": 0.25, "batch_output": 0.75, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.05, "currency": "USD", "input": 0.5, diff --git a/data/providers/openai.json b/data/providers/openai.json index e9283aa..a37327f 100644 --- a/data/providers/openai.json +++ b/data/providers/openai.json @@ -15,6 +15,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, @@ -37,6 +38,7 @@ "batch_input": 0.625, "batch_output": 5.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.125, "currency": "USD", "input": 1.25, @@ -59,6 +61,7 @@ "batch_input": 0.375, "batch_output": 2.25, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.075, "currency": "USD", "input": 0.75, @@ -81,6 +84,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -103,6 +107,7 @@ "batch_input": 0.5, "batch_output": 3.0, "cache_write": 1.25, + "cache_write_1h": null, "cached_input": 0.1, "currency": "USD", "input": 1.0, @@ -125,6 +130,7 @@ "batch_input": 2.5, "batch_output": 15.0, "cache_write": 6.25, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 5.0, @@ -147,6 +153,7 @@ "batch_input": 1.25, "batch_output": 7.5, "cache_write": 3.125, + "cache_write_1h": null, "cached_input": 0.25, "currency": "USD", "input": 2.5, @@ -169,6 +176,7 @@ "batch_input": 1.0, "batch_output": 4.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.5, "currency": "USD", "input": 2.0, diff --git a/data/providers/xai.json b/data/providers/xai.json index 7780370..724450b 100644 --- a/data/providers/xai.json +++ b/data/providers/xai.json @@ -15,6 +15,7 @@ "batch_input": 1.0, "batch_output": 2.0, "cache_write": null, + "cache_write_1h": null, "cached_input": 0.2, "currency": "USD", "input": 1.25, diff --git a/data/snapshots/2026-07-29/prices.csv b/data/snapshots/2026-07-29/prices.csv new file mode 100644 index 0000000..ef52ce6 --- /dev/null +++ b/data/snapshots/2026-07-29/prices.csv @@ -0,0 +1,23 @@ +provider_id,model_id,display_name,model_family,status,currency,unit,input,output,cached_input,cache_write,cache_write_1h,batch_input,batch_output,official_source_url,accessed_at,last_verified_at,effective_from,notes +anthropic,claude-haiku-4.5,Claude Haiku 4.5,Claude Haiku,active,USD,1M tokens,1.0,5.0,0.1,1.25,,0.5,2.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. +anthropic,claude-opus-4.8,Claude Opus 4.8,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,,2.5,12.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate." +anthropic,claude-opus-5,Claude Opus 5,Claude Opus,active,USD,1M tokens,5.0,25.0,0.5,6.25,10.0,2.5,12.5,https://platform.claude.com/docs/en/about-claude/pricing,2026-07-29T00:00:00Z,2026-07-29T00:00:00Z,2026-07-24,"Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing." +anthropic,claude-sonnet-4.6,Claude Sonnet 4.6,Claude Sonnet,active,USD,1M tokens,3.0,15.0,0.3,3.75,,1.5,7.5,https://docs.anthropic.com/en/docs/about-claude/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,cache_write stores the 5-minute write rate. +anthropic,claude-sonnet-5-intro,Claude Sonnet 5 introductory pricing,Claude Sonnet,active,USD,1M tokens,2.0,10.0,0.2,2.5,,1.0,5.0,https://www.anthropic.com/news/claude-sonnet-5,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2026-06-30,Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates. +cohere,aya-expanse-32b,Aya Expanse 32B,Aya,active,USD,1M tokens,0.5,1.5,,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output. +cohere,command-a-plus,Command A+,Command,active,USD,1M tokens,,,,,,,,https://docs.cohere.com/docs/command-a-plus,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled." +cohere,command-r-plus-08-2024,Command R+ 08-2024,Command R,active,USD,1M tokens,2.5,10.0,,,,,,https://cohere.com/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,2024-08-01,Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens. +deepseek,deepseek-v4-flash,DeepSeek V4 Flash,DeepSeek V4,active,USD,1M tokens,0.14,0.28,0.0028,,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. +deepseek,deepseek-v4-pro,DeepSeek V4 Pro,DeepSeek V4,active,USD,1M tokens,0.435,0.87,0.003625,,,,,https://api-docs.deepseek.com/quick_start/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,DeepSeek labels input cache miss as input price and cache hit as cached_input. +google-gemini,gemini-2.5-flash,Gemini 2.5 Flash,Gemini 2.5,active,USD,1M tokens,0.3,2.5,0.03,,,0.15,1.25,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for text/image/video input; Google lists separate audio rates in the official pricing table. +google-gemini,gemini-2.5-pro,Gemini 2.5 Pro,Gemini 2.5,active,USD,1M tokens,1.25,10.0,0.125,,,0.625,5.0,https://ai.google.dev/gemini-api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table. +mistral-ai,mistral-large,Mistral Large 3,Mistral Large,active,USD,1M tokens,0.5,1.5,0.05,,,0.25,0.75,https://mistral.ai/pricing/api/,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount. +openai,gpt-4.1,GPT-4.1,GPT-4.1,active,USD,1M tokens,2.0,8.0,0.5,,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5,GPT-5,GPT-5,active,USD,1M tokens,1.25,10.0,0.125,,,0.625,5.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5.4-mini,GPT-5.4 mini,GPT-5.4,active,USD,1M tokens,0.75,4.5,0.075,,,0.375,2.25,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +openai,gpt-5.5,GPT-5.5,GPT-5.5,active,USD,1M tokens,5.0,30.0,0.5,,,2.5,15.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown. +openai,gpt-5.6-luna,GPT-5.6 Luna,GPT-5.6,active,USD,1M tokens,1.0,6.0,0.1,1.25,,0.5,3.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,gpt-5.6-sol,GPT-5.6 Sol,GPT-5.6,active,USD,1M tokens,5.0,30.0,0.5,6.25,,2.5,15.0,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,gpt-5.6-terra,GPT-5.6 Terra,GPT-5.6,active,USD,1M tokens,2.5,15.0,0.25,3.125,,1.25,7.5,https://developers.openai.com/api/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,"OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices." +openai,o3,o3,o-series,active,USD,1M tokens,2.0,8.0,0.5,,,1.0,4.0,https://platform.openai.com/docs/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,OpenAI official pricing page lists standard and batch rates per 1M tokens. +xai,grok-4.3,Grok 4.3,Grok 4,active,USD,1M tokens,1.25,2.5,0.2,,,1.0,2.0,https://docs.x.ai/developers/pricing,2026-07-27T00:00:00Z,2026-07-27T00:00:00Z,,V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields. diff --git a/data/snapshots/2026-07-29/prices.json b/data/snapshots/2026-07-29/prices.json new file mode 100644 index 0000000..0a8336c --- /dev/null +++ b/data/snapshots/2026-07-29/prices.json @@ -0,0 +1,594 @@ +{ + "dataset_name": "AICostBudget AI API Pricing Dataset", + "dataset_version": "1.0.0", + "description": "Open, machine-readable pricing data for LLM and AI APIs.", + "generated_at": "2026-07-29T09:50:41Z", + "homepage": "https://aicostbudget.com", + "last_verified_at": "2026-07-29T00:00:00Z", + "licenses": { + "code": "MIT", + "data": "CC BY 4.0" + }, + "model_count": 22, + "models": [ + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Claude Haiku 4.5", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Claude Haiku", + "model_id": "claude-haiku-4.5", + "notes": "cache_write stores the 5-minute write rate.", + "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", + "pricing": { + "batch_input": 0.5, + "batch_output": 2.5, + "cache_write": 1.25, + "cache_write_1h": null, + "cached_input": 0.1, + "currency": "USD", + "input": 1.0, + "output": 5.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Claude Opus 4.8", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-4.8", + "notes": "Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate.", + "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-29T00:00:00Z", + "display_name": "Claude Opus 5", + "effective_from": "2026-07-24", + "last_verified_at": "2026-07-29T00:00:00Z", + "model_family": "Claude Opus", + "model_id": "claude-opus-5", + "notes": "Released 2026-07-24. Anthropic table columns are input, 5-minute cache write, 1-hour cache write, cache read, and output. cache_write stores the 5-minute write rate; cache_write_1h stores the 1-hour write rate. Batch pricing is 50% of standard input and output per Anthropic Batch Processing.", + "official_source_url": "https://platform.claude.com/docs/en/about-claude/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 12.5, + "cache_write": 6.25, + "cache_write_1h": 10.0, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 25.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Claude Sonnet 4.6", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Claude Sonnet", + "model_id": "claude-sonnet-4.6", + "notes": "cache_write stores the 5-minute write rate.", + "official_source_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", + "pricing": { + "batch_input": 1.5, + "batch_output": 7.5, + "cache_write": 3.75, + "cache_write_1h": null, + "cached_input": 0.3, + "currency": "USD", + "input": 3.0, + "output": 15.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Claude Sonnet 5 introductory pricing", + "effective_from": "2026-06-30", + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Claude Sonnet", + "model_id": "claude-sonnet-5-intro", + "notes": "Introductory pricing applies through 2026-08-31 and standard pricing starts 2026-09-01. V1 must not switch early to the standard $3/M input and $15/M output rates.", + "official_source_url": "https://www.anthropic.com/news/claude-sonnet-5", + "pricing": { + "batch_input": 1.0, + "batch_output": 5.0, + "cache_write": 2.5, + "cache_write_1h": null, + "cached_input": 0.2, + "currency": "USD", + "input": 2.0, + "output": 10.0, + "unit": "1M tokens" + }, + "provider_id": "anthropic", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Aya Expanse 32B", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Aya", + "model_id": "aya-expanse-32b", + "notes": "Cohere official pricing page states Aya Expanse 8B and 32B API pricing is $0.50/1M input and $1.50/1M output.", + "official_source_url": "https://cohere.com/pricing", + "pricing": { + "batch_input": null, + "batch_output": null, + "cache_write": null, + "cache_write_1h": null, + "cached_input": null, + "currency": "USD", + "input": 0.5, + "output": 1.5, + "unit": "1M tokens" + }, + "provider_id": "cohere", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Command A+", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Command", + "model_id": "command-a-plus", + "notes": "Cohere's official Command A+ page states that access is free until applicable rate limits are reached and that production use is available through Model Vault. Another official Cohere page shows per-token pricing for the same model ID, so V1 keeps token pricing null until the official documentation is reconciled.", + "official_source_url": "https://docs.cohere.com/docs/command-a-plus", + "pricing": { + "batch_input": null, + "batch_output": null, + "cache_write": null, + "cache_write_1h": null, + "cached_input": null, + "currency": "USD", + "input": null, + "output": null, + "unit": "1M tokens" + }, + "provider_id": "cohere", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Command R+ 08-2024", + "effective_from": "2024-08-01", + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Command R", + "model_id": "command-r-plus-08-2024", + "notes": "Cohere official pricing page lists Command R+ 08-2024 at $2.50/1M input tokens and $10.00/1M output tokens.", + "official_source_url": "https://cohere.com/pricing", + "pricing": { + "batch_input": null, + "batch_output": null, + "cache_write": null, + "cache_write_1h": null, + "cached_input": null, + "currency": "USD", + "input": 2.5, + "output": 10.0, + "unit": "1M tokens" + }, + "provider_id": "cohere", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "DeepSeek V4 Flash", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "DeepSeek V4", + "model_id": "deepseek-v4-flash", + "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", + "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", + "pricing": { + "batch_input": null, + "batch_output": null, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.0028, + "currency": "USD", + "input": 0.14, + "output": 0.28, + "unit": "1M tokens" + }, + "provider_id": "deepseek", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "DeepSeek V4 Pro", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "DeepSeek V4", + "model_id": "deepseek-v4-pro", + "notes": "DeepSeek labels input cache miss as input price and cache hit as cached_input.", + "official_source_url": "https://api-docs.deepseek.com/quick_start/pricing", + "pricing": { + "batch_input": null, + "batch_output": null, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.003625, + "currency": "USD", + "input": 0.435, + "output": 0.87, + "unit": "1M tokens" + }, + "provider_id": "deepseek", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Gemini 2.5 Flash", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Gemini 2.5", + "model_id": "gemini-2.5-flash", + "notes": "Rates are for text/image/video input; Google lists separate audio rates in the official pricing table.", + "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", + "pricing": { + "batch_input": 0.15, + "batch_output": 1.25, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.03, + "currency": "USD", + "input": 0.3, + "output": 2.5, + "unit": "1M tokens" + }, + "provider_id": "google-gemini", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Gemini 2.5 Pro", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Gemini 2.5", + "model_id": "gemini-2.5-pro", + "notes": "Rates are for prompts up to 200k tokens. Google lists higher rates above 200k tokens in the official pricing table.", + "official_source_url": "https://ai.google.dev/gemini-api/docs/pricing", + "pricing": { + "batch_input": 0.625, + "batch_output": 5.0, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.125, + "currency": "USD", + "input": 1.25, + "output": 10.0, + "unit": "1M tokens" + }, + "provider_id": "google-gemini", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Mistral Large 3", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Mistral Large", + "model_id": "mistral-large", + "notes": "mistral-large-latest currently maps to Mistral Large 3. Standard price is $0.50/M input and $1.50/M output. Cached input receives a 90% discount. Batch processing receives a 50% discount.", + "official_source_url": "https://mistral.ai/pricing/api/", + "pricing": { + "batch_input": 0.25, + "batch_output": 0.75, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.05, + "currency": "USD", + "input": 0.5, + "output": 1.5, + "unit": "1M tokens" + }, + "provider_id": "mistral-ai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "GPT-4.1", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "GPT-4.1", + "model_id": "gpt-4.1", + "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", + "official_source_url": "https://platform.openai.com/docs/pricing", + "pricing": { + "batch_input": 1.0, + "batch_output": 4.0, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 2.0, + "output": 8.0, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "GPT-5", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "GPT-5", + "model_id": "gpt-5", + "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", + "official_source_url": "https://platform.openai.com/docs/pricing", + "pricing": { + "batch_input": 0.625, + "batch_output": 5.0, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.125, + "currency": "USD", + "input": 1.25, + "output": 10.0, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "GPT-5.4 mini", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "GPT-5.4", + "model_id": "gpt-5.4-mini", + "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", + "official_source_url": "https://platform.openai.com/docs/pricing", + "pricing": { + "batch_input": 0.375, + "batch_output": 2.25, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.075, + "currency": "USD", + "input": 0.75, + "output": 4.5, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "GPT-5.5", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "GPT-5.5", + "model_id": "gpt-5.5", + "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens. Batch prices are 50% of the listed standard price where shown.", + "official_source_url": "https://platform.openai.com/docs/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 15.0, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 30.0, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "GPT-5.6 Luna", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "GPT-5.6", + "model_id": "gpt-5.6-luna", + "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", + "official_source_url": "https://developers.openai.com/api/docs/pricing", + "pricing": { + "batch_input": 0.5, + "batch_output": 3.0, + "cache_write": 1.25, + "cache_write_1h": null, + "cached_input": 0.1, + "currency": "USD", + "input": 1.0, + "output": 6.0, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "GPT-5.6 Sol", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "GPT-5.6", + "model_id": "gpt-5.6-sol", + "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", + "official_source_url": "https://developers.openai.com/api/docs/pricing", + "pricing": { + "batch_input": 2.5, + "batch_output": 15.0, + "cache_write": 6.25, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 5.0, + "output": 30.0, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "GPT-5.6 Terra", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "GPT-5.6", + "model_id": "gpt-5.6-terra", + "notes": "OpenAI official pricing page lists Standard, Batch, Flex, and Priority rates per 1M tokens. Public V1 fields store Standard short-context prices and Batch short-context prices.", + "official_source_url": "https://developers.openai.com/api/docs/pricing", + "pricing": { + "batch_input": 1.25, + "batch_output": 7.5, + "cache_write": 3.125, + "cache_write_1h": null, + "cached_input": 0.25, + "currency": "USD", + "input": 2.5, + "output": 15.0, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "o3", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "o-series", + "model_id": "o3", + "notes": "OpenAI official pricing page lists standard and batch rates per 1M tokens.", + "official_source_url": "https://platform.openai.com/docs/pricing", + "pricing": { + "batch_input": 1.0, + "batch_output": 4.0, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.5, + "currency": "USD", + "input": 2.0, + "output": 8.0, + "unit": "1M tokens" + }, + "provider_id": "openai", + "status": "active" + }, + { + "accessed_at": "2026-07-27T00:00:00Z", + "display_name": "Grok 4.3", + "effective_from": null, + "last_verified_at": "2026-07-27T00:00:00Z", + "model_family": "Grok 4", + "model_id": "grok-4.3", + "notes": "V1 stores short-context pricing. The long-context threshold is 200K tokens. Grok 4.3 batch pricing receives a 20% discount. Long-context prices are not stored in the current short-context fields.", + "official_source_url": "https://docs.x.ai/developers/pricing", + "pricing": { + "batch_input": 1.0, + "batch_output": 2.0, + "cache_write": null, + "cache_write_1h": null, + "cached_input": 0.2, + "currency": "USD", + "input": 1.25, + "output": 2.5, + "unit": "1M tokens" + }, + "provider_id": "xai", + "status": "active" + } + ], + "official_source_count": 11, + "official_sources": [ + "https://ai.google.dev/gemini-api/docs/pricing", + "https://api-docs.deepseek.com/quick_start/pricing", + "https://cohere.com/pricing", + "https://developers.openai.com/api/docs/pricing", + "https://docs.anthropic.com/en/docs/about-claude/pricing", + "https://docs.cohere.com/docs/command-a-plus", + "https://docs.x.ai/developers/pricing", + "https://mistral.ai/pricing/api/", + "https://platform.claude.com/docs/en/about-claude/pricing", + "https://platform.openai.com/docs/pricing", + "https://www.anthropic.com/news/claude-sonnet-5" + ], + "provider_count": 7, + "providers": [ + { + "display_name": "Anthropic", + "docs_url": "https://docs.anthropic.com", + "notes": "Official Claude API pricing documentation.", + "pricing_url": "https://docs.anthropic.com/en/docs/about-claude/pricing", + "provider_id": "anthropic", + "website_url": "https://www.anthropic.com" + }, + { + "display_name": "Cohere", + "docs_url": "https://docs.cohere.com", + "notes": "Official Cohere pricing page.", + "pricing_url": "https://cohere.com/pricing", + "provider_id": "cohere", + "website_url": "https://cohere.com" + }, + { + "display_name": "DeepSeek", + "docs_url": "https://api-docs.deepseek.com", + "notes": "Official DeepSeek API models and pricing documentation.", + "pricing_url": "https://api-docs.deepseek.com/quick_start/pricing", + "provider_id": "deepseek", + "website_url": "https://www.deepseek.com" + }, + { + "display_name": "Google Gemini", + "docs_url": "https://ai.google.dev/gemini-api/docs", + "notes": "Official Gemini API pricing documentation.", + "pricing_url": "https://ai.google.dev/gemini-api/docs/pricing", + "provider_id": "google-gemini", + "website_url": "https://ai.google.dev" + }, + { + "display_name": "Mistral AI", + "docs_url": "https://docs.mistral.ai", + "notes": "Official Mistral AI pricing page.", + "pricing_url": "https://mistral.ai/pricing", + "provider_id": "mistral-ai", + "website_url": "https://mistral.ai" + }, + { + "display_name": "OpenAI", + "docs_url": "https://platform.openai.com/docs", + "notes": "Official OpenAI API pricing documentation.", + "pricing_url": "https://platform.openai.com/docs/pricing", + "provider_id": "openai", + "website_url": "https://openai.com" + }, + { + "display_name": "xAI", + "docs_url": "https://docs.x.ai", + "notes": "Official xAI model documentation.", + "pricing_url": "https://docs.x.ai/developers/models", + "provider_id": "xai", + "website_url": "https://x.ai" + } + ] +} diff --git a/schema/model.schema.json b/schema/model.schema.json index 25e0b84..1a4db87 100644 --- a/schema/model.schema.json +++ b/schema/model.schema.json @@ -12,7 +12,7 @@ "status": {"type": "string", "enum": ["active", "preview", "deprecated", "retired", "unknown"]}, "pricing": { "type": "object", - "required": ["currency", "unit", "input", "output", "cached_input", "cache_write", "batch_input", "batch_output"], + "required": ["currency", "unit", "input", "output", "cached_input", "cache_write", "cache_write_1h", "batch_input", "batch_output"], "properties": { "currency": {"type": "string", "const": "USD"}, "unit": {"type": "string", "const": "1M tokens"}, @@ -20,6 +20,7 @@ "output": {"type": ["number", "null"], "minimum": 0}, "cached_input": {"type": ["number", "null"], "minimum": 0}, "cache_write": {"type": ["number", "null"], "minimum": 0}, + "cache_write_1h": {"type": ["number", "null"], "minimum": 0}, "batch_input": {"type": ["number", "null"], "minimum": 0}, "batch_output": {"type": ["number", "null"], "minimum": 0} } diff --git a/scripts/generate_pricing_v2_preview.py b/scripts/generate_pricing_v2_preview.py index 36a26b5..1dd7095 100644 --- a/scripts/generate_pricing_v2_preview.py +++ b/scripts/generate_pricing_v2_preview.py @@ -40,7 +40,7 @@ OFFICIAL_DOMAINS = { "openai": ("platform.openai.com", "developers.openai.com"), - "anthropic": ("docs.anthropic.com", "platform.claude.com"), + "anthropic": ("docs.anthropic.com", "platform.claude.com", "anthropic.com"), "google-gemini": ("ai.google.dev",), "xai": ("docs.x.ai",), "deepseek": ("api-docs.deepseek.com",), @@ -95,10 +95,15 @@ }, } +MODEL_AVAILABILITY_OVERRIDES = { + ("anthropic", "claude-opus-5"): "Standard", +} + PHASE25_OFFICIAL_COMPLETION = { "price:anthropic/claude-fable-5:standard:short:website-preview": "https://platform.claude.com/docs/en/about-claude/pricing", "price:anthropic/claude-mythos-5:standard:short:website-preview": "https://platform.claude.com/docs/en/about-claude/pricing", "price:anthropic/claude-opus-4.1:standard:short:website-preview": "https://platform.claude.com/docs/en/about-claude/pricing", + "price:anthropic/claude-opus-5:standard:short:current": "https://platform.claude.com/docs/en/about-claude/pricing", "price:cohere/aya-expanse-32b:standard:short:current": "https://cohere.com/pricing", "price:cohere/command-r-plus-08-2024:standard:short:current": "https://cohere.com/pricing", "price:google-gemini/gemini-3-flash-preview:standard:short:website-preview": "https://ai.google.dev/gemini-api/docs/pricing", @@ -113,6 +118,10 @@ "price:xai/grok-build-0.1:standard:short:website-preview": "https://docs.x.ai/developers/models", } +PHASE25_OFFICIAL_VERIFIED_AT = { + "price:anthropic/claude-opus-5:standard:short:current": "2026-07-29T00:00:00Z", +} + PHASE26_OFFICIAL_COMPLETION = { "price:google-gemini/gemini-3.1-pro-preview:standard:short:website-preview": "https://ai.google.dev/gemini-api/docs/pricing", "price:google-gemini/gemini-3.5-flash:standard:short:website-preview": "https://ai.google.dev/gemini-api/docs/pricing", @@ -157,6 +166,27 @@ "supports": ["models"], "verificationStatus": "verified", }, + ("anthropic", "https://www.anthropic.com/news/claude-opus-5"): { + "sourceType": "official_release_announcement", + "title": "Anthropic Claude Opus 5 announcement", + "supports": ["models", "release"], + "verificationStatus": "verified", + "checkedAt": "2026-07-29T00:00:00Z", + }, + ("anthropic", "https://platform.claude.com/docs/en/about-claude/models/overview"): { + "sourceType": "official_model_docs", + "title": "Anthropic Claude model overview", + "supports": ["models", "availability"], + "verificationStatus": "verified", + "checkedAt": "2026-07-29T00:00:00Z", + }, + ("anthropic", "https://platform.claude.com/docs/en/build-with-claude/batch-processing"): { + "sourceType": "official_pricing_page", + "title": "Anthropic batch processing documentation", + "supports": ["pricing", "batch"], + "verificationStatus": "verified", + "checkedAt": "2026-07-29T00:00:00Z", + }, } OPENAI_GPT56_TIER_MATRIX = { @@ -606,7 +636,7 @@ def classify_criticality(price: dict[str, Any]) -> str: "afterVerificationStatus": after_verification_status, "sourceRefs": price["sourceRefs"], "officialEvidence": [phase25_source] if phase25_source else [], - "phase25VerifiedAt": "2026-07-07T00:00:00Z" if phase25_source else None, + "phase25VerifiedAt": PHASE25_OFFICIAL_VERIFIED_AT.get(price["pricingId"], "2026-07-07T00:00:00Z") if phase25_source else None, "verificationDecision": verification_decision, "defaultSafe": default_safe, "currentEffective": is_current_effective(price, today), @@ -921,13 +951,14 @@ def source_verified_at(refs: list[str]) -> str | None: "integrationMappingCount": len(phase25_website_blockers), "websiteUsageImpact": website_usage_impact, } + unsafe_before = len(p0_before) closure = { "generatedAt": generated_at, - "defaultCandidatesBefore": 31, + "defaultCandidatesBefore": len(production_default_candidates), "defaultCandidatesAfter": len(production_default_candidates), - "safeBefore": 26, + "safeBefore": len(production_default_candidates) - unsafe_before, "safeAfter": len(production_default_safe), - "unsafeBefore": 5, + "unsafeBefore": unsafe_before, "unsafeAfter": len(production_default_unsafe), "excludedCandidates": excluded_models, "evidenceBasedUpgrades": verified_upgrade_models, @@ -1676,10 +1707,13 @@ def status_parts(provider_id: str, model_id: str, public: dict[str, Any] | None, release_stage = "stable" verification = "verified" if public and website else "partially_verified" + availability = MODEL_AVAILABILITY_OVERRIDES.get((provider_id, model_id)) + if availability is None: + availability = (website or {}).get("availability", public_status or "unknown") return { "lifecycleStatus": lifecycle, "releaseStage": release_stage, - "availability": (website or {}).get("availability", public_status or "unknown"), + "availability": availability, "verificationStatus": verification, } @@ -1717,6 +1751,7 @@ def make_charges(prefix: str, values: dict[str, Any], source: str) -> list[dict[ ("input", values.get("input")), ("cached_input", values.get("cached_input")), (cache_write_component, values.get("cache_write")), + ("cache_write_1h", values.get("cache_write_1h")), ("output", values.get("output")), ] if source == "website": @@ -1823,7 +1858,7 @@ def upsert_source(url: str, meta: dict[str, Any]) -> None: ) for (provider_id, url), meta in PHASE26_EXTRA_SOURCE_URLS.items(): - checked_at = "2026-07-07T00:00:00Z" + checked_at = meta.get("checkedAt", "2026-07-07T00:00:00Z") source_urls[url] = { "providerId": provider_id, "url": url, @@ -2196,9 +2231,10 @@ def default_price_for_candidate(provider_id: str, model_id: str) -> dict[str, An } ) + def sql_json(value: dict[str, Any]) -> str: + return json.dumps(value, sort_keys=True).replace("'", "''") + sql_lines = [ - "-- AICostBudget Pricing V2 preview seed.", - "-- Generated from data/pricing-v2-preview/*.json; not a production Supabase seed.", "begin;", "create table if not exists pricing_v2_preview_sources (source_id text primary key, payload jsonb not null);", "create table if not exists pricing_v2_preview_models (internal_id text primary key, payload jsonb not null);", @@ -2207,19 +2243,19 @@ def default_price_for_candidate(provider_id: str, model_id: str) -> dict[str, An for source in sources: sql_lines.append( "insert into pricing_v2_preview_sources (source_id, payload) values " - + f"('{source['sourceId']}', '{json.dumps(source, sort_keys=True).replace("'", "''")}'::jsonb) " + + f"('{source['sourceId']}', '{sql_json(source)}'::jsonb) " + "on conflict (source_id) do update set payload = excluded.payload;" ) for model in models: sql_lines.append( "insert into pricing_v2_preview_models (internal_id, payload) values " - + f"('{model['internalId']}', '{json.dumps(model, sort_keys=True).replace("'", "''")}'::jsonb) " + + f"('{model['internalId']}', '{sql_json(model)}'::jsonb) " + "on conflict (internal_id) do update set payload = excluded.payload;" ) for price in prices: sql_lines.append( "insert into pricing_v2_preview_prices (pricing_id, model_internal_id, payload) values " - + f"('{price['pricingId']}', '{price['modelInternalId']}', '{json.dumps(price, sort_keys=True).replace("'", "''")}'::jsonb) " + + f"('{price['pricingId']}', '{price['modelInternalId']}', '{sql_json(price)}'::jsonb) " + "on conflict (pricing_id) do update set model_internal_id = excluded.model_internal_id, payload = excluded.payload;" ) sql_lines.extend(["commit;", ""]) diff --git a/scripts/generate_website_projection_v2.py b/scripts/generate_website_projection_v2.py index f93b3eb..c8355a1 100644 --- a/scripts/generate_website_projection_v2.py +++ b/scripts/generate_website_projection_v2.py @@ -21,8 +21,8 @@ UNSAFE_DIFFERENCE_AUDIT = PREVIEW / "phase4a-5-unsafe-difference-audit.json" CONTEXT_WINDOW_AUDIT = PREVIEW / "phase4a-5-context-window-audit.json" -GENERATED_AT = "2026-07-07T00:00:00Z" -DEFAULT_EFFECTIVE_AT = "2026-07-07T00:00:00Z" +GENERATED_AT = "2026-07-29T00:00:00Z" +DEFAULT_EFFECTIVE_AT = "2026-07-29T00:00:00Z" PROJECTION_SCHEMA_VERSION = "website-pricing-projection-v2.phase4a" WEBSITE_ROW_REQUIRED_FIELDS = ("id", "inputPrice", "cachedInputPrice", "outputPrice") DEFAULT_SELECTION_RULE = [ @@ -47,6 +47,8 @@ def read_website_rows(path: Path) -> list[dict[str, Any]]: for index, row in enumerate(rows): if not isinstance(row, dict): raise ValueError(f"Website dataset row {index} must be an object: {path}") + if "cachedInputPrice" not in row: + row["cachedInputPrice"] = None missing = [field for field in WEBSITE_ROW_REQUIRED_FIELDS if field not in row] if missing: raise ValueError(f"Website dataset row {index} missing required fields {missing}: {path}") diff --git a/scripts/lib.py b/scripts/lib.py index ca4739f..8ecfe6a 100644 --- a/scripts/lib.py +++ b/scripts/lib.py @@ -11,7 +11,7 @@ CANONICAL = ROOT / "data" / "canonical" DATA = ROOT / "data" API = ROOT / "api" / "v1" -PRICE_FIELDS = ("input", "output", "cached_input", "cache_write", "batch_input", "batch_output") +PRICE_FIELDS = ("input", "output", "cached_input", "cache_write", "cache_write_1h", "batch_input", "batch_output") HISTORY_COMPARE_FIELDS = ( "provider_id", "model_id", @@ -91,6 +91,7 @@ def csv_rows(models: list[dict[str, Any]]) -> list[dict[str, Any]]: "output": pricing["output"], "cached_input": pricing["cached_input"], "cache_write": pricing["cache_write"], + "cache_write_1h": pricing.get("cache_write_1h"), "batch_input": pricing["batch_input"], "batch_output": pricing["batch_output"], "official_source_url": model["official_source_url"], diff --git a/tests/fixtures/website-model-pricing.json b/tests/fixtures/website-model-pricing.json index 35238e9..dedc6eb 100644 --- a/tests/fixtures/website-model-pricing.json +++ b/tests/fixtures/website-model-pricing.json @@ -35,6 +35,12 @@ "cachedInputPrice": 0.5, "outputPrice": 25 }, + { + "id": "claude-opus-5", + "inputPrice": 5, + "cachedInputPrice": 0.5, + "outputPrice": 25 + }, { "id": "claude-sonnet-4", "inputPrice": 3, diff --git a/tests/test_dataset.py b/tests/test_dataset.py index e08b47f..61c5fd8 100644 --- a/tests/test_dataset.py +++ b/tests/test_dataset.py @@ -1,4 +1,4 @@ -import csv +import csv import json import re import shutil @@ -39,6 +39,23 @@ def test_no_negative_prices_and_sources(self): if isinstance(value, (int, float)): self.assertGreaterEqual(value, 0) + def test_claude_opus_5_public_v1_record_is_present(self): + by_key = {(model["provider_id"], model["model_id"]): model for model in load_models()} + opus5 = by_key[("anthropic", "claude-opus-5")] + opus48 = by_key[("anthropic", "claude-opus-4.8")] + self.assertEqual(opus5["display_name"], "Claude Opus 5") + self.assertEqual(opus5["status"], "active") + self.assertEqual(opus5["effective_from"], "2026-07-24") + self.assertEqual(opus5["pricing"]["input"], 5.0) + self.assertEqual(opus5["pricing"]["output"], 25.0) + self.assertEqual(opus5["pricing"]["cached_input"], 0.5) + self.assertEqual(opus5["pricing"]["cache_write"], 6.25) + self.assertEqual(opus5["pricing"]["cache_write_1h"], 10.0) + self.assertEqual(opus5["pricing"]["batch_input"], 2.5) + self.assertEqual(opus5["pricing"]["batch_output"], 12.5) + self.assertEqual(opus48["display_name"], "Claude Opus 4.8") + self.assertEqual(opus48["status"], "active") + def test_json_csv_consistency(self): dataset = json.loads((DATA / "prices.json").read_text(encoding="utf-8")) self.assertEqual(dataset, build_dataset(dataset["generated_at"])) diff --git a/tests/test_pricing_v2_preview.py b/tests/test_pricing_v2_preview.py index a3e1f83..0277c4b 100644 --- a/tests/test_pricing_v2_preview.py +++ b/tests/test_pricing_v2_preview.py @@ -51,10 +51,44 @@ def model(self, internal_id): def projection_row(self, model_id): return next(item for item in self.projection if item["id"] == model_id) + def price(self, pricing_id): + return next(item for item in self.prices if item["pricingId"] == pricing_id) + + def test_claude_opus_5_v2_identity_model_and_prices_are_present(self): + identity = self.identity("anthropic/claude-opus-5") + model = self.model("anthropic/claude-opus-5") + self.assertEqual(identity["displayName"], "Claude Opus 5") + self.assertEqual(identity["lifecycleStatus"], "active") + self.assertEqual(identity["releaseStage"], "stable") + self.assertEqual(identity["availability"], "Standard") + self.assertIn("claude-opus-5", identity["publicDatasetIds"]) + self.assertEqual(model["defaultPriceRecordId"], "price:anthropic/claude-opus-5:standard:short:current") + + standard = self.price("price:anthropic/claude-opus-5:standard:short:current") + batch = self.price("price:anthropic/claude-opus-5:batch:short:current") + charges = {charge["component"]: charge["amount"] for charge in standard["charges"]} + self.assertEqual(standard["effectiveFrom"], "2026-07-24") + self.assertEqual(charges["input"], "5") + self.assertEqual(charges["cached_input"], "0.5") + self.assertEqual(charges["cache_write_5m"], "6.25") + self.assertEqual(charges["cache_write_1h"], "10") + self.assertEqual(charges["output"], "25") + batch_charges = {charge["component"]: charge["amount"] for charge in batch["charges"]} + self.assertEqual(batch["processingMode"], "batch") + self.assertEqual(batch_charges, {"input": "2.5", "output": "12.5"}) + + def test_claude_opus_4_8_is_retained_after_opus_5(self): + identity = self.identity("anthropic/claude-opus-4.8") + model = self.model("anthropic/claude-opus-4.8") + self.assertEqual(identity["displayName"], "Claude Opus 4.8") + self.assertEqual(identity["lifecycleStatus"], "active") + self.assertEqual(identity["releaseStage"], "stable") + self.assertEqual(model["defaultPriceRecordId"], "price:anthropic/claude-opus-4.8:standard:short:current") + def test_report_counts_match_phase_1_baseline(self): self.assertEqual(self.report["candidateUnionCount"], len(self.dispositions)) self.assertEqual(self.report["websiteOnlyCount"], 21) - self.assertEqual(self.report["publicOnlyCount"], 7) + self.assertEqual(self.report["publicOnlyCount"], 8) self.assertEqual(self.report["commonCount"], 14) self.assertEqual(self.report["aliasCount"], 2) self.assertEqual(self.report["normalizedCanonicalIdentityCount"], len(self.models)) @@ -180,12 +214,12 @@ def test_phase2_cutover_remains_blocked_by_review_required_gpt_family(self): def test_phase2_5_default_safe_gate_counts(self): self.assertEqual(len(self.phase25_evidence), self.phase25_default_safe["totalPriceRecords"]) - self.assertEqual(self.phase25_default_safe["productionDefaultCandidateCount"], 31) - self.assertEqual(self.phase25_default_safe["defaultSafeCount"], 31) - self.assertEqual(self.phase25_default_safe["defaultUnsafeCount"], 39) - self.assertEqual(self.phase25_default_safe["P0PartialBefore"], 15) + self.assertEqual(self.phase25_default_safe["productionDefaultCandidateCount"], 32) + self.assertEqual(self.phase25_default_safe["defaultSafeCount"], 32) + self.assertEqual(self.phase25_default_safe["defaultUnsafeCount"], 41) + self.assertEqual(self.phase25_default_safe["P0PartialBefore"], 16) self.assertEqual(self.phase25_default_safe["P0PartialAfter"], 0) - self.assertEqual(self.phase25_default_safe["P1PartialCount"], 6) + self.assertEqual(self.phase25_default_safe["P1PartialCount"], 7) self.assertEqual(self.phase25_default_safe["P2PartialCount"], 0) self.assertEqual(self.phase25_default_safe["P3PartialCount"], 5) @@ -196,17 +230,17 @@ def test_phase2_5_gpt_and_grok_policies(self): self.assertTrue(matching_rows) self.assertTrue(all(not row["defaultSafe"] for row in matching_rows)) self.assertTrue(all(row["priorityClass"] == "P3" for row in matching_rows)) - self.assertTrue(evidence_by_model["xai/grok-4.3"]["defaultSafe"]) + self.assertTrue(next(row for row in self.phase25_evidence if row["pricingId"] == "price:xai/grok-4.3:standard:short:current")["defaultSafe"]) grok_3_rows = [row for row in self.phase25_blockers if row["websiteModelId"] == "grok-3"] self.assertTrue(grok_3_rows) self.assertTrue(all(row["recommendedIntegrationAction"] == "integrate_with_warning" for row in grok_3_rows)) def test_phase2_6_closes_p0_default_safe_gate(self): self.assertTrue(self.phase26_closure["closureGatePassed"]) - self.assertEqual(self.phase26_closure["defaultCandidatesBefore"], 31) - self.assertEqual(self.phase26_closure["defaultCandidatesAfter"], 31) - self.assertEqual(self.phase26_closure["safeBefore"], 26) - self.assertEqual(self.phase26_closure["safeAfter"], 31) + self.assertEqual(self.phase26_closure["defaultCandidatesBefore"], 32) + self.assertEqual(self.phase26_closure["defaultCandidatesAfter"], 32) + self.assertEqual(self.phase26_closure["safeBefore"], 27) + self.assertEqual(self.phase26_closure["safeAfter"], 32) self.assertEqual(self.phase26_closure["unsafeBefore"], 5) self.assertEqual(self.phase26_closure["unsafeAfter"], 0) self.assertEqual(self.phase26_resolution["P0BlockersAfter"], []) diff --git a/tests/test_website_projection_v2.py b/tests/test_website_projection_v2.py index 7932117..3a84cf4 100644 --- a/tests/test_website_projection_v2.py +++ b/tests/test_website_projection_v2.py @@ -26,6 +26,33 @@ def setUpClass(cls): cls.by_id = {row["id"]: row for row in cls.rows} cls.by_internal = {row["canonicalInternalId"]: row for row in cls.rows} + def test_projection_defaults_to_2026_07_29_effective_time(self): + self.assertEqual(self.artifact["generatedAt"], "2026-07-29T00:00:00Z") + self.assertEqual(self.artifact["effectiveAt"], "2026-07-29T00:00:00Z") + self.assertGreaterEqual(self.artifact["effectiveAt"], "2026-07-24T00:00:00Z") + + def test_claude_opus_5_projection_is_default_safe_and_current_opus(self): + opus5 = self.by_internal["anthropic/claude-opus-5"] + opus48 = self.by_internal["anthropic/claude-opus-4.8"] + self.assertTrue(opus5["defaultSafe"]) + self.assertEqual(opus5["selectedPriceRecordId"], "price:anthropic/claude-opus-5:standard:short:current") + self.assertEqual(opus5["selectedPriceEffectiveFrom"], "2026-07-24") + self.assertGreaterEqual(self.artifact["effectiveAt"], "2026-07-24T00:00:00Z") + self.assertEqual((opus5["inputPrice"], opus5["cachedInputPrice"], opus5["outputPrice"]), (5, 0.5, 25)) + self.assertTrue(opus48["defaultSafe"]) + + current_opus_rows = [ + row + for row in self.rows + if row["provider"] == "anthropic" + and row["model"].startswith("Claude Opus") + and row["lifecycleStatus"] == "active" + and row["releaseStage"] == "stable" + and row["defaultSafe"] + ] + selected = max(current_opus_rows, key=lambda row: tuple(int(part) for part in row["id"].removeprefix("claude-opus-").split("."))) + self.assertEqual(selected["canonicalInternalId"], "anthropic/claude-opus-5") + def test_required_contract_fields_are_present(self): required = set(self.artifact["requiredFields"]) self.assertEqual( @@ -119,12 +146,12 @@ def test_alias_behavior_is_preserved(self): def test_report_counts_and_parity_buckets(self): self.assertEqual(self.report["projectionModelCount"], len(self.rows)) - self.assertEqual(self.report["projectionModelCount"], 41) - self.assertEqual(self.report["defaultSafeModelCount"], 34) + self.assertEqual(self.report["projectionModelCount"], 42) + self.assertEqual(self.report["defaultSafeModelCount"], 35) self.assertEqual(self.report["unsafeIdentityCount"], 7) self.assertEqual(self.report["nullPriceCount"], 7) - self.assertEqual(self.report["parity"]["websiteModelCount"], 35) - self.assertEqual(sum(self.report["parity"]["counts"].values()), 35) + self.assertEqual(self.report["parity"]["websiteModelCount"], 36) + self.assertEqual(sum(self.report["parity"]["counts"].values()), 36) self.assertEqual(self.report["parity"]["counts"]["unsafe_difference"], 4) def test_gpt_5_6_rows_use_standard_short_defaults(self): @@ -171,16 +198,16 @@ def test_phase45_reconciliations_are_complete(self): rows = self.audits["row_reconciliation"] unsafe = self.audits["unsafe_audit"] context = self.audits["context_audit"] - self.assertEqual(safe["stats"]["safePriceRecordsInput"], 31) - self.assertEqual(safe["stats"]["mappedToProjection"], 31) + self.assertEqual(safe["stats"]["safePriceRecordsInput"], 32) + self.assertEqual(safe["stats"]["mappedToProjection"], 32) self.assertEqual(safe["stats"]["unexplained"], 0) - self.assertEqual(rows["counts"]["canonical_model"], 38) + self.assertEqual(rows["counts"]["canonical_model"], 39) self.assertEqual(rows["counts"]["alias"], 2) self.assertEqual(rows["counts"]["redirecting_identity"], 1) - self.assertEqual(unsafe["beforePhase4A5UnsafeDifferenceCount"], 16) + self.assertEqual(unsafe["beforePhase4A5UnsafeDifferenceCount"], 17) self.assertEqual(unsafe["currentUnsafeDifferenceCount"], 4) self.assertEqual(len(unsafe["blockerUnsafeDifferences"]), 0) - self.assertEqual(context["contextWindowRows"], 41) + self.assertEqual(context["contextWindowRows"], 42) self.assertEqual(context["verifiedCanonicalContextWindowCount"], 0)