Sign-up and API keys are open. Paid top-ups open soon.What changed
Docs menu

Concepts

Models and versions

The model alias, exact versions and what they freeze, the fallback versions, the version lifecycle and the models endpoint.

View as Markdown

You choose a model with the model field of a request. It takes an alias, which moves to newer versions over time, or an exact version, which never changes. Every response names the exact version that answered.

Alias and exact version

Form Example What it does
Alias dex-1 Resolves to the newest active exact version in major version 1. It moves when a new version ships, and the changelog records each move. This is the default when you leave model out.
Exact version dex-1.0.0 A frozen serving profile, named dex-MAJOR.MINOR.PATCH. The same request to it always gives the same answers.

The model field of every response is the exact version that answered, even when you sent the alias. A name that does not exist gives 404 model_not_found. A version that has been retired gives 404 model_retired.

What an exact version freezes

An exact version fixes everything that could change an answer:

  • the model weights, the tokenizer and the quantization recipe;
  • the prompt template and the codes used to read answers;
  • the inference software build with its pinned dependencies, and the hardware configuration;
  • the calibration version;
  • a golden hash: a fingerprint of the engine's raw outputs on a fixed suite of 500 requests.

A change to any of these ships as a new version. A new calibration alone is a new PATCH version. A new tokenizer is a new major version, so every version in major version 1 counts tokens the same way.

Versions

Version Released What changed
dex-1.0.0 25 September 2026 The first version, calibration cal-20260925-1.
dex-1.0.1 26 September 2026 The alias dex-1 points here. Your text can no longer act as prompt structure: a </state> inside the state, or markup such as <think> and <tool_call> anywhere in a request, is read as plain text. Same model and engine as dex-1.0.0; calibration cal-20260926-1.

Requests without such text get the same decisions on both versions in nearly every case; the probabilities differ slightly, because dex-1.0.1 reads one more line after the state and has its own calibration. See the changelog and the calibration reports.

Fallback versions

When the GPU path cannot answer an alias request, a hosted fallback may answer instead. It has versions of its own:

Version Upstream model
dex-fallback-1.0.0 Azure OpenAI gpt-4.1-mini (2025-04-14), Data Zone Standard, EU
dex-fallback-lite-1.0.0 Azure OpenAI gpt-4o-mini (2024-07-18), Data Zone Standard, EU

Each is calibrated separately and is not deterministic. You cannot request a fallback version directly; Dex chooses between them. Both upstream models retire on 14 April 2027, which GET /v1/models shows as their retires_at. See Fallback and served_by.

Lifecycle

A version's status is active, deprecated or retired.

  • When a new version becomes the alias target, the version it replaces stays available for at least 90 days.
  • GET /v1/models shows each version's retires_at.
  • Account owners get an email 30 days and 7 days before a version retires.
  • After that, a request that names it gets 404 model_retired.

Within v1, the API changes only by adding things: new optional request fields, new response fields and new error codes. Write your code to ignore response fields it does not know.

Which one to use

  • Use the alias to get improvements without changing code. Expect answers to change when the alias moves, and watch the changelog.
  • Pin an exact version when answers must not change, for example for snapshot tests, audits or regulated workflows. Plan the move to a new version within the 90-day window.

A pinned version is never served by the fallback, so when its GPU capacity is unavailable you get 503 instead of an answer. See Determinism.

List models

GET /v1/models lists the alias, the exact versions and the fallback versions. Any valid API key can call it.

curl https://api.thinqit.ai/v1/models \
  -H "authorization: Bearer $DEX_API_KEY"

Each entry looks like this alias entry from the contract example:

{
  "id": "dex-1",
  "object": "model",
  "kind": "alias",
  "target": "dex-1.0.0",
  "served_by": "gpu",
  "status": "active",
  "deterministic": true,
  "released_at": "2026-10-15T00:00:00Z",
  "retires_at": null,
  "calibration": "cal-20261015-1",
  "upstream": null,
  "limits": {
    "max_state_tokens": 16384,
    "max_question_tokens": 4096,
    "max_total_tokens": 16384,
    "max_questions": 32,
    "max_options": 255,
    "max_levels": 10,
    "exact_option_probabilities": 255
  },
  "quality": null
}
Field Meaning
kind alias or version.
target For an alias, the exact version it resolves to.
served_by gpu or fallback.
status active, deprecated or retired.
deterministic true when the same request always gives the same answers from this version.
released_at, retires_at When the version was released and when it retires (null when no date is set).
calibration The calibration version applied.
upstream For a fallback version, the hosted model and region that serve it.
limits The request limits for this version. See Limits.
quality Published agreement and ECE figures with a link to the calibration report, or null.

The full schema is in the API reference for listModels.