# Models

[Docs](https://www.rightnowai.co/docs) / [System Zero](https://www.rightnowai.co/docs/system-zero) / [Models](https://www.rightnowai.co/docs/system-zero/models)

Updated 2026-10-15

Read the model list to choose the alias or an attested pinned version.

**cURL (decide.sh)**

```shell
# Set SYSTEM_ZERO_API_KEY in your environment first.
if [ -z "$SYSTEM_ZERO_API_KEY" ]; then
  printf '%s\n' 'Set SYSTEM_ZERO_API_KEY before running this example.' >&2
  exit 1
fi

# Read the models available to your key.
if ! response=$(curl --silent --show-error --fail-with-body \
  'https://api.rightnowai.co/v1/models' \
  --header "Authorization: Bearer $SYSTEM_ZERO_API_KEY"); then
  printf '%s\n' "$response" >&2
  exit 1
fi

# Print the response without changing its fields.
printf '%s\n' "$response"
```

**PowerShell (decide.ps1)**

```powershell
$ErrorActionPreference = 'Stop'
if (-not $env:SYSTEM_ZERO_API_KEY) {
  throw 'Set SYSTEM_ZERO_API_KEY before running this example.'
}

$headers = @{
  Authorization = "Bearer $env:SYSTEM_ZERO_API_KEY"
}

try {
  $response = Invoke-RestMethod -Method Get `
    -Uri 'https://api.rightnowai.co/v1/models' `
    -Headers $headers
  $response | ConvertTo-Json -Depth 20
} catch {
  Write-Error $_
  exit 1
}
```

**Python (decide.py)**

```python
import json
import os
import urllib.error
import urllib.request

key = os.environ["SYSTEM_ZERO_API_KEY"]
request = urllib.request.Request(
    "https://api.rightnowai.co/v1/models",
    headers={"Authorization": f"Bearer {key}"},
)

try:
    with urllib.request.urlopen(request) as response:
        print(json.dumps(json.load(response), indent=2))
except urllib.error.HTTPError as error:
    print(error.read().decode("utf-8"))
    raise SystemExit(1) from None
```

**TypeScript (decide.ts)**

```typescript
const key = process.env.SYSTEM_ZERO_API_KEY;
if (!key) {
  throw new Error("Set SYSTEM_ZERO_API_KEY before running this example.");
}

const response = await fetch("https://api.rightnowai.co/v1/models", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${key}`,
  },
});

const body = await response.json();
if (!response.ok) {
  throw new Error(JSON.stringify(body));
}
console.log(body);
```

## Choose a model

`GET /v1/models` requires a System Zero API key. The response places the alias first, followed by attested versions.

- **`system-zero`**: The alias for the attested model version.
- **`system-zero-1.0.0`**: The pinned version named by the reviewed production release.

Use an ID from the list as the `model` in a decide request. See [Versions](https://www.rightnowai.co/docs/system-zero/versions) for choosing between an alias and a pin.

## Model fields

The response has `object: "list"` and a `data` array. Each model entry contains these fields.

- **`id`**: The alias or pinned model ID.
- **`object`**: `model`
- **`alias_for`**: The model version named by the alias.
- **`released_at`**: The stated release date, or null.
- **`calibration_versions`**: The stated calibration set, or null.
- **`limits`**: Limits reported by the gateway.
- **`held_routes`**: Features that the deployment does not serve.

A null release date or calibration set means that metadata has not been stated. Do not infer it from the model ID or an example answer.

## Limits and availability

Read `limits` for the model's reported boundaries and `held_routes` for unavailable features. A media-shaped field in a limits object does not make media available.

The launch serves standard text decisions. Image, audio, document and video input, long context, long recordings, committee routing and deliberate mode remain held.

## Discovery failures

An unsupported model returns `404 model_not_found`. Choose the alias or a pinned version returned by the model list.

Model discovery returns `503 service_unavailable` when no serving version is attested. Follow the response's retry advice.

## Next

[Inputs](https://www.rightnowai.co/docs/system-zero/attachments)
