{
  "schema_version": 1,
  "note": "Date-stamped rate cards for all API providers. Add new entries when pricing changes \u2014 don't overwrite old ones. cost_tracker.py reads the most recent card.",
  "rate_cards": [
    {
      "effective_date": "2026-02-09",
      "note": "Initial rate card \u2014 confirmed from fal.ai and Google AI pricing pages",
      "fal": {
        "z_image_turbo": {
          "unit": "megapixel",
          "rate": 0.005
        },
        "z_image_turbo_lora": {
          "unit": "megapixel",
          "rate": 0.0085
        },
        "z_image_base": {
          "unit": "megapixel",
          "rate": 0.005
        },
        "z_image_base_lora": {
          "unit": "megapixel",
          "rate": 0.0085
        },
        "flux2": {
          "unit": "megapixel",
          "rate": 0.025
        },
        "flux2_lora": {
          "unit": "megapixel",
          "rate": 0.035
        },
        "wan_2.2_i2v": {
          "unit": "clip",
          "rate": 0.15
        },
        "wan_2.5": {
          "unit": "second",
          "rate": 0.05
        },
        "training_flux": {
          "unit": "1k_steps",
          "rate": 2.0,
          "note": "fal-ai/flux-lora-fast-training \u2014 confirmed from fal.ai model page. NOTE: fal-ai/flux-2-trainer is $8/1K (different endpoint)"
        },
        "training_z_image": {
          "unit": "1k_steps",
          "rate": 2.26,
          "note": "fal-ai/z-image-trainer \u2014 confirmed from billing"
        },
        "training_z_image_base": {
          "unit": "1k_steps",
          "rate": 0.85,
          "note": "fal-ai/z-image-base-trainer \u2014 confirmed from fal.ai model page"
        },
        "training_wan": {
          "unit": "1k_steps",
          "rate": 2.0
        },
        "qwen_angle": {
          "unit": "megapixel",
          "rate": 0.035,
          "note": "fal-ai/qwen-image-edit-2511-multiple-angles \u2014 confirmed from fal.ai model page"
        },
        "qwen_edit": {
          "unit": "megapixel",
          "rate": 0.03,
          "note": "fal-ai/qwen-image-edit-2511 \u2014 confirmed from fal.ai model page"
        },
        "seedvr2": {
          "unit": "megapixel",
          "rate": 0.001,
          "note": "fal-ai/seedvr/upscale/image \u2014 confirmed from fal.ai model page"
        },
        "wan_2.7_i2v": {
          "unit": "second",
          "rate": 0.1,
          "note": "fal-ai/wan/v2.7/image-to-video \u2014 confirmed from fal.ai playground"
        },
        "wan_2.7_r2v": {
          "unit": "second",
          "rate": 0.1,
          "note": "fal-ai/wan/v2.7/reference-to-video \u2014 estimated same as I2V"
        },
        "gpt_image_2": {
          "unit": "image",
          "quality_rates": {
            "low":    {"openai_published_usd": 0.006, "fal_budgeted_usd": 0.009},
            "medium": {"openai_published_usd": 0.053, "fal_budgeted_usd": 0.080},
            "high":   {"openai_published_usd": 0.211, "fal_budgeted_usd": 0.317}
          },
          "markup_multiplier_placeholder": 1.5,
          "verified": false,
          "verified_note": "Phase 5 E2E live test ran 2026-05-18 but FAL_KEY not set in test environment — SKIPPED_NO_KEY. Re-run with RECOIL_RUN_LIVE_TESTS=1 and FAL_KEY set to measure real markup.",
          "note": "Placeholder 1.5x markup vs OpenAI direct rates. Phase 5 E2E test measures real markup; if delta >20%, this block is updated and a new rate card is appended."
        }
      },
      "gemini": {
        "gemini-2.0-flash": {
          "unit": "1M_tokens",
          "input": 0.1,
          "output": 0.4,
          "image_output": 0.039
        },
        "gemini-2.5-flash": {
          "unit": "1M_tokens",
          "input": 0.3,
          "output": 2.5
        },
        "gemini-2.5-flash-image": {
          "unit": "1M_tokens",
          "input": 0.3,
          "output": 2.5,
          "image_output": 0.039
        },
        "gemini-2.5-pro": {
          "unit": "1M_tokens",
          "input": 1.25,
          "output": 10.0
        },
        "gemini-2.5-pro-long": {
          "unit": "1M_tokens",
          "input": 2.5,
          "output": 15.0,
          "note": ">200k context"
        },
        "gemini-3-flash": {
          "unit": "1M_tokens",
          "input": 0.5,
          "output": 3.0
        },
        "gemini-3-pro-preview": {
          "unit": "1M_tokens",
          "input": 1.25,
          "output": 10.0,
          "note": "Vision + text reasoning \u2014 QC pipeline, script doctor"
        },
        "gemini-3-pro-image-preview": {
          "unit": "1M_tokens",
          "input": 1.25,
          "output": 10.0,
          "image_output": 0.134,
          "note": "NBP \u2014 candidate gen identity pass"
        }
      },
      "anthropic": {
        "claude-sonnet": {
          "unit": "1M_tokens",
          "input": 3.0,
          "output": 15.0
        },
        "claude-haiku": {
          "unit": "1M_tokens",
          "input": 0.25,
          "output": 1.25
        },
        "claude-opus": {
          "unit": "1M_tokens",
          "input": 15.0,
          "output": 75.0
        }
      },
      "elevenlabs": {
        "tts_api": {
          "unit": "1k_chars",
          "rate": 0.3,
          "note": "Pay-as-you-go API rate"
        },
        "tts_flash": {
          "unit": "1k_chars",
          "rate": 0.15,
          "note": "Flash/Turbo models (half credit cost)"
        }
      },
      "suno": {
        "song_pro": {
          "unit": "song",
          "rate": 0.02,
          "note": "Suno Pro plan ($10/mo, ~500 songs)"
        },
        "song_premier": {
          "unit": "song",
          "rate": 0.015,
          "note": "Suno Premier plan ($30/mo, ~2000 songs)"
        }
      },
      "kling": {
        "kling_2.5_std": {
          "unit": "second",
          "rate": 0.021,
          "note": "Standard mode 720p via Kling Standard plan ($6.99/mo)"
        },
        "kling_2.5_pro": {
          "unit": "second",
          "rate": 0.074,
          "note": "Professional mode 1080p via Kling Standard plan"
        },
        "kling_2.5_fal": {
          "unit": "second",
          "rate": 0.07,
          "note": "Kling 2.5 Turbo Pro via fal.ai API"
        }
      },
      "runpod": {
        "a100_80gb": {
          "unit": "hour",
          "rate": 1.39,
          "note": "Community Cloud on-demand"
        },
        "h100_sxm": {
          "unit": "hour",
          "rate": 2.69,
          "note": "Community Cloud on-demand"
        },
        "a100_serverless": {
          "unit": "second",
          "rate": 0.00076,
          "note": "Serverless flex worker"
        }
      },
      "subscriptions": {
        "claude_max_20x": {
          "unit": "month",
          "rate": 200.0
        },
        "gemini_ai_pro": {
          "unit": "month",
          "rate": 19.99
        },
        "midjourney_std": {
          "unit": "month",
          "rate": 30.0
        },
        "midjourney_pro": {
          "unit": "month",
          "rate": 60.0
        },
        "elevenlabs_pro": {
          "unit": "month",
          "rate": 99.0,
          "chars_included": 1000000
        },
        "elevenlabs_scale": {
          "unit": "month",
          "rate": 330.0,
          "chars_included": 2000000
        },
        "suno_pro": {
          "unit": "month",
          "rate": 10.0,
          "songs_included": 500
        },
        "suno_premier": {
          "unit": "month",
          "rate": 30.0,
          "songs_included": 2000
        }
      }
    }
  ]
}
