ModelInfo
English

Docs

What ModelInfo is, what the API returns, and how to call it.

About

1268 models

ModelInfo collects AI models published by their vendors, normalizes context, modalities, reasoning levels and pricing, and serves them through a read-only, OpenAI-compatible endpoint for model pickers, gateways and cost estimators.

Every value comes from official documentation and is checked by hand; anything not published is null, never guessed. The site is static files only: no accounts, quotas or auth.

Endpoint

GEThttps://modelinfo.dev/v1/models
curl
curl -sS https://modelinfo.dev/v1/models \
  -H "Accept: application/json"
  • No auth required; CORS enabled (Access-Control-Allow-Origin: *).
  • Cached for 5 minutes; supports ETag / If-None-Match with 304.
  • Returns every model at once, no pagination; query parameters are ignored, filter on the client.
  • /v1/models.json returns the same content.
OpenAI compatibleJSON

Try it

Send a real request from this page and inspect the response.

GEThttps://modelinfo.dev/v1/models
Status —Time —Size —Models —
Press “Send request” to see the response

Response

id · object · created · owned_byOpenAI standard fields, unchanged

nameDisplay name

apiAPI types

limitsContext and input / output limits

modalitiesInput / output modalities

reasoningReasoning support and levels

pricingPricing: currency, unit, input / output / cache prices

featuresConfirmed features

infoStatus, release date, cutoff, description, docs, verification date

GET /v1/models
{
  "object": "list",
  "data": [
    {
      "id": "claude-opus-5",
      "object": "model",
      "created": 1784851200,
      "owned_by": "anthropic",
      "name": "Claude Opus 5",
      "api": {
        "types": [
          "messages",
          "batch"
        ]
      },
      "limits": {
        "context": 1000000,
        "input": 1000000,
        "output": 128000
      },
      "modalities": {
        "input": [
          "text",
          "image",
          "document"
        ],
        "output": [
          "text"
        ]
      },
      "reasoning": {
        "supported": true,
        "efforts": [
          "low",
          "medium",
          "high",
          "xhigh",
          "max"
        ]
      },
      "pricing": {
        "currency": "USD",
        "unit": "1M_tokens",
        "input": 5,
        "output": 25,
        "cache_read": 0.5,
        "cache_write": 6.25
      },
      "features": [
        "tools",
        "structured_output",
        "streaming",
        "caching",
        "batch"
      ],
      "info": {
        "status": "active",
        "release_date": "2026-07-24",
        "knowledge_cutoff": "2026-05",
        "description": "Anthropic model for deep reasoning and long-horizon agentic work.",
        "docs": "https://platform.claude.com/docs/en/models/opus-5/overview",
        "verified_at": "2026-10-10"
      }
    }
  ]
}

Fields

createdinteger | nullRelease time, Unix seconds

owned_bystringModel vendor, not a reseller or gateway

api.typesstring[]chat · messages · responses · generate · batch · embeddings, etc.

limits.contextinteger | nullCombined input + output limit (tokens)

limits.inputinteger | nullMax input, when stated separately

limits.outputinteger | nullMax output

modalities.*string[]text · image · audio · video · document

reasoning.effortsstring[]Reasoning levels; empty means no levels or not stated

pricing.currencystringISO 4217 code, e.g. USD, CNY

pricing.unitstring1M_tokens · 1M_characters · image · second · minute · hour · request · page

pricing.input / outputnumber | nullPrice per unit; for token models output includes reasoning

pricing.cache_*number | nullCache read / write price

featuresstring[]tools · structured_output · streaming · caching · batch

info.verified_atstring | nullLast manual verification date

Unknown values are always null or empty arrays. Treat every group as optional and tolerate new fields.

Examples

curl · jq
curl -sS https://modelinfo.dev/v1/models | jq -r '.data[] | [.id, .owned_by] | @tsv'
Python · OpenAI SDK
from openai import OpenAI

# The OpenAI SDK requests {base_url}/models
client = OpenAI(base_url="https://modelinfo.dev/v1", api_key="unused")

for model in client.models.list():
    print(model.id, model.owned_by)
JavaScript
const res = await fetch("https://modelinfo.dev/v1/models");
const { data } = await res.json();

const cheapest = data
  .filter((m) => m.pricing?.input != null)
  .sort((a, b) => a.pricing.input - b.pricing.input)[0];
console.log(cheapest.id, cheapest.pricing);

Data

  • Prices are the vendor's own first-party list prices; other regions and resellers may differ. Your provider's bill is authoritative.
  • Each model page lists its official sources and verification dates.
  • Data lives in data/models in the GitHub repository; corrections are welcome: github.com/Owlbay/modelinfo