API-Referenz

One base URL, one bearer token, two surfaces.

Chat completions

Standard fields are accepted: model, messages, temperature, top_p, max_tokens, stream, stop, presence_penalty, frequency_penalty, user, tools, tool_choice, response_format, seed.

LLM EU extensions

A namespaced llmeu object in the request body. Official SDKs ignore unknown fields, so adding it never breaks a client.

"llmeu": {
  "residency": "eu-hosted" | "eu-owned" | "de" | "any",
  "task": "general" | "coding" | "reasoning" | "translation" | "vision" | "cheap" | "legal-draft" | "rag",
  "retention": "zero",
  "data_class": "public" | "internal" | "confidential" | "restricted",
  "policy_id": "uuid",
  "max_usd_per_1m": 0.5,
  "allow_partners": false
}

Nur zero ist als Aufbewahrungsmodus implementiert. Richtlinien können 24h, 7d oder 30d speichern; dies aktiviert keine Speicherung. Überschreitet die Anfrage die Richtlinie, folgt zuerst 403 retention_exceeds_policy; eine erlaubte effektive Aufbewahrung ungleich zero wird mit 501 retention_not_implemented abgelehnt.

Response

Standard OpenAI shape, plus:

{
  "choices": [...],
  "usage": {...},
  "llmeu": {
    "trace_id": "…",
    "model_used": "…",
    "model_version": "…",
    "provider": "…",
    "endpoint_id": "…",
    "inference_region": "de-fra",
    "sovereignty_class": "eu_owned_eu_operated",
    "route_reason": "auto routing for task \"coding\" + residency eu-hosted + …",
    "policy_id": "…",
    "retention": "zero",
    "cost_estimate_usd": 0.000123
  }
}

Fehler

Die vollständige Code-Tabelle mit Status, Typ und Vorgehen steht unter Fehler — gerendert aus derselben Quelle, die die API verwendet.

Endpunkte

Jede eingehängte Route, mit den nötigen Zugangsdaten, steht unter Endpunkte.

GET    https://api.llmeu.com/platform/v1/me
GET    https://api.llmeu.com/platform/v1/api-keys
POST   https://api.llmeu.com/platform/v1/api-keys
DELETE https://api.llmeu.com/platform/v1/api-keys/{id}
GET    https://api.llmeu.com/platform/v1/traces?limit=50
GET    https://api.llmeu.com/platform/v1/traces/{id}
GET    https://api.llmeu.com/platform/v1/usage?days=30
GET    https://api.llmeu.com/platform/v1/policies
POST   https://api.llmeu.com/platform/v1/policies
PUT    https://api.llmeu.com/platform/v1/policies/{id}