{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/optimnow-io/json-schema/optimnow-io-llmmodel-schema.json",
  "title": "LLMModel",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/optimnow-io-openapi.json#/components/schemas/LLMModel",
  "type": "object",
  "properties": {
    "provider": {
      "type": "string",
      "description": "[published] Vendor display name (e.g. Anthropic, OpenAI)."
    },
    "model": {
      "type": "string",
      "description": "[published] Model display name (e.g. Claude Sonnet 5)."
    },
    "parameters": {
      "type": "string",
      "description": "[published/estimated] Parameter count where disclosed (e.g. 70B, 1T); curated for major models, extracted from names/descriptions otherwise."
    },
    "inputPricePer1M": {
      "type": "number",
      "description": "[published] USD per 1M input tokens, list price, 4-decimal precision."
    },
    "outputPricePer1M": {
      "type": "number",
      "description": "[published] USD per 1M output tokens, list price."
    },
    "batchInputPricePer1M": {
      "type": "number",
      "description": "[published] Batch API input price where the provider publishes one (typically -50%). Absent = not published."
    },
    "batchOutputPricePer1M": {
      "type": "number",
      "description": "[published] Batch API output price. Absent = not published."
    },
    "cachedInputPricePer1M": {
      "type": "number",
      "description": "[published] Prompt-cache READ price per 1M tokens (typically ~10% of input). Absent = not published."
    },
    "cacheWritePricePer1M": {
      "type": "number",
      "description": "[published] Prompt-cache WRITE price per 1M tokens at the default (roughly 5-minute) cache lifetime, schemaVersion 2.3+. Typically 1.25x input: writing a prefix into the cache costs MORE than sending it uncached, so caching only pays once the prefix is re-read. The dearer 1-hour write some vendors sell is not carried. Some vendors publish a figure BELOW the input rate here (Google, 2026-09-21); this site only ever adds the premium above input, so such a value changes no cost figure. Absent = not published, which does NOT mean free: assume a write costs the ordinary input rate. Dropped for models whose price is corrected by hand."
    },
    "contextWindow": {
      "type": "string",
      "description": "[published] Context window (e.g. 200K, 1M)."
    },
    "outlierListing": {
      "type": "boolean",
      "description": "[derived] schemaVersion 2.6+. True when the price this row publishes is an OUTLIER LISTING: one host's rate with input near free (at most 35% of the median host input) and an output/input ratio at least 4x the median, the shape a few small resellers list."
    }
  }
}