Docs/Models
API reference

Models

GET /v1/agents/models

Lists the models a session can run on, with an allowed flag for the caller's plan. Ids from this list go in model on POST /message.

Request

List models
curl -s "$SAI_API_URL/v1/agents/models" \
  -H "Authorization: Bearer $SAI_API_KEY"

Response

200 OK · ModelsJSON
{
  "models": [
    {
      "id": "auto",
      "name": "Sai Agent",
      "provider": "anthropic",
      "tier": "balanced",
      "costTier": "$",
      "allowed": true
    },
    {
      "id": "anthropic/claude-sonnet-5",
      "name": "Claude 5 Sonnet",
      "provider": "anthropic",
      "tier": "balanced",
      "costTier": "$$",
      "allowed": true
    },
    {
      "id": "anthropic/claude-opus-5-5",
      "name": "Claude 5.5 Opus",
      "provider": "anthropic",
      "tier": "reasoning",
      "costTier": "$$$",
      "allowed": true
    },
    {
      "id": "google/gemini-3.8-flash",
      "name": "Gemini 3.8 Flash",
      "provider": "google",
      "tier": "fast",
      "costTier": "$",
      "allowed": true
    }
  ],
  "default": "auto"
}

The list is longer than shown; the ids above are real.

FieldNotes
idPass as model. auto lets Sai pick.
nameDisplay name.
provideranthropic, google, openai, minimax, openrouter or xai.
tierreasoning, balanced or fast.
costTierfree, $, $$ or $$$. Relative credit cost per task.
allowedWhether this plan may use it. auto is always allowed.
defaultThe id used when a session has no model set: auto.

Free plan

The free plan runs on the Sai agent model only: omit model or pass auto. Upgrade to a paid plan to choose a model.

/models lists every other model with allowed: false, and sending one returns 403 from POST /message:

403 Forbidden · model_not_allowed_for_planJSON
{
  "error": "model_not_allowed_for_plan",
  "message": "The model \"anthropic/claude-opus-5-5\" is not available on the free plan. The free plan only supports the Sai agent model (\"auto\"); upgrade to a paid plan to choose a model.",
  "allowedModels": ["auto"]
}

Gotchas

  • The model is per session and sticks until you pass a different one. You do not need to send model on every message.
  • costTier is relative. Credit charged for a task is shown in the portal.
  • Call this once when you need a specific model, not before every task.
© 2026 Simular Inc. All rights reserved.