Endpoint
GET https://evaesi.dev/api/v1/modelsSelection
Omit model on /api/v1/responses and the server uses instant by default. Pass an explicit identifier from the table below to choose another model.
The catalogue
Each family ships several versions. They share a backend and differ in how hard the model works, how much context it carries, and what it costs. Rates below are read live from the published card.
| id | Name | Input / M | Output / M | Max in | Max out |
|---|---|---|---|---|---|
instant | EvaEsi Instant | £0.09 | £0.30 | 100000 | 32000 |
instant.fast | EvaEsi Instant Fast | £0.14 | £0.45 | 100000 | 16000 |
reasoning | EvaEsi Reasoning | £0.36 | £1.20 | 100000 | 64000 |
reasoning.deep | EvaEsi Reasoning Deep | £0.42 | £1.40 | 200000 | 96000 |
reasoning.verify | EvaEsi Reasoning Verify | £0.45 | £1.50 | 100000 | 32000 |
reasoning.fast | EvaEsi Reasoning Fast | £0.54 | £1.80 | 100000 | 32000 |
elements | Elements | £0.80 | £2.70 | 100000 | 64000 |
elements.fast | Elements Fast | £1.00 | £3.30 | 100000 | 32000 |
elements.codebase | Elements Codebase | £1.15 | £3.75 | 400000 | 64000 |
Every version shares a 4096-byte context window and supports streaming. Batch and tool-call surfaces are not yet exposed on any of them.
The catalog response also includes evaexplore-1 (preview: true, available: false, no context window). It is not callable. Filter on available before use.
Older model names
Older or human-readable identifiers normalise to the canonical IDs above. Either form is accepted in POST /api/v1/responses.
| Alias | Resolves to |
|---|---|
eva, eva-1, EvaEsi, evaesi-v1, evaesi-instant, evaesi_instant, esi-standard, eva-standard, conversation, creative | instant |
evaesi-reasoning, evaesi_reasoning, analytics, reason | reasoning |
Hyphenated version ids, e.g. elements-codebase, reasoning-deep | The dotted form, e.g. elements.codebase |
esielement, esielement-1, element, code, coding | elements |
The response
{
"models": [
{
"id": "instant",
"name": "EvaEsi Instant",
"description": "Fast general chat with live evidence.",
"capabilities": ["text", "conversation", "analysis"],
"max_input_rungs": 100000,
"max_output_rungs": 32000,
"available": true,
"supports_streaming": true,
"supports_batch": false,
"supports_tools": false,
"context_window": 4096,
"preview": false,
"deprecated": false,
"sunset_at": null
}
]
}preview is true while a model's API surface may still change without notice.
Example
cURL
curl https://evaesi.dev/api/v1/models \
-H "Authorization: Bearer esi_dev_YOUR_KEY"Python
import requests
response = requests.get(
"https://evaesi.dev/api/v1/models",
headers={"Authorization": "Bearer esi_dev_YOUR_KEY"},
)
for model in response.json()["models"]:
status = "available" if model["available"] else "not available"
print(f"{model['id']}: {model['name']} ({status})")JavaScript
const response = await fetch("https://evaesi.dev/api/v1/models", {
headers: { "Authorization": "Bearer esi_dev_YOUR_KEY" },
});
const { models } = await response.json();
models.forEach(model => {
console.log(`${model.id}: ${model.name}`);
});