Price Comparison API
Public endpoint - no authentication required. Returns a price comparison matrix across all providers for every model in the marketplace.
The endpoint takes no parameters and always returns the full matrix. Filter client-side on models[].model.
curl $SURPLUS_BASE_URL/prices
{
"models": [
{
"model": "grok-4.5",
"displayName": "Grok 4.5",
"modelProvider": "xAI",
"providers": [
{
"provider": "bankr",
"providerName": "Bankr",
"providerModelId": "grok-4.5",
"pricing": { "input": 2, "output": 6, "cacheRead": 0.5, "webSearch": 0.005 }
},
{
"provider": "openrouter",
"providerName": "OpenRouter",
"providerModelId": "x-ai/grok-4.5",
"pricing": { "input": 2, "output": 6, "cacheRead": 0.3, "webSearch": 0.005 }
},
{
"provider": "venice",
"providerName": "Venice AI",
"providerModelId": "grok-4-5",
"pricing": { "input": 2.27, "output": 6.8, "cacheRead": 0.34 }
}
]
}
],
"providers": ["anthropic", "bankr", "bedrock", "deepseek", "engy", "fireworks", "google", "groq", "jatevo", "mistral", "mordiem", "morpheus", "openai", "openrouter", "together", "uncensored", "venice", "zai"],
"updated_at": "2026-09-15T13:00:00.000Z"
}Fields
Model Entry
modelstringStandard marketplace model namedisplayNamestringHuman-readable namemodelProviderstringModel creator (Anthropic, OpenAI, xAI, Google, etc.)providersarrayReference-pricing entries for catalog-mapped providers with publishable pricing for this model (see Provider Entry)mediaTypestringMedia class for media-metered models (optional; text models omit it)mediaPricingobjectPer-unit media reference pricing (optional; present withmediaType; see Media Pricing)
Provider Entry
providerstringProvider key (e.g.openrouter)providerNamestringHuman-readable provider nameproviderModelIdstringThe model id as that provider names itpricingobjectThat provider's price entry (see below)
Price Entry (providers[].pricing)
input, output, cacheRead, cacheWrite, and reasoning are in USD per 1M tokens. Other optional fields state their own unit below.
inputnumberInput/prompt token priceoutputnumberOutput/completion token pricecacheReadnumberCache hit price (optional)cacheWritenumberCache creation price (optional)reasoningnumberThinking/reasoning token price (optional)webSearchnumberWeb-search price (optional) - USD per web-search request. Present only for providers that publish web-search pricing (currentlyopenrouter,bedrock, andbankr); omitted elsewhere.imagenumberImage/media price (optional). For vision text models withoutmediaUnit, this is USD per 1M image tokens; whenmediaUnitis present, this is USD per that unit.imageInputPerMpnumberImage-input price in USD per megapixel (optional)imageOutputPerMpnumberGenerated-image price in USD per output megapixel (optional)mediaUnitstringHuman-readable unit forimagemedia pricing (optional), such asimage,1K characters,minute,1M tokens,job, ormegapixel
providers[] is ordered by pricing.output, ascending - the cheapest output price first. That ordering is a rough convenience, not a total cost ranking; compare entries yourself if you need a specific workload's cost.
Media Pricing (mediaPricing)
Media model rows use a separate mixed-unit pricing object. All fields are present as numbers; a value of 0 means that pricing dimension does not apply to the model.
perImageUsdnumberUSD per generated imageper1kCharsUsdnumberUSD per 1,000 charactersperMinuteUsdnumberUSD per minute of mediaper1MTokensUsdnumberUSD per 1M tokensinputPer1MUsdnumberUSD per 1M input tokensoutputPer1MUsdnumberUSD per 1M output tokensoutputPerMpUsdnumberUSD per output megapixel
Caching
The response is cached for 5 minutes (Cache-Control: public, max-age=300). The updated_at field indicates when the response was generated - at most ~5 minutes before you received it.
Reference-Pricing Providers
The live providers array is the sorted set of provider keys that appear in at least one providers[] pricing row. A row is published only when the catalog maps the model to a recognized provider and a positive reference price is available.
This is reference-pricing coverage, not seller onboarding or marketplace liquidity. A listed provider may have no active seller offer, and an onboarded seller/provider may be absent. Do not use this array to infer current availability, offer count, or provider health; treat the live response as the source of truth for the current reference-pricing set.
Interactive Price Table
See the live price comparison API for the current machine-readable matrix. Treat that response as the source of truth for current provider rows and counts.