# Models

List the models Little Worker serves and read what each one can do and costs.

A model is the AI that does a worker's thinking. A worker names one in its `model`, or leaves it out and follows its Quality: Fast, Standard or Best. Each Quality picks one model, and a read of the worker answers the model its Quality picks now.

These routes list the models Little Worker serves, and read one. They need no worker and change nothing. The list is every model it can send a run to. On Little Worker's servers, that is the model of each Quality and the model that searches the web, best first. A Little Worker that runs on your own computer with its model router off lists one default model. So the list can differ from one Little Worker to another.

> [!NOTE]
> The shape is Claude's model list. Little Worker adds `provider`, `fast_mode`, `region_pin`, `mid_task_system_message` and `list_price`. A fact it does not hold reads `null`, the epoch, or `supported: false`.

## The model object

Both routes on this page answer a model, or a page of them. Times are RFC 3339 in UTC, to the millisecond.

- `type` (string): Always `model`.

- `id` (string): The model's id, such as `claude-sonnet-5-5`. It is the `model.id` of a worker, and what a task's `worker.model.id` answers.

- `display_name` (string): The model's name as a person reads it. For a model whose name Little Worker does not hold, it is the id.

- `created_at` (time): When the model was released. Little Worker does not hold release dates, so every model answers the epoch, `1970-01-01T00:00:00.000Z`.

- `lifecycle` (string): Where the model is in its life. Every model is `active` today. One of `active`, `deprecated`, `retired`.

- `deprecated_at` (time, or null): When the model was deprecated. `null` while it is `active`.

- `retires_at` (time, or null): When the model retires. `null` when no date is set.

- `line` (string, or null): The Claude line the model belongs to, read from its id. `null` for any other model. One of `haiku`, `sonnet`, `opus`, `fable`, `mythos`.

- `max_input_tokens` (number, or null): The most tokens the model reads at once. `null`: Little Worker does not hold this fact.

- `max_tokens` (number, or null): The most tokens the model writes in one answer. `null`: Little Worker does not hold this fact.

- `allowed_fallback_models` (array of strings, or null): The models that may stand in for this one. `null` today.

- `capabilities` (object): What the model can do, in the shape of Claude's model list. Every key below is always there, and each one holds `supported`. Little Worker holds the efforts of each model, so `effort` is true to the model; every other capability reads `supported: false`, which means Little Worker does not claim it.

  - `effort` (object): The efforts the model takes. A Claude model takes `low` to `max`, a Haiku model stops at `high`, and any other model takes `low` to `xhigh`. Those other models also take `none` and `minimal` as a worker's `model.effort`, which this object has no key for.

    - `low` (object): Whether the model takes the `low` effort.

      - `supported` (boolean): `true` when it does.

    - `medium` (object): Whether the model takes the `medium` effort.

      - `supported` (boolean): `true` when it does.

    - `high` (object): Whether the model takes the `high` effort.

      - `supported` (boolean): `true` when it does.

    - `xhigh` (object): Whether the model takes the `xhigh` effort.

      - `supported` (boolean): `true` when it does.

    - `max` (object): Whether the model takes the `max` effort.

      - `supported` (boolean): `true` when it does.

    - `supported` (boolean): `true` when the model takes any effort.

  - `batch` (object): `{ supported }`. Always `false` today.

  - `citations` (object): `{ supported }`. Always `false` today.

  - `code_execution` (object): `{ supported }`. Always `false` today.

  - `compaction` (object): `{ summarize, supported }`. Always `false` today.

  - `context_management` (object): `{ clear_thinking_20251015, clear_tool_uses_20250919, compact_20260112, supported }`. Always `false` today.

  - `image_input` (object): `{ supported }`. Always `false` today.

  - `pdf_input` (object): `{ supported }`. Always `false` today.

  - `server_tools` (object): `{ code_execution, web_search, supported }`. Always `false` today.

  - `structured_outputs` (object): `{ supported }`. Always `false` today.

  - `thinking` (object): `{ supported, types: { adaptive, disabled, enabled } }`. Always `false` today.

- `provider` (string): Who serves the model, read from its id. One of `anthropic`, `openai`, `openrouter`, `other`.

- `fast_mode` (object): Whether `speed: "fast"` is honored on this model. `false` for every model today, so a fast worker runs at standard speed.

  - `supported` (boolean): `true` when it is.

- `region_pin` (object): Whether `inference_geo` can pin the region that serves the model. `false` for every model today.

  - `supported` (boolean): `true` when it can.

- `mid_task_system_message` (object): Whether a `system.message` sent in the middle of a task reaches the model in its own system role. It does for the Claude models Anthropic lists for it and for OpenAI's models, and not for any other model, OpenRouter's included.

  - `supported` (boolean): `true` when it does.

- `list_price` (object, or null): What the model costs at list price. `null` for a model whose price Little Worker does not hold.

  - `per_tokens` (integer): The number of tokens each amount is for: always `1000000000`, a billion, so every price is whole cents.

  - `input` (money): The price of tokens the model reads.

    - `amount` (string): Whole US cents, as a string, for the `per_tokens` tokens: `"200000"` is $2,000.00 for a billion tokens, or $2.00 for a million.

    - `currency` (string): Always `USD`.

  - `output` (money): The price of tokens the model writes.

    - `amount` (string): Whole US cents, as a string, for the `per_tokens` tokens: `"200000"` is $2,000.00 for a billion tokens, or $2.00 for a million.

    - `currency` (string): Always `USD`.

  - `cache_read` (money): The price of tokens read from the cache.

    - `amount` (string): Whole US cents, as a string, for the `per_tokens` tokens: `"200000"` is $2,000.00 for a billion tokens, or $2.00 for a million.

    - `currency` (string): Always `USD`.

  - `cache_write` (money): The price of tokens written to the cache.

    - `amount` (string): Whole US cents, as a string, for the `per_tokens` tokens: `"200000"` is $2,000.00 for a billion tokens, or $2.00 for a million.

    - `currency` (string): Always `USD`.

```json
{
  "type": "model",
  "id": "claude-sonnet-5-5",
  "display_name": "Claude Sonnet 5.5",
  "created_at": "1970-01-01T00:00:00.000Z",
  "lifecycle": "active",
  "deprecated_at": null,
  "retires_at": null,
  "line": "sonnet",
  "max_input_tokens": null,
  "max_tokens": null,
  "allowed_fallback_models": null,
  "capabilities": {
    "batch": {
      "supported": false
    },
    "citations": {
      "supported": false
    },
    "code_execution": {
      "supported": false
    },
    "compaction": {
      "summarize": {
        "supported": false
      },
      "supported": false
    },
    "context_management": {
      "clear_thinking_20251015": {
        "supported": false
      },
      "clear_tool_uses_20250919": {
        "supported": false
      },
      "compact_20260112": {
        "supported": false
      },
      "supported": false
    },
    "image_input": {
      "supported": false
    },
    "pdf_input": {
      "supported": false
    },
    "server_tools": {
      "code_execution": {
        "supported": false
      },
      "web_search": {
        "supported": false
      },
      "supported": false
    },
    "structured_outputs": {
      "supported": false
    },
    "thinking": {
      "supported": false,
      "types": {
        "adaptive": {
          "supported": false
        },
        "disabled": {
          "supported": false
        },
        "enabled": {
          "supported": false
        }
      }
    },
    "effort": {
      "low": {
        "supported": true
      },
      "medium": {
        "supported": true
      },
      "high": {
        "supported": true
      },
      "xhigh": {
        "supported": true
      },
      "max": {
        "supported": true
      },
      "supported": true
    }
  },
  "provider": "anthropic",
  "fast_mode": {
    "supported": false
  },
  "region_pin": {
    "supported": false
  },
  "mid_task_system_message": {
    "supported": true
  },
  "list_price": {
    "per_tokens": 1000000000,
    "input": {
      "amount": "200000",
      "currency": "USD"
    },
    "output": {
      "amount": "1000000",
      "currency": "USD"
    },
    "cache_read": {
      "amount": "10000",
      "currency": "USD"
    },
    "cache_write": {
      "amount": "250000",
      "currency": "USD"
    }
  }
}
```

## List models

`GET /models`

List the models, best first. A model list pages by model id, as Claude's does: send the `last_id` of a page as `after_id` for the next one, or the `first_id` as `before_id` for the one before.

### Query parameters

- `limit` (integer): How many to answer, 1 to 1,000. The default is 20.
- `after_id` (string): A model id, 1 to 256 characters. The page starts just after this model. Send this or `before_id`, not both.
- `before_id` (string): A model id, 1 to 256 characters. The page ends just before this model. Send this or `after_id`, not both.
- `lifecycle[]` (string): Only models in this part of their life. Repeat it to name more than one, up to three. One of `active`, `deprecated`, `retired`.

### Returns

A page: `data` holds the models, `first_id` and `last_id` are the ids of its first and last model (`null` when it is empty), and `has_more` says whether more models follow in the direction you read.

### Example

```bash
curl "https://core.thelittleworker.com/api/v1/models?limit=2" \
  -H "x-api-key: $LITTLE_WORKER_API_KEY" \
  -H "Little-Worker-Version: 2026-10-19"
```

```json
{
  "data": [
    {
      "type": "model",
      "id": "claude-sonnet-5-5",
      "display_name": "Claude Sonnet 5.5",
      "created_at": "1970-01-01T00:00:00.000Z",
      "lifecycle": "active",
      "deprecated_at": null,
      "retires_at": null,
      "line": "sonnet",
      "max_input_tokens": null,
      "max_tokens": null,
      "allowed_fallback_models": null,
      "capabilities": {
        "batch": {
          "supported": false
        },
        "citations": {
          "supported": false
        },
        "code_execution": {
          "supported": false
        },
        "compaction": {
          "summarize": {
            "supported": false
          },
          "supported": false
        },
        "context_management": {
          "clear_thinking_20251015": {
            "supported": false
          },
          "clear_tool_uses_20250919": {
            "supported": false
          },
          "compact_20260112": {
            "supported": false
          },
          "supported": false
        },
        "image_input": {
          "supported": false
        },
        "pdf_input": {
          "supported": false
        },
        "server_tools": {
          "code_execution": {
            "supported": false
          },
          "web_search": {
            "supported": false
          },
          "supported": false
        },
        "structured_outputs": {
          "supported": false
        },
        "thinking": {
          "supported": false,
          "types": {
            "adaptive": {
              "supported": false
            },
            "disabled": {
              "supported": false
            },
            "enabled": {
              "supported": false
            }
          }
        },
        "effort": {
          "low": {
            "supported": true
          },
          "medium": {
            "supported": true
          },
          "high": {
            "supported": true
          },
          "xhigh": {
            "supported": true
          },
          "max": {
            "supported": true
          },
          "supported": true
        }
      },
      "provider": "anthropic",
      "fast_mode": {
        "supported": false
      },
      "region_pin": {
        "supported": false
      },
      "mid_task_system_message": {
        "supported": true
      },
      "list_price": {
        "per_tokens": 1000000000,
        "input": {
          "amount": "200000",
          "currency": "USD"
        },
        "output": {
          "amount": "1000000",
          "currency": "USD"
        },
        "cache_read": {
          "amount": "10000",
          "currency": "USD"
        },
        "cache_write": {
          "amount": "250000",
          "currency": "USD"
        }
      }
    },
    {
      "type": "model",
      "id": "claude-haiku-5-5",
      "display_name": "Claude Haiku 5.5",
      "created_at": "1970-01-01T00:00:00.000Z",
      "lifecycle": "active",
      "deprecated_at": null,
      "retires_at": null,
      "line": "haiku",
      "max_input_tokens": null,
      "max_tokens": null,
      "allowed_fallback_models": null,
      "capabilities": {
        "batch": {
          "supported": false
        },
        "citations": {
          "supported": false
        },
        "code_execution": {
          "supported": false
        },
        "compaction": {
          "summarize": {
            "supported": false
          },
          "supported": false
        },
        "context_management": {
          "clear_thinking_20251015": {
            "supported": false
          },
          "clear_tool_uses_20250919": {
            "supported": false
          },
          "compact_20260112": {
            "supported": false
          },
          "supported": false
        },
        "image_input": {
          "supported": false
        },
        "pdf_input": {
          "supported": false
        },
        "server_tools": {
          "code_execution": {
            "supported": false
          },
          "web_search": {
            "supported": false
          },
          "supported": false
        },
        "structured_outputs": {
          "supported": false
        },
        "thinking": {
          "supported": false,
          "types": {
            "adaptive": {
              "supported": false
            },
            "disabled": {
              "supported": false
            },
            "enabled": {
              "supported": false
            }
          }
        },
        "effort": {
          "low": {
            "supported": true
          },
          "medium": {
            "supported": true
          },
          "high": {
            "supported": true
          },
          "xhigh": {
            "supported": false
          },
          "max": {
            "supported": false
          },
          "supported": true
        }
      },
      "provider": "anthropic",
      "fast_mode": {
        "supported": false
      },
      "region_pin": {
        "supported": false
      },
      "mid_task_system_message": {
        "supported": true
      },
      "list_price": {
        "per_tokens": 1000000000,
        "input": {
          "amount": "10000",
          "currency": "USD"
        },
        "output": {
          "amount": "50000",
          "currency": "USD"
        },
        "cache_read": {
          "amount": "1000",
          "currency": "USD"
        },
        "cache_write": {
          "amount": "12500",
          "currency": "USD"
        }
      }
    }
  ],
  "first_id": "claude-sonnet-5-5",
  "has_more": true,
  "last_id": "claude-haiku-5-5"
}
```

### Errors

- 400 `invalid_request_error`: A query value is not valid, such as a `limit` outside 1 to 1,000, an `after_id` or `before_id` over 256 characters, or more than three `lifecycle[]` values, or both `after_id` and `before_id` are sent (`error_code` `validation_error`). An `after_id` or `before_id` that names no model in the list as filtered is `invalid_cursor`.
- 401 `authentication_error`: The key is missing, removed, or not a key. Send it in `x-api-key`.
- 429 `rate_limit_error`: The workspace made too many requests this minute. Wait the seconds in `Retry-After`, then try again.

## Read a model

`GET /models/{model_id}`

Read one model. The answer is the model's entry in the list.

### Path parameters

- `model_id` (string, required): The model's id, 1 to 256 characters, such as `claude-sonnet-5-5`.

### Returns

The model.

### Example

```bash
curl https://core.thelittleworker.com/api/v1/models/claude-sonnet-5-5 \
  -H "x-api-key: $LITTLE_WORKER_API_KEY" \
  -H "Little-Worker-Version: 2026-10-19"
```

```json
{
  "type": "model",
  "id": "claude-sonnet-5-5",
  "display_name": "Claude Sonnet 5.5",
  "created_at": "1970-01-01T00:00:00.000Z",
  "lifecycle": "active",
  "deprecated_at": null,
  "retires_at": null,
  "line": "sonnet",
  "max_input_tokens": null,
  "max_tokens": null,
  "allowed_fallback_models": null,
  "capabilities": {
    "batch": {
      "supported": false
    },
    "citations": {
      "supported": false
    },
    "code_execution": {
      "supported": false
    },
    "compaction": {
      "summarize": {
        "supported": false
      },
      "supported": false
    },
    "context_management": {
      "clear_thinking_20251015": {
        "supported": false
      },
      "clear_tool_uses_20250919": {
        "supported": false
      },
      "compact_20260112": {
        "supported": false
      },
      "supported": false
    },
    "image_input": {
      "supported": false
    },
    "pdf_input": {
      "supported": false
    },
    "server_tools": {
      "code_execution": {
        "supported": false
      },
      "web_search": {
        "supported": false
      },
      "supported": false
    },
    "structured_outputs": {
      "supported": false
    },
    "thinking": {
      "supported": false,
      "types": {
        "adaptive": {
          "supported": false
        },
        "disabled": {
          "supported": false
        },
        "enabled": {
          "supported": false
        }
      }
    },
    "effort": {
      "low": {
        "supported": true
      },
      "medium": {
        "supported": true
      },
      "high": {
        "supported": true
      },
      "xhigh": {
        "supported": true
      },
      "max": {
        "supported": true
      },
      "supported": true
    }
  },
  "provider": "anthropic",
  "fast_mode": {
    "supported": false
  },
  "region_pin": {
    "supported": false
  },
  "mid_task_system_message": {
    "supported": true
  },
  "list_price": {
    "per_tokens": 1000000000,
    "input": {
      "amount": "200000",
      "currency": "USD"
    },
    "output": {
      "amount": "1000000",
      "currency": "USD"
    },
    "cache_read": {
      "amount": "10000",
      "currency": "USD"
    },
    "cache_write": {
      "amount": "250000",
      "currency": "USD"
    }
  }
}
```

### Errors

- 400 `invalid_request_error`: `model_id` is longer than 256 characters (`error_code` `validation_error`).
- 401 `authentication_error`: The key is missing, removed, or not a key. Send it in `x-api-key`.
- 404 `not_found_error`: Little Worker does not serve a model with this id (`Model not found.`). List the models to see the ones it does.
- 429 `rate_limit_error`: The workspace made too many requests this minute. Wait the seconds in `Retry-After`, then try again.
