List models
GET/models
Lists the catalogue as JSON, with no key needed: chat, embedding and image models, each entry's kind saying which. The catalogue answers even with a mistyped key, so a 200 here does not prove your key works — a chat call does (where each model runs).
SoonOpening soon: what follows describes the service as it will work.
https://evanesca.app/api/v1/modelsOpens at launchnone — no key neededkindstringOne family only. Without it, the list holds all three.
Fields of an entry
application/jsonidstringThe model ID: the value of model in your calls.
objectstringmodel, as in OpenAI's format.
kindstringThe model's family.
createdintegerUnix time, as in OpenAI's format.
owned_bystringThe model's maker.
operatorstringWho runs the model — the value of the x-evanesca-operator header.
locationstringWhere it runs — the value of the x-evanesca-location header.
context_lengthintegerThe context window as the operator announces it; absent while it has not been checked.
tool_callingbooleantrue or false where tool calling was measured with a real call; absent where it was not.
reasoningbooleanWhether the model thinks before it answers.
pricingobjectcurrency, vat_included, input_per_million and output_per_million: euros per million tokens, VAT included.
licence, open_weightsstring | null · booleanThe licence as published — null while none is — and whether the weights are public.
checksobjectThe six checks as booleans — licence, provenance, security, gdpr, benchmarks, live_test — and, in run_on, the date of each passed check where it is known. false means missing: not run yet, or run without meeting the pass mark.
retentionobjectWhat the operator says it keeps (rule), and the page where it says so (source). Evanesca itself stores no prompt.
trainingobjectWhat the operator says about training on your data (statement), and its source (source).
Where it runs, what it costs
Evanesca · on the record
- Answered by
- Evanesca's catalogue: no model runs, no operator is called.
- Places listed
- paris (Paris, France), gravelines (Gravelines, France), mistral-eu-region (EU region of Mistral AI), germany (Germany) and switzerland (Switzerland)
- Costs
- Nothing: no key, no credit.
curl https://evanesca.app/api/v1/models?kind=chat# The SDK sends its key; the catalogue does not need one.
for model in client.models.list():
print(model.id, model.kind, model.operator, model.location)for await (const model of client.models.list()) {
console.log(model.id, model.kind, model.operator, model.location);
}package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://evanesca.app/api/v1/models?kind=chat", nil)
if err != nil {
panic(err)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}{
"object": "list",
"data": [
{
"id": "gemma-4-26b",
"object": "model",
"kind": "chat",
"created": 1792454400,
"owned_by": "Google",
"operator": "aki",
"location": "germany",
"context_length": 256000,
"tool_calling": true,
"reasoning": false,
"pricing": {
"currency": "EUR",
"vat_included": true,
"input_per_million": 0.168,
"output_per_million": 0.84
},
"licence": "Apache-2.0",
"open_weights": true,
"checks": {
"licence": true,
"provenance": true,
"security": true,
"gdpr": true,
"benchmarks": true,
"live_test": true,
"run_on": {
"security": "2026-10-13",
"benchmarks": "2026-10-13",
"live_test": "2026-10-13"
}
},
"retention": {
"rule": "Inference content “is processed only in volatile memory […] and is not logged, stored, or analyzed by AKI.IO”; usage data (request ID, model endpoint, status, timestamps, token usage) “is retained for 90 days”.",
"source": "https://aki.io/privacy-policy"
},
"training": {
"statement": "“Inference requests are not forwarded to model developers, and customer prompts and outputs are not used to train AI models.”",
"source": "https://aki.io/"
},
"status": "live"
},
…
]
}