GET /v1/models
The catalog, as the OpenAI-shaped list every compatible client knows how to read.
bash
curl https://sator-api.princep.org/v1/modelsjson
{
"object": "list",
"data": [
{"id": "glm-5.2", "object": "model", "created": 1770000000, "owned_by": "princeps-sator"},
{"id": "deepseek-v4-flash", "object": "model", "created": 1770000000, "owned_by": "princeps-sator"}
]
}- No key needed. Every id here is already public, and a client at $0 balance or with a mistyped key still gets a working model list rather than an empty dropdown.
- Four fields per row, nothing else. No rates and no context windows: this endpoint is for discovery. Models is where a human compares, and the price page is where the rates are.
createdis constant. It is the date the catalog was pinned, the same on every row, so an unchanged catalog is byte-identical between calls and safe to cache.- No redirect, served from a constant. Tools that fill their model picker from
{baseURL}/models— Cline, Roo Code, Claude Code's gateway discovery with its three-second timeout — get a direct200. - The list is the catalog. An id here can be sent as
modelon either wire; an id not here is404 model_not_found.
Query parameters are ignored. GET /v1/models?limit=1000, which Claude Code sends, returns the full list.