Models

Models

Model ids use the form family/model, for example cbcn/glm-5.3 or cb/claude-opus-5. The prefix identifies which upstream family serves the model. Call GET /v1/models for the live catalogue, or browse Dashboard → Models & pricing with prices attached.

bash
curl https://atmorouter.dev/v1/models \
  -H "Authorization: Bearer ar-xxxxxxxxxxxx"
json
{
  "object": "list",
  "data": [
    {
      "id": "cbcn/glm-5.3",
      "object": "model",
      "owned_by": "atmorouter",
      "family": "CodeBuddy CN",
      "pricing": { "input": 0.42, "output": 2.1, "cached_input": 0.042 },
      "context_length": 200000,
      "max_output_tokens": 8192,
      "modality": "text",
      "supports_cache": true
    }
  ]
}

Pricing fields

pricing.input and pricing.output are USD per million tokens and are billed separately. Output is normally several times more expensive than input, so a chatty completion costs more than a long prompt. pricing.cached_input is the cache-hit input rate (10% of input on cache-capable models).

Prompt caching

Models with supports_cache: true can reuse a repeated prompt prefix on second-and-later turns of the same conversation. Cached input tokens are reported in the usage block and bill at 10% of the input rate, so you can see the effect. Caching is a property of the upstream model, not something you enable per request.

Catalogue changes

The catalogue and its prices are refreshed continuously from live upstream capacity, so models can appear, disappear, or change price. Read /v1/models at startup rather than hardcoding a list, and handle HTTP 404 for a model that is no longer available.

Image and video models are visible in the catalogue but not yet callable, as they bill per unit rather than per token. Only models with a pricing block can be used today.