# Taken from https://www.llm-prices.com/
# Moving to here until PRs are review e.g. https://github.com/simonw/llm-prices/pull/48
PRICES = {
    "updated_at": "2025-12-29",
    "prices": [
        {
            "id": "amazon-nova-micro",
            "vendor": "amazon",
            "name": "Amazon Nova Micro",
            "input": 0.035,
            "output": 0.14,
            "input_cached": None,
        },
        {
            "id": "amazon-nova-lite",
            "vendor": "amazon",
            "name": "Amazon Nova Lite",
            "input": 0.06,
            "output": 0.24,
            "input_cached": None,
        },
        {
            "id": "amazon-nova-pro",
            "vendor": "amazon",
            "name": "Amazon Nova Pro",
            "input": 0.8,
            "output": 3.2,
            "input_cached": None,
        },
        {
            "id": "amazon-nova-premier",
            "vendor": "amazon",
            "name": "Amazon Nova Premier",
            "input": 2.5,
            "output": 12.5,
            "input_cached": None,
        },
        {
            "id": "amazon-nova-2-omni-preview",
            "vendor": "amazon",
            "name": "Amazon Nova 2 Omni (Preview)",
            "input": 0.3,
            "output": 2.5,
            "input_cached": None,
        },
        {
            "id": "amazon-nova-2-pro-preview",
            "vendor": "amazon",
            "name": "Amazon Nova 2 Pro (Preview)",
            "input": 1.25,
            "output": 10.0,
            "input_cached": None,
        },
        {
            "id": "amazon-nova-2-lite",
            "vendor": "amazon",
            "name": "Amazon Nova 2 Lite",
            "input": 0.3,
            "output": 2.5,
            "input_cached": None,
        },
        {
            "id": "amazon.titan-image-generator-v2:0",
            "vendor": "amazon",
            "name": "Titan Image Generator v2",
            "input": 0.0,
            "output": 10.0,
            "input_cached": None,
        },
        {
            "id": "amazon.nova-canvas-v1:0",
            "vendor": "amazon",
            "name": "Amazon Nova Canvas v1",
            "input": 0.0,
            "output": 40.0,
            "input_cached": None,
        },
        {
            "id": "claude-3.7-sonnet",
            "vendor": "anthropic",
            "name": "Claude 3.7 Sonnet",
            "input": 3,
            "output": 15,
            "input_cached": None,
        },
        {
            "id": "claude-3.5-sonnet",
            "vendor": "anthropic",
            "name": "Claude 3.5 Sonnet",
            "input": 3,
            "output": 15,
            "input_cached": None,
        },
        {
            "id": "claude-3-opus",
            "vendor": "anthropic",
            "name": "Claude 3 Opus",
            "input": 15,
            "output": 75,
            "input_cached": None,
        },
        {
            "id": "claude-3-haiku",
            "vendor": "anthropic",
            "name": "Claude 3 Haiku",
            "input": 0.25,
            "output": 1.25,
            "input_cached": None,
        },
        {
            "id": "claude-3.5-haiku",
            "vendor": "anthropic",
            "name": "Claude 3.5 Haiku",
            "input": 0.8,
            "output": 4,
            "input_cached": None,
        },
        {
            "id": "claude-4.5-haiku",
            "vendor": "anthropic",
            "name": "Claude 4.5 Haiku",
            "input": 1,
            "output": 5,
            "input_cached": None,
        },
        {
            "id": "claude-sonnet-4.5",
            "vendor": "anthropic",
            "name": "Claude Sonnet 4 and 4.5 \u2264200k",
            "input": 3,
            "output": 15,
            "input_cached": None,
        },
        {
            "id": "claude-sonnet-4.5-200k",
            "vendor": "anthropic",
            "name": "Claude Sonnet 4 and 4.5 >200k",
            "input": 6,
            "output": 22.5,
            "input_cached": None,
        },
        {
            "id": "claude-opus-4",
            "vendor": "anthropic",
            "name": "Claude Opus 4",
            "input": 15,
            "output": 75,
            "input_cached": None,
        },
        {
            "id": "claude-opus-4-1",
            "vendor": "anthropic",
            "name": "Claude Opus 4.1",
            "input": 15,
            "output": 75,
            "input_cached": None,
        },
        {
            "id": "claude-opus-4-5",
            "vendor": "anthropic",
            "name": "Claude Opus 4.5",
            "input": 5,
            "output": 25,
            "input_cached": None,
        },
        {
            "id": "gemini-2.5-pro-preview-03-25",
            "vendor": "google",
            "name": "Gemini 2.5 Pro Preview \u2264200k",
            "input": 1.25,
            "output": 10,
            "input_cached": None,
        },
        {
            "id": "gemini-2.5-pro-preview-03-25-200k",
            "vendor": "google",
            "name": "Gemini 2.5 Pro Preview >200k",
            "input": 2.5,
            "output": 15,
            "input_cached": None,
        },
        {
            "id": "gemini-2.0-flash-lite",
            "vendor": "google",
            "name": "Gemini 2.0 Flash Lite",
            "input": 0.075,
            "output": 0.3,
            "input_cached": None,
        },
        {
            "id": "gemini-2.0-flash",
            "vendor": "google",
            "name": "Gemini 2.0 Flash",
            "input": 0.1,
            "output": 0.4,
            "input_cached": None,
        },
        {
            "id": "gemini-1.5-flash",
            "vendor": "google",
            "name": "Gemini 1.5 Flash \u2264128k",
            "input": 0.075,
            "output": 0.3,
            "input_cached": None,
        },
        {
            "id": "gemini-1.5-flash-128k",
            "vendor": "google",
            "name": "Gemini 1.5 Flash >128k",
            "input": 0.15,
            "output": 0.6,
            "input_cached": None,
        },
        {
            "id": "gemini-1.5-flash-8b",
            "vendor": "google",
            "name": "Gemini 1.5 Flash-8B \u2264128k",
            "input": 0.0375,
            "output": 0.15,
            "input_cached": None,
        },
        {
            "id": "gemini-1.5-flash-8b-128k",
            "vendor": "google",
            "name": "Gemini 1.5 Flash-8B >128k",
            "input": 0.075,
            "output": 0.3,
            "input_cached": None,
        },
        {
            "id": "gemini-1.5-pro",
            "vendor": "google",
            "name": "Gemini 1.5 Pro \u2264128k",
            "input": 1.25,
            "output": 5,
            "input_cached": None,
        },
        {
            "id": "gemini-1.5-pro-128k",
            "vendor": "google",
            "name": "Gemini 1.5 Pro >128k",
            "input": 2.5,
            "output": 10,
            "input_cached": None,
        },
        {
            "id": "gemini-2.5-flash",
            "vendor": "google",
            "name": "Gemini 2.5 Flash",
            "input": 0.3,
            "output": 2.5,
            "input_cached": 0.03,
        },
        {
            "id": "gemini-2.5-flash-lite",
            "vendor": "google",
            "name": "Gemini 2.5 Flash-Lite",
            "input": 0.1,
            "output": 0.4,
            "input_cached": 0.01,
        },
        {
            "id": "gemini-2.5-flash-preview-09-2025",
            "vendor": "google",
            "name": "Gemini 2.5 Flash Preview (09-2025)",
            "input": 0.3,
            "output": 2.5,
            "input_cached": 0.03,
        },
        {
            "id": "gemini-2.5-pro",
            "vendor": "google",
            "name": "Gemini 2.5 Pro \u2264200k",
            "input": 1.25,
            "output": 10,
            "input_cached": 0.125,
        },
        {
            "id": "gemini-2.5-pro-200k",
            "vendor": "google",
            "name": "Gemini 2.5 Pro >200k",
            "input": 2.5,
            "output": 15,
            "input_cached": 0.25,
        },
        {
            "id": "gemini-3-pro-preview",
            "vendor": "google",
            "name": "Gemini 3 Pro \u2264200k",
            "input": 2,
            "output": 12,
            "input_cached": None,
        },
        {
            "id": "gemini-3-pro-preview-200k",
            "vendor": "google",
            "name": "Gemini 3 Pro >200k",
            "input": 4,
            "output": 18,
            "input_cached": None,
        },
        {
            "id": "gemini-3-flash-preview",
            "vendor": "google",
            "name": "Gemini 3 Flash Preview",
            "input": 0.5,
            "output": 3,
            "input_cached": None,
        },
        {
            "id": "gemini-2.5-flash-preview-tts",
            "vendor": "google",
            "name": "Gemini 2.5 Flash Preview TTS",
            "input": 0.5,
            "output": 10,
            "input_cached": None,
        },
        {
            "id": "gemini-2.5-pro-preview-tts",
            "vendor": "google",
            "name": "Gemini 2.5 Pro Preview TTS",
            "input": 1,
            "output": 20,
            "input_cached": None,
        },
        {
            "id": "gpt-4.5",
            "vendor": "openai",
            "name": "GPT-4.5",
            "input": 75,
            "output": 150,
            "input_cached": 37.5,
        },
        {
            "id": "gpt-4o",
            "vendor": "openai",
            "name": "GPT-4o",
            "input": 2.5,
            "output": 10,
            "input_cached": 1.25,
        },
        {
            "id": "gpt-4o-mini",
            "vendor": "openai",
            "name": "GPT-4o Mini",
            "input": 0.15,
            "output": 0.6,
            "input_cached": 0.075,
        },
        {
            "id": "chatgpt-4o-latest",
            "vendor": "openai",
            "name": "ChatGPT 4o Latest",
            "input": 5,
            "output": 15,
            "input_cached": None,
        },
        {
            "id": "o1-preview",
            "vendor": "openai",
            "name": "o1 and o1-preview",
            "input": 15,
            "output": 60,
            "input_cached": 7.5,
        },
        {
            "id": "o1-pro",
            "vendor": "openai",
            "name": "o1 Pro",
            "input": 150,
            "output": 600,
            "input_cached": None,
        },
        {
            "id": "o1-mini",
            "vendor": "openai",
            "name": "o1-mini",
            "input": 1.1,
            "output": 4.4,
            "input_cached": 0.55,
        },
        {
            "id": "o3-mini",
            "vendor": "openai",
            "name": "o3-mini",
            "input": 1.1,
            "output": 4.4,
            "input_cached": 0.55,
        },
        {
            "id": "gpt-4.1",
            "vendor": "openai",
            "name": "GPT-4.1",
            "input": 2,
            "output": 8,
            "input_cached": 0.5,
        },
        {
            "id": "gpt-4.1-mini",
            "vendor": "openai",
            "name": "GPT-4.1 Mini",
            "input": 0.4,
            "output": 1.6,
            "input_cached": 0.1,
        },
        {
            "id": "gpt-4.1-nano",
            "vendor": "openai",
            "name": "GPT-4.1 Nano",
            "input": 0.1,
            "output": 0.4,
            "input_cached": 0.025,
        },
        {
            "id": "o3",
            "vendor": "openai",
            "name": "o3",
            "input": 10,
            "output": 40,
            "input_cached": 0.5,
        },
        {
            "id": "o4-mini",
            "vendor": "openai",
            "name": "o4-mini",
            "input": 1.1,
            "output": 4.4,
            "input_cached": 0.275,
        },
        {
            "id": "gpt-5-nano",
            "vendor": "openai",
            "name": "GPT-5 Nano",
            "input": 0.05,
            "output": 0.4,
            "input_cached": 0.005,
        },
        {
            "id": "gpt-5-mini",
            "vendor": "openai",
            "name": "GPT-5 Mini",
            "input": 0.25,
            "output": 2,
            "input_cached": 0.025,
        },
        {
            "id": "gpt-5",
            "vendor": "openai",
            "name": "GPT-5",
            "input": 1.25,
            "output": 10,
            "input_cached": 0.125,
        },
        {
            "id": "gpt-image-1",
            "vendor": "openai",
            "name": "gpt-image-1 (image gen)",
            "input": 10,
            "output": 40,
            "input_cached": 1.25,
        },
        {
            "id": "gpt-image-1-mini",
            "vendor": "openai",
            "name": "gpt-image-1-mini (image gen)",
            "input": 2,
            "output": 8,
            "input_cached": 0.2,
        },
        {
            "id": "gpt-image-1.5",
            "vendor": "openai",
            "name": "gpt-image-1.5 (image gen)",
            "input": 5,
            "output": 34,
            "input_cached": None,
        },
        {
            "id": "gpt-5-pro",
            "vendor": "openai",
            "name": "GPT-5 Pro",
            "input": 15,
            "output": 120,
            "input_cached": None,
        },
        {
            "id": "o3-pro",
            "vendor": "openai",
            "name": "o3 Pro",
            "input": 20,
            "output": 80,
            "input_cached": None,
        },
        {
            "id": "o4-mini-deep-research",
            "vendor": "openai",
            "name": "o4-mini Deep Research",
            "input": 2,
            "output": 8,
            "input_cached": 0.5,
        },
        {
            "id": "o3-deep-research",
            "vendor": "openai",
            "name": "o3 Deep Research",
            "input": 10,
            "output": 40,
            "input_cached": 2.5,
        },
        {
            "id": "gpt-5.1-codex-mini",
            "vendor": "openai",
            "name": "GPT-5.1 Codex mini",
            "input": 0.25,
            "output": 2.0,
            "input_cached": 0.025,
        },
        {
            "id": "gpt-5.1-codex",
            "vendor": "openai",
            "name": "GPT-5.1 Codex",
            "input": 1.25,
            "output": 10.0,
            "input_cached": 0.125,
        },
        {
            "id": "gpt-5.1",
            "vendor": "openai",
            "name": "GPT-5.1",
            "input": 1.25,
            "output": 10.0,
            "input_cached": 0.125,
        },
        {
            "id": "gpt-5.2",
            "vendor": "openai",
            "name": "GPT-5.2",
            "input": 1.75,
            "output": 14.0,
            "input_cached": 0.175,
        },
        {
            "id": "gpt-5.2-pro",
            "vendor": "openai",
            "name": "GPT-5.2 Pro",
            "input": 21.0,
            "output": 168.0,
            "input_cached": None,
        },
        {
            "id": "gemini-3-pro-image-preview",
            "vendor": "google",
            "name": "Gemini 3 Pro Image Preview",
            "input": 2.0,
            "output": 120.0,
            "input_cached": None,
        },
        {
            "id": "gemini-2.5-flash-image",
            "vendor": "google",
            "name": "Gemini 2.5 Flash Image",
            "input": 0.3,
            "output": 30.0,
            "input_cached": None,
        },
        {
            "id": "imagen-4",
            "vendor": "google",
            "name": "Imagen 4",
            "input": 0.0,
            "output": 40.0,
            "input_cached": None,
        },
        {
            "id": "imagen-4-fast",
            "vendor": "google",
            "name": "Imagen 4 Fast",
            "input": 0.0,
            "output": 20.0,
            "input_cached": None,
        },
        {
            "id": "imagen-4-ultra",
            "vendor": "google",
            "name": "Imagen 4 Ultra",
            "input": 0.0,
            "output": 60.0,
            "input_cached": None,
        },
        {
            "id": "imagen-4.0-ultra-generate-001",
            "vendor": "google",
            "name": "Imagen 4.0 Ultra Generate 001",
            "input": 0.0,
            "output": 60.0,
            "input_cached": None,
        },
        {
            "id": "imagen-4.0-fast-generate-001",
            "vendor": "google",
            "name": "Imagen 4.0 Fast Generate 001",
            "input": 0.0,
            "output": 20.0,
            "input_cached": None,
        },
        {
            "id": "chirp_3",
            "vendor": "google",
            "name": "Chirp 3 (STT)",
            # $0.012 per minute ~ $0.72 per hour. Actually pricing is per minute.
            "input": 0.012,
            # STT returns text, so output tokens isn't really the cost metric, but
            # we can put 0.
            # But main.py uses input/token counts. STT V2 uses seconds.
            # generate_transcript returns 0 tokens.
            # So cost calculation in main.py stt_cost = ... * input_price will be 0.
            # To fix cost calc we'd need to change main.py to handle audio
            # duration/seconds.
            # For now just adding it to key so it doesn't warn.
            "output": 0.0,
            "input_cached": None,
        },
    ],
    "aliases": {
        "claude-haiku-4-5": "claude-4.5-haiku",
        "claude-sonnet-4-5": "claude-sonnet-4.5",
        "nova-2-lite": "amazon-nova-2-lite",
        "nova-pro": "amazon-nova-pro",
        "nova-premier": "amazon-nova-premier",
        "gcp-chirp3": "chirp_3",
    },
}
