> 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.

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.