{"openapi":"3.1.0","info":{"title":"telemeter.ai Pricing API","version":"1.0.0","description":"Public, read-only, keyless API over telemeter's model-pricing registry: model list, a single model by id/alias, and cost computation. Honesty is load-bearing (ADR 0016): a `pending` model or cost result carries `data: null` — never a fabricated number — because its price is single-source or the sources disagree. A `stale` result is a real, sourced number whose `last_verified_at` is older than `staleness_window_days` (currently 30); `age_days` says exactly how old. No authentication is required or supported — this is public marketing data, not customer data."},"servers":[{"url":"https://telemeter.ai","description":"Production"}],"paths":{"/api/pricing/models":{"get":{"operationId":"listPricingModels","summary":"List every model in the pricing registry, including pending ones.","parameters":[{"name":"provider","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to one provider id (e.g. \"openai\")."},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["verified","pending","override"]},"description":"Filter by the registry's own verification_status."}],"responses":{"200":{"description":"Always 200 — the list itself never fails; individual models carry their own status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingListEnvelope"}}}},"400":{"description":"An invalid `status` query value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingErrorEnvelope"}}}}}}},"/api/pricing/models/{id}":{"get":{"operationId":"getPricingModel","summary":"Get one model by id or alias.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"A model_id or any of its aliases — resolved the same way the registry resolves it everywhere else."}],"responses":{"200":{"description":"The model was found (status ok/stale/pending).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingModelEnvelope"}}}},"404":{"description":"No model matches that id or alias (status: \"unknown\").","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingModelEnvelope"}}}}}}},"/api/pricing/cost":{"post":{"operationId":"computePricingCost","summary":"Compute the USD cost of a token usage against one model's verified price.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"model":{"type":"string","minLength":1},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","minimum":0,"maximum":1000000000000},"output_tokens":{"type":"integer","minimum":0,"maximum":1000000000000},"cache_read_tokens":{"type":"integer","minimum":0,"maximum":1000000000000},"cache_creation_tokens":{"type":"integer","minimum":0,"maximum":1000000000000},"reasoning_tokens":{"type":"integer","minimum":0,"maximum":1000000000000}},"additionalProperties":false}},"required":["model","usage"],"additionalProperties":false}}}},"responses":{"200":{"description":"status ok/stale (a computed cost), or pending/unknown (data: null — never a guessed number).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingCostEnvelope"}}}},"400":{"description":"Malformed body (status: \"invalid_input\").","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingErrorEnvelope"}}}}}}}},"components":{"schemas":{"PricingProvider":{"type":"object","description":"One provider/gateway's price for a model (the compare-providers case).","properties":{"provider":{"type":"string"},"provider_label":{"type":"string"},"input_cost_per_token":{"type":["number","null"],"description":"USD per token. null only when this provider entry is pending."},"output_cost_per_token":{"type":["number","null"]},"cache_read_input_token_cost":{"type":["number","null"],"description":"null means pending OR this dimension is not priced."},"batch_discount_pct":{"type":["number","null"]},"verification_status":{"type":"string","enum":["verified","pending","override"]},"last_verified_at":{"type":"string","format":"date-time"},"source_url":{"type":"string","format":"uri"}},"required":["provider","provider_label","input_cost_per_token","output_cost_per_token","cache_read_input_token_cost","batch_discount_pct","verification_status","last_verified_at","source_url"]},"PricingModel":{"type":"object","description":"One model's priced record. Honesty is load-bearing (ADR 0016): a `pending` model or cost result carries `data: null` — never a fabricated number — because its price is single-source or the sources disagree. A `stale` result is a real, sourced number whose `last_verified_at` is older than `staleness_window_days` (currently 30); `age_days` says exactly how old.","properties":{"model_id":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"display_name":{"type":["string","null"],"description":"Reserved for a future registry field; always null today."},"provider":{"type":"string"},"provider_label":{"type":"string"},"input_cost_per_token":{"type":["number","null"],"description":"USD per token. null only when verification_status is \"pending\"."},"output_cost_per_token":{"type":["number","null"]},"cache_read_input_token_cost":{"type":["number","null"]},"cache_creation_input_token_cost":{"type":["number","null"]},"reasoning_cost_per_token":{"type":["number","null"]},"verification_status":{"type":"string","enum":["verified","pending","override"]},"last_verified_at":{"type":"string","format":"date-time"},"source_url":{"type":"string","format":"uri"},"stale":{"type":"boolean"},"age_days":{"type":["integer","null"]},"providers":{"type":"array","items":{"$ref":"#/components/schemas/PricingProvider"}}},"required":["model_id","aliases","display_name","provider","provider_label","input_cost_per_token","output_cost_per_token","cache_read_input_token_cost","cache_creation_input_token_cost","reasoning_cost_per_token","verification_status","last_verified_at","source_url","stale","age_days","providers"]},"PricingSnapshot":{"type":"object","properties":{"generated_at":{"type":"string","format":"date-time"},"total_model_count":{"type":"integer"},"returned_model_count":{"type":"integer"},"staleness_window_days":{"type":"integer"}},"required":["generated_at","total_model_count","returned_model_count","staleness_window_days"]},"PricingListEnvelope":{"type":"object","properties":{"status":{"type":"string","enum":["ok"]},"data":{"type":"object","properties":{"snapshot":{"$ref":"#/components/schemas/PricingSnapshot"},"models":{"type":"array","items":{"$ref":"#/components/schemas/PricingModel"}}},"required":["snapshot","models"]},"summary":{"type":"string"}},"required":["status","data","summary"]},"PricingModelEnvelope":{"type":"object","properties":{"status":{"type":"string","enum":["ok","stale","pending","unknown"]},"data":{"oneOf":[{"$ref":"#/components/schemas/PricingModel"},{"type":"null"}]},"summary":{"type":"string"}},"required":["status","data","summary"]},"PricingCostBreakdown":{"type":"object","properties":{"input":{"type":"number"},"output":{"type":"number"},"cache_read":{"type":"number"},"cache_creation":{"type":"number"},"reasoning":{"type":"number"}},"required":["input","output","cache_read","cache_creation","reasoning"]},"PricingCostData":{"type":"object","properties":{"model_id":{"type":"string"},"provider":{"type":"string"},"cost_usd":{"type":"number"},"breakdown":{"$ref":"#/components/schemas/PricingCostBreakdown"},"verification_status":{"type":"string","enum":["verified","pending","override"]},"last_verified_at":{"type":"string","format":"date-time"},"source_url":{"type":"string","format":"uri"},"stale":{"type":"boolean"},"age_days":{"type":["integer","null"]}},"required":["model_id","provider","cost_usd","breakdown","verification_status","last_verified_at","source_url","stale","age_days"]},"PricingCostEnvelope":{"type":"object","properties":{"status":{"type":"string","enum":["ok","stale","pending","unknown","invalid_input"]},"data":{"oneOf":[{"$ref":"#/components/schemas/PricingCostData"},{"type":"null"}]},"summary":{"type":"string"}},"required":["status","data","summary"]},"PricingErrorEnvelope":{"type":"object","properties":{"status":{"type":"string","enum":["invalid_input"]},"data":{"type":"null"},"summary":{"type":"string"}},"required":["status","data","summary"]}}}}