> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.milliseconds.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.milliseconds.ai/_mcp/server.

# Changelog

## October 28, 2026

Every plan, Free included, keeps 125 million test tokens each month. Test keys spend them.

The Free plan cannot buy credits. On Free, the console billing page shows **Upgrade to Starter** and links to the plan page. Upgrade to Starter to buy production tokens. See [Pricing](/reference/pricing).

## September 27, 2026

## rakeaudio: audio transcription

A second model joins `decision-machine-1` on the same API key. `POST /v1/rakeaudio/transcribe` takes an audio file as the raw request body. It returns the transcript with word timestamps and, by default, up to four speaker labels.

* 25 European languages, detected from the audio.
* Up to 60 minutes of audio per call, in one synchronous call.
* \$0.12 per audio hour with speakers, \$0.10 without (`diarize=false`), billed as input tokens.

See [rakeaudio](/rakeaudio/overview) and [Transcribe](/rakeaudio/transcribe).

## A docs layout for several models

The docs now describe milliseconds.ai as a platform. **Start here** and **Platform** cover every model. `decision-machine-1` and `rakeaudio` each have their own section. Existing page URLs do not change. The one exception is **How it works**, which moves to [/concepts/how-it-works](/concepts/how-it-works) with a redirect.

## September 21, 2026

`POST /v1/systemone` is live. It accepts TypeSafe's `systemone` request shape: one `state` and named questions of type `noul`, `choice` or `score`. Each question runs as `yes-no`, `classify` or `rate` on the same text. Answers carry the model's own probabilities in the TypeSafe answer shape. See [TypeSafe-compatible API](/typesafe/overview).

Each question counts as one inference request unit. The call bills its input tokens once. Validation errors use the standard `400` envelope. The route takes no `image`.

## September 20, 2026

Test keys allow 30 inference requests per minute and 500,000 input tokens per minute per organization. Production tiers are unchanged. See [Limits and rate limits](/reference/limits).

The monthly free allowance of 125 million input tokens is unchanged. Move to a production key when you need more throughput. See [Pricing](/reference/pricing).

Every capability now accepts an `image`: one JPEG, PNG or WebP as base64, at most 5 MB decoded. Send it instead of `text`, or with `text`. `detail` selects `low` (512 px), `medium` (768 px, the default) or `high` (1024 px).

Results keep the shape you already parse. An image carries no character offsets, so `start` and `end` are `null` on `answer` and `entities`. The base64 never enters the character count; each image bills a fixed number of tokens for its tier. See [Images](/concepts/images).

Image token prices are final. A decision (`yes-no`, `classify`, `classify-tree`, `rate`) bills 1,000 / 2,000 / 4,000 tokens by tier. `answer` bills 1,500 / 3,000 / 6,000. `extract`, `entities` and `verify` bill 2,000 / 4,000 / 8,000. The OpenAI-compatible endpoint bills every image at the `extract` rate.

`extract` with an `image` now accepts at most 5 fields in the schema. A larger schema returns `400` with the code `image_schema_too_large`. Text extract keeps its existing limits. See [Images](/concepts/images).

## September 19, 2026

The SDKs are out, at version 0.1.0. A TypeScript package, a Python package and the `dm1` command line tool now call `decision-machine-1` directly. Read [SDKs](/sdks/overview).

```bash
npm i @cloudraker/milliseconds     # TypeScript, and the dm1 CLI
pip install cloudraker-milliseconds  # Python
export MS_API_KEY=sk-ms-...
```

Your labels become your result types. [TypeScript](/sdks/typescript) infers the union of the label names you pass, so a typo is a compile error. A batch of texts returns a tuple of results. [Python](/sdks/python) solves the same type from one annotated constant, and ships a sync client and an async client.

Both packages unwrap the `results`, `entities` and `data` envelopes. They merge `text` and `texts` into one argument. They check your limits before they spend a token, and retry `429`, `502`, `529` and transport failures. Every other field keeps its wire name.

The [`dm1` CLI](/sdks/dm1) runs every capability from a shell. It prints a table on a terminal and JSON into a pipe, chunks `--lines` at the 32-text batch limit, and exits 3 when `--check` or `--min` fails.

## September 18, 2026

The developer console is live at [console.milliseconds.ai](https://console.milliseconds.ai/). Sign up, create an organization, create and revoke API keys, invite members, and watch usage. Read [Authentication](/authentication).

Every organization starts on the free plan: 125 million input tokens each month. After that, input costs \$0.04 per million tokens and output stays free. Buy credits or turn on auto top-up on the console's billing page. See [Pricing](/reference/pricing).

The token budget is 1,000,000 input tokens per minute per organization. See [Limits and rate limits](/reference/limits).

## September 17, 2026

Every `/v1` route now needs an API key. Send it as `Authorization: Bearer sk-ms-...`, and read [Authentication](/authentication). Each organization also gets a request and an input-token limit per minute, with `x-ratelimit-*` headers on every response. See [Limits and rate limits](/reference/limits).

`POST /v1/decision-machine-1/classify-tree` walks a nested label tree in one request. It runs `classify` once per level on the same text, then descends into the winning label. The response carries the path, the compound probability and confidence, and every level with its own scores, input size and inference time. See [Classify tree](/capabilities/classify-tree).

## September 16, 2026

`decision-machine-1` is live at `api.milliseconds.ai`: yes-no, classify, rate, answer, extract, entities, verify, and an OpenAI-compatible `/v1/chat/completions` for structured extraction and function calling.