Démarrage rapide
- Create an account in the console and copy the API key — it is shown once.
- Point any OpenAI-compatible client at
https://api.llmeu.com/v1. - Call
llmeu-autoand read thellmeublock in the response.
cURL
curl https://api.llmeu.com/v1/chat/completions \
-H "Authorization: Bearer $LLMEU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "llmeu-auto",
"messages": [{"role": "user", "content": "Say hello from EU hosting."}],
"llmeu": {"residency": "eu-hosted", "task": "general"}
}'
Python
from openai import OpenAI
client = OpenAI(base_url="https://api.llmeu.com/v1", api_key="llmeu_live_xxxxxxxx.your-secret")
resp = client.chat.completions.create(
model="llmeu-auto",
messages=[{"role": "user", "content": "Say hello from EU hosting."}],
)
print(resp.choices[0].message.content)
print(resp.llmeu.inference_region, resp.llmeu.trace_id)
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.llmeu.com/v1", apiKey: process.env.LLMEU_API_KEY });
const resp = await client.chat.completions.create({
model: "llmeu-auto",
messages: [{ role: "user", content: "Say hello from EU hosting." }],
});
console.log(resp.choices[0].message.content);
console.log(resp.llmeu.inference_region);
Référence API
| Endpoint | Method | Notes |
|---|---|---|
| /v1/chat/completions | POST | OpenAI-compatible, streaming and non-streaming |
| /v1/models | GET | Only models this key may actually call |
| /v1/models/{id} | GET | One model, including its hosting state |
| /v1/embeddings | POST | Requires an embedding model to be hosted |
| /v1/completions | POST | Not offered: returns 501 by design |
| /platform/v1/* | — | Keys, traces, usage, policies |
| /healthz | GET | Liveness |
| /readyz | GET | Readiness; fails if a first-party endpoint is down |
Preuves et vérification
Every response carries a llmeu block: trace_id, model_used,
inference_region, sovereignty_class, route_reason and the retention
that applied. Fetch the full row with GET /platform/v1/traces/{'{id}'}.
Ce déploiement peut exécuter de l'inférence simulée : une réponse peut provenir d'un modèle de substitution plutôt que du modèle nommé dans la requête. Quand le mode simulé est activé, la console et la trace le disent, et aucun frais de token n'est facturé.