Endpoint#
GET https://evaesi.dev/api/v1/modelsSelection#
There is one model, EvaEsi 1.0. /api/v1/responses takes a level instead of a model: omit it and the server uses focus; pass look, duet, high or hyper to change how much work goes into the answer. See EvaEsi 1.0 for the levels and their prices.
Catalogue#
| id | Name | Levels | Max input rungs | Max output rungs | Streaming |
|---|---|---|---|---|---|
evaesi-1.0 | EvaEsi 1.0 | look, focus, duet, high, hyper | 100,000 | 32,000 at Look and Focus, 64,000 from Duet up | Yes |
The model has a 4096-byte context window and supports streaming at every level.
Legacy identifiers#
The model field of earlier releases, and the identifiers instant, reasoning and elements, are retired. Send level. The response names evaesi-1.0 and the level that ran.
Response format#
{
"models": [
{
"id": "evaesi-1.0",
"name": "EvaEsi 1.0",
"description": "One model, five levels.",
"levels": ["look", "focus", "duet", "high", "hyper"],
"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,
"deprecated": false,
"sunset_at": null
}
]
}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}`);
});