Skip to content
sulimko.com

API

The same data as the site, as JSON. Reading needs no key, and every value comes with its source and its date — when it became true, or, where the source does not say, when it was last confirmed.

On this page

Try it

One model, with every field we have on it:

curl https://sulimko.com/api/v1/models/deepseek-chat-v3
Show the live response
{
  "vertical": "models",
  "entity": {
    "slug": "deepseek-chat-v3",
    "name": "DeepSeek Chat V3 (prev)",
    "fields": [
      {
        "fieldKey": "price_input_per_mtok",
        "valueNum": 0.2574,
        "unit": "usd_per_mtok",
        "sourceType": "vendor-claimed",
        "validAsOf": null,
        "eventTimeUnknown": true,
        "confirmedAt": "2026-11-03T02:00:19.989Z",
        "freshnessTier": "FRESH"
      },
      …
    ],
    "signals": [
      {
        "signalType": "aider_polyglot_pct",
        "valueNum": 48.4,
        "validAsOf": "2024-12-25T00:00:00.000Z",
        "freshnessTier": "STALE",
        "methodUrl": "https://aider.chat/docs/leaderboards/"
      },
      …
    ]
  }
}

Endpoints

Everything lives under https://sulimko.com/api/v1. Every list and card the site shows can be read here.

  • GET/api/v1/{vertical}

    Every model, plan, machine or tool of one kind, with its current values. Kinds: models, hardware, harnesses, subscriptions, tools, people.

    For example:/api/v1/models
  • GET/api/v1/{vertical}/{slug}

    One entry with every value, its source, date and freshness.

    For example:/api/v1/models/deepseek-chat-v3
  • GET/api/v1/{vertical}/{slug}/history

    How every value of one entry changed over time. Add ?changed=1 for real changes only.

  • GET/api/v1/{vertical}/{slug}/history/{field}

    How one value changed over time, for example a price.

  • The latest changes across the registry: prices, limits, releases. Up to 100 at a time with ?limit=.

  • The latest news digest as data. ?lang=en or ?lang=ru.

  • POST/api/v1/match

    Find a replacement for a model — the same answer as on the site.

    Request body, for example:
    {
      "vertical": "models",
      "referenceEntity": "claude-opus-4-7",
      "intents": ["cheaper"],
      "limit": 5
    }
  • POST/api/v1/hardware/capacity

    How many agents a computer can run — the same answer as the calculator.

    Request body, for example:
    {
      "box": "mac-studio-m3-ultra",
      "models": [{ "slug": "qwen3-coder-30b-a3b", "quant": "q4_k_m" }],
      "profile": { "preset": "coding_agent" }
    }
  • GET/api/v1/me/config

    Your own setup, with a personal token.

    With your token:
    curl -H "Authorization: Bearer <token>" \
      https://sulimko.com/api/v1/me/config

This list is generated from the API contract, which is checked against the real handlers on every build — so it cannot show an address that does not exist.

What every value carries

Each value comes with the fields below, so a script can tell a fresh measurement from an old claim.

sourceType
Where the value comes from: the vendor's claim, an independent measurement, our measurement, our calculation, or a lawsuit's allegation.
validAsOf
When the value became true in the world. Empty when the source does not say — then eventTimeUnknown is true.
confirmedAt
When we last saw the value confirmed by its source. Present even when the event date is unknown.
freshnessTier
Fresh, aging or stale, counted from that date.
What each label means

Good manners

  1. 1No key is needed to read. Please cache: every answer has ETag and Last-Modified, so a repeat request can be free.
  2. 2If the registry is down you get status 503, not stale data dressed as fresh.
  3. 3Your own setup is read with a personal token, sent in the header Authorization: Bearer <token>. Create one in My setup after signing in.
Open My setup