Theme
Language

Models

The GetVibe API model list and how to address models in the model field. Route variants via the :network, :nexus, :sub5 suffixes — different route, price and caching behaviour.

The model field takes the exact model name. The full list with prices and cache support is on the catalog page.

  • IDs use vendor/model (OpenRouter-style), e.g. anthropic/claude-opus-5; claude-opus-5 is accepted as an input alias with identical billing.
  • model:alias pins a channel, e.g. openai/gpt-5.6-sol:yellow. GET /v1/models lists one ID per model; ?variants=1 returns the full list.

How a request is billed

Most channels are marketplace books: many sellers offer the same model at different prices. Your request fills at the cheapest offer that takes it, and you are billed what that fill cost plus our commission. The per-token rate is therefore a range, not a single number — it depends on which rung of the book filled.

GET /api/catalog and GET /v1/pricing publish that range per model (pricing) and per channel (channels[]), read from the same ladder GET /api/model-ladder?model=<model> serves with its offer counts.

GEThttps://getvibeapi.com/api/model-ladder?model=claude-opus-5.5
Pricing fields (USD per 1M tokens)
ParameterTypeDescription
basis"fill" | "fixed" | "mixed""fill": billed at the rung that fills, plus commission. "fixed": billed at the listed rate (from = typical = to). "mixed" (model level only): some channels of each kind.
priceFrom{input, output}The cheapest rung — the lowest rate a request can be billed.
priceTypical{input, output}The offer-weighted median rung: half the offers on the book stand at or below it. It describes where supply sits, not a forecast of your next fill. At model level it is the default channel’s.
priceTo{input, output}The dearest rung on the book — the most a request without max_price can be billed.
poolstring | nullChannel only. The book the channel buys from, as the ladder prints it. Each pool is published as exactly one channel.
maxPriceCeiling{input, output} | nullChannel only. When a request carries max_price, this channel will not fill above the lower of max_price and this ceiling. Without max_price no ceiling is sent.
minChargePerRequestnumberUSD per REQUEST, not per 1M. Present only on a channel whose supplier charges a per-request minimum (supplier rule): the least one successful request is billed, for example $0.0000143. A request whose tokens would cost less — a short one, or one that is mostly cache reads — is billed this amount. At model level (nullable) it is the default channel’s.
fill{"24h", "7d"} | nullChannel only (and on each served pool of /api/model-ladder). Where our paid requests on this channel actually filled: per rung, the share of requests and of tokens; avgPrice, the token-weighted average paid — the typical price you will actually pay; and the shares that filled below or above today’s ladder (books move) or were billed the per-request minimum. null for a window with fewer than 20 requests.
ladderstringModel only. The /api/model-ladder URL with the full rung list and offer counts.
inputUsd / outputUsdnumberKept for compatibility. On a fill channel they equal priceFrom — the floor, not a fixed price.
"pricing": {
  "basis": "fill",
  "unit": "USD per 1M tokens",
  "priceFrom":    { "input": 0.465, "output": 2.325 },
  "priceTypical": { "input": 0.5,   "output": 2.5 },
  "priceTo":      { "input": 1.5,   "output": 7.5 },
  "minChargePerRequest": 0.0000125,
  "ladder": "/api/model-ladder?model=claude-opus-5.5",
  "ladderUpdatedAt": "2026-09-25T08:45:01.522Z",
  "ladderStale": false
},
"channels": [
  { "address": "claude-opus-5.5:claude-code", "isDefault": true,
    "inputUsd": 0.465, "outputUsd": 2.325,
    "basis": "fill", "pool": "cc/claude-opus-5-5",
    "priceFrom": { "input": 0.465, "output": 2.325 },
    "priceTypical": { "input": 0.5, "output": 2.5 },
    "priceTo": { "input": 1.5, "output": 7.5 },
    "maxPriceCeiling": { "input": 0.6, "output": 3 },
    "minChargePerRequest": 0.0000125 }
]
A pool is one channel with one price ladder — for example claude-code: a request fills on whichever rung takes it, between priceFrom and priceTo. To cap what a request can cost, send max_price — without it any rung on the ladder may fill, with it the request never fills above your cap. To see the depth behind a price, read the ladder; to see where requests actually land, read its fill. Each request in /v1/generations carries cost_detail.realisedRate, the per-1M price it was billed at, so you can place it on the ladder. Every successful request costs at least the channel’s minChargePerRequest, so a very small or mostly cached request is billed that minimum rather than its per-token amount.

Variants of one model

Most models have several public variants. The default variant is chosen automatically (priority follows your account or key settings). To pin a specific variant for a request, add its alias after a colon to the model name:

"model": "gpt-6.1-sol"           // default variant (auto)
"model": "gpt-6.1-sol:yellow"    // explicit public variant
"model": "claude-opus-5.5"     // use an id from the catalog

Example request with an explicit variant:

curl https://getvibeapi.com/v1/chat/completions \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4.8:yellow",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
# :yellow — pin a public variant for this request

Variant aliases

Use only aliases from the catalog. Available suffixes:

ParameterTypeDescription
:yellowsuffixPublic variant; availability and price depend on the model.
:codex / :claude-codesuffixSubscription pools; the models each one serves are listed in the catalog.
:pixelsuffixPublic variant for media models.
Check the exact suffixes for each model in the “In API” column on the Models page — only actually available variants are shown there. If you pass an unavailable suffix, the request returns a 400.

List models via the API

You can fetch the full list of available model ids programmatically:

GEThttps://getvibeapi.com/v1/models
curl https://getvibeapi.com/v1/models \
  -H "Authorization: Bearer $GETVIBE_API_KEY"

Besides id/object/created/owned_by, every entry carries type (chat, embedding, rerank, image, video, audio, music, 3d), architecture.input_modalities / output_modalities and endpoints — where to send a request for that model.

  • The default list holds chat, embedding and rerank models only, so an IDE model picker never offers a model that cannot chat.
  • Media models (image, video, audio, music, 3D) are listed on request: ?type=image (or a list: ?type=image,video), ?output_modalities=image; ?modality= and ?category= are synonyms of type.
  • Everything at once: ?all=true, ?type=all or GET /v1/models/all. Media is listed together with its variants (model:alias) — exactly the id to send.
  • GET /v1/models/{id} returns one model; an unknown id is a 404 with code: "model_not_found".
curl "https://getvibeapi.com/v1/models?type=image,video" \
  -H "Authorization: Bearer $GETVIBE_API_KEY"

Subscribe to catalog updates (RSS and JSON Feed)

Every model added to the catalog and our what's-new posts are published in an open feed — no key needed. Read it from an RSS reader or from an agent, so it can change its approach as models change. The feed holds the whole history, page by page, and every event carries what an agent needs to call the model right away.

  • /rss.xml (alias /feed.xml) is RSS 2.0; /feed.json is JSON Feed 1.1 with a feed-level _meta block and a _catalog block per event.
  • Pages: 50 events each, ?limit= up to 100, newest first. The next (older) page is next_url in JSON Feed and <atom:link rel="next"> in RSS (RFC 5005, with rel="first" and rel="previous" too). The links carry a cursor, so a model published while you page through never shifts an event you already read. Use the links as returned.
  • Filters: ?kind=text|image|video|audio|music|3d|news and ?since=YYYY-MM-DD — only events from that UTC day on, inclusive. Filters work together with paging and are kept in the links.
  • A model_added event carries the title, the date the model appeared in the catalog, a link to the model page, a description and, in _catalog: the public ids to send as model (no :alias route spellings and no supplier names), the endpoints, input and output modalities, context window and max output, capabilities (tools, JSON / structured output, vision, reasoning and its levels, caching), the public starting price in USD with its unit, for media every request parameter with its allowed values, a ready request (curl and JSON) and a docs link. A news event is a what's-new post.
  • An event's guid never changes. The feed has no recorded generation results, only an example request.
  • Poll at most every few minutes: every page has its own ETag and Last-Modified; send If-None-Match / If-Modified-Since and an unchanged page answers 304 with no body. To fetch only what is new, remember the date of the last event you processed and request ?since= with it.
curl -sS "https://getvibeapi.com/feed.json?since=2026-10-01&limit=100"
curl -sS -i https://getvibeapi.com/feed.json -H 'If-None-Match: "<ETag from the previous response>"'   # -> 304
GetVibe API models — model list and route variants | GetVibe API