# Changelog

> Changes to the website, the documentation, the API contract and the model versions, newest first.

## 26 September 2026, dex-1.0.1

- New exact version `dex-1.0.1`: text you send can no longer act as prompt structure. A `</state>` or `<state>` tag inside the state, and markup such as `<think>`, `<tool_call>` or `<|im_end|>` anywhere in a request, is read as plain text, and the prompt reminds the model that the state is data. Same model and engine as `dex-1.0.0`, new calibration `cal-20260926-1`. See [Models and versions](/docs/concepts/models/#versions) and [State](/docs/concepts/state/#the-state-is-data).
- The alias `dex-1` now points at `dex-1.0.1`. Requests without a `model`, or with `"model": "dex-1"`, are answered by it.
- `dex-1.0.0` stays available unchanged for at least 90 days: a request pinned to it gets exactly the same answers as before.
- Lower request limits, for every version: at most 16,384 billable tokens per request (was 32,768), and at most 4,096 for all questions of a request together. Larger requests could not be answered on the GPU in time. Both give 413 `request_too_long`. See [Limits](/docs/reference/limits/).
- Stricter request validation, for every version. Requests that can only confuse the model are now refused before anything is charged. A state, `instructions`, `criteria` (string or list item) or option description made only of whitespace, and an empty object state `{}` (as `[]` already was), give 422 `invalid_value`. A `rate` level with whitespace at either end or a line break gives 422 `invalid_value`, with the level in `param`. Two levels that differ only in case or Unicode normalization give 422 `invalid_levels`, and two option labels that do, such as `Billing` and `billing`, give 422 `duplicate_label`; a label repeated exactly stays 400 `duplicate_key`. A `\u` escape that is half of a surrogate pair, such as `"\ud800"` alone, gives 400 `invalid_json`. Requests that were accepted before and still are get the same answers. See [Errors](/docs/reference/errors/#codes-in-detail).

## 26 September 2026

- The SDKs, the CLI and the VS Code extension are at 0.1.1 in [Downloads](/docs/reference/sdks/#downloads). The base URL must use `https://`, so your key is never sent in clear text; `http://` works only for `localhost`, `127.0.0.1` and `[::1]`, for the mock server. The 0.1.0 files were rebuilt once from newer code under the same name; from now on every change gets a new version.
- The website runs no inline script except the theme switch, which its content security policy allows by hash, and `strict-transport-security` covers the subdomains of thinqit.ai.
- Sign-up and API keys are open: sign in to the [console](/console/) with your email address and create a free test key. Paid top-ups open soon.
- Interim downloads of the Python and TypeScript SDKs, the CLI and the VS Code extension, until they are on PyPI, npm and the Marketplace. See [Downloads](/docs/reference/sdks/#downloads).
- The mock server of the API contract answers the [Quickstart](/docs/quickstart/#try-it-today-with-a-mock-server) ticket by default, so the SDK quickstarts run against it.
- TypeScript SDK: `parseRequest(text)` reads a stored request without changing the order of labels such as "5", "4", "3".
- Console sign-in: a wrong code answers `invalid_code`, and after 5 wrong tries `code_attempts_exceeded`. When an address has had 5 codes in an hour, `retry-after` gives the real wait, up to an hour. See [Errors](/docs/reference/errors/#codes-in-detail).
- `test_daily_quota` gives the time until 00:00 UTC in `retry-after`, and the SDKs no longer retry it. A request that fails with 500 or 503 gives back its test quota and tokens per minute. See [Rate limits](/docs/reference/rate-limits/#when-you-hit-a-limit).
- A known path called with a method it does not have answers 405 `method_not_allowed`, with an `allow` header.
- The CLI and the VS Code extension link to the console at https://thinqit.ai/console/.

## 25 September 2026, night

- New pages: the [status page](/status/), which checks the API, the GPU path and the fallback from your browser every 30 seconds, and the console at [/console/](/console/): sign in with an email code, create and revoke API keys, see usage per day and per key, run requests in a test-mode playground, and top up (payments open with the API).
- The website is simpler: Home, [Use cases](/use-cases/), [Pricing](/pricing/) and the docs. The race moved to the [home page](/#race), the comparison and the cost chart to the [pricing page](/pricing/#jev), and this changelog into the docs.
- Measured quality of `dex-1.0.0` (calibration `cal-20260925-1`) is published on the [calibration page](/docs/calibration/): agreement overall and per language, and agreement, calibration error and a reliability curve per question type.
- `rate` questions are labelled beta: their agreement and calibration error miss our bars. See [Quality bars](/docs/concepts/calibration/#quality-bars).
- [Calibration](/docs/concepts/calibration/) now describes the evaluation set this version was measured on, and its known limits.

## 25 September 2026, evening

- Launch price set: EUR 0.05 per million input tokens, flat at every volume. Output stays free. See [Pricing](/pricing/).
- New page: [Use cases](/use-cases/), in English and [Dutch](/nl/use-cases/). When to use Dex instead of an LLM, ten business cases, and the cases it does not suit.
- Imprint added to the footer and the [legal pages](/legal/#imprint): Thinqit B.V., Vanadiumweg 25, 3812PX Amersfoort, the Netherlands.
- The SDKs, the CLI and the VS Code extension will be published under the Apache-2.0 licence.

## 25 September 2026, contract round 1

- New route [`GET /v1/key`](/docs/api/getCurrentKey/): which key and account you are using, with any key and no scope. See [Authentication and API keys](/docs/reference/authentication/), which also documents the key format and its checksum.
- New error codes: 400 `duplicate_key` for a repeated JSON key, and 422 `invalid_value` for a value of the right type that is not allowed. [Errors](/docs/reference/errors/#codes-in-detail) now says when every 400 and 422 code applies.
- `x-client-request-id` is accepted and echoed on every public route.
- Test keys get 40,000 tokens per minute, so the largest request always fits. Every public route counts one request against requests per minute. See [Rate limits](/docs/reference/rate-limits/).
- An idempotent replay returns the original response, with its original `id`, `created` and `usage`, and charges nothing. A 429 or 402 keeps no idempotency record. See [Idempotency](/docs/reference/idempotency/).
- [Determinism](/docs/concepts/determinism/) is stated for identical request bytes on the same GPU version. v1 does not promise question isolation; it is on the roadmap.
- The request JSON schema for editors is published at `https://thinqit.ai/schemas/dex-request.schema.json`.
- Moderation traffic should send `"fallback": "never"`. See [Fallback and served_by](/docs/concepts/fallback/#moderation-traffic).

## 25 September 2026

- Published the website and the documentation.
- Published the draft of the v1 API contract. You can download it as `https://thinqit.ai/openapi.yaml` and read it in the [API reference](/docs/api/decide/).
- The API is not open yet. API keys, the console at https://thinqit.ai/console/ and the SDK packages arrive at launch. Until then you can run a mock of the API from the contract: see the [Quickstart](/docs/quickstart/#try-it-today-with-a-mock-server).
