Models
Models
Two endpoints, both open without a key. A client discovers models before it has
credentials, which is the normal flow.
List models
GET /api/v1/models
curl https://hisoka.ai/api/v1/models
{
"object": "list",
"data": [
{
"id": "glm-5.3-flash",
"object": "model",
"owned_by": "Hisoka",
"label": "GLM 5.3 Flash",
"is_free": true,
"pricing": {
"input_per_mtok": 0.0,
"output_per_mtok": 0.0,
"currency": "USD"
},
"capabilities": {
"modalities": ["text", "image", "video"],
"tools": true,
"reasoning": true,
"prompt_cache": true
},
"context_window": 1048576,
"max_input_tokens": 1048576,
"max_output": 1040384
}
]
}
Reading a row
id is the only string you send. It has no vendor prefix and no capital letters.
api_model is the upstream id and is informational: sending it usually works, but id is
the supported spelling.
pricing is USD per million tokens. On a free model both rates are exactly 0.0
rather than the list price, so a client computing its own cost shows nothing instead of a
charge that never happens.
is_free means the call settles at zero. It does not mean the account needs no
balance: see Billing.
capabilities.modalities is what you may send. Sending an image to a model that lists
only text is refused with 400 modality_not_supported before the request reaches a
provider, so you get a clear error instead of a provider failure.
capabilities.tools decides whether a tool schema may be sent at all. An agent
choosing a model should check this first.
context_window and max_input_tokens are the same number, deliberately. Input
and output share one window, so a completion cap is a ceiling and not a reservation.
A client that sizes its context budget from max_input_tokens gets the usable figure.
max_output is the completion ceiling for that model.
Retrieve one model
GET /api/v1/models/{model}
curl https://hisoka.ai/api/v1/models/glm-5.3-flash
Same row as the list entry. OpenAI SDKs call this from models.retrieve(id); without the
route the SDK raises NotFoundError on an endpoint that only exists in its own client.
An unknown id answers 404 model_not_found inside the standard error envelope.
When every connection behind a model is dead, the row disappears from the catalogue rather
than staying listed and failing at request time. A buyer who paid for a model that cannot
answer is a refund, so absence is the safer state.
Capability details
Per-model modalities, context and reasoning support are listed on
Model capabilities.