# Models
URL: /docs/models

Browse models available through the NT inference API — base models and their fine-tunes.



The NT inference API serves the MolmoAct-2 family. The base entry defines the wire contract for a robot class. Fine-tunes specialize behavior for a specific task; each inherits or declares its own contract.

<Cards>
  <Card title="Pick a model" description="Browse base models and their fine-tunes. Start with the family that matches your hardware." href="/docs/models/molmoact2" />

  <Card title="Read a contract" description="Understand the state shape, cameras, and action shape the API enforces for each model." href="/docs/reference/models" />

  <Card title="Quickstart" description="Connect to the API and run inference in under 20 lines." href="/docs/getting-started" />
</Cards>

## Contract quick reference [#contract-quick-reference]

Every model exposes a contract — the wire shapes the API enforces on observation and action frames. The server validates your first `obs` frame against the contract and closes with `4422` on mismatch.

| Field          | What it means                                                                                                                                         |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `state_shape`  | Dimensions of the joint-state vector your `read_state()` callback must return                                                                         |
| `state_dtype`  | Expected dtype — `float32` for all current models                                                                                                     |
| `cameras`      | Nested object — `required` camera keys must be present in your `images` dict (missing one closes `4422`); `expected` camera keys zero-fill if missing |
| `image_shape`  | Expected shape of each camera array, channels-first (`[C, H, W]`)                                                                                     |
| `action_shape` | Shape of the action chunk the server returns — `[horizon, action_dim]`                                                                                |
| `tags`         | Docker-style identifiers for the model — the string you pass to `Robot(model=...)`                                                                    |

The full contract for any model is available from the always-on registry — no GPU warmup needed:

```bash
curl -H "Authorization: Bearer $NT_API_KEY" \
  https://nt-registry-production.up.railway.app/v1/models/ft_6341c5_d13da9
```

Fine-tune entries return the resolved contract inherited from their base. See [Reference → Models](/docs/reference/models) for per-model contract documentation.

## Model families [#model-families]

| Family                               | Base UID            | Description                                          | Fine-tunes                             |
| ------------------------------------ | ------------------- | ---------------------------------------------------- | -------------------------------------- |
| [MolmoAct-2](/docs/models/molmoact2) | `ft_base_molmoact2` | Bimanual, not directly deployable — pick a fine-tune | [SO-101](/docs/models/molmoact2/so101) |
