API DocsReferenz

Referenz

SDK-Integration (OpenAI, Anthropic, AI SDK), Rate Limits und Fehlercodes.

Auf dieser Seite

OpenAI SDK (TypeScript)

Nutze das offizielle OpenAI Node.js SDK mit anymize als Base-URL.

1npm install openai

OpenAI SDK (Python)

Nutze das offizielle OpenAI Python SDK mit anymize als Base-URL.

1pip install openai

Basis-URLs

Je nach Feature verwendest du eine andere Base-URL.

Standard-Chat — für reguläre Completions ohne Anonymisierung.https://app.anymize.ai/api/v1/llm
Anonymer Chat — Requests werden automatisch anonymisiert.https://app.anymize.ai/api/v1/llm-anonymous
Responses API — vereinfachtes Format für schnelle Integration.https://app.anymize.ai/api/v1/llm/responses
Anthropic SDK / Claude Codehttps://app.anymize.ai/api

Unterstützte Formate

Die API akzeptiert JSON (application/json) und multipart/form-data für Datei-Uploads.

Kompatibilitäts-Tipp

OpenAI SDK, Anthropic SDK, Vercel AI SDK, LangChain, LiteLLM, Cursor, Cline, Continue und Claude Code. Ein Key, eine Pipeline. Base URL je nach Client: /api/v1/llm (OpenAI) oder /api (Anthropic).

Anthropic SDK (TypeScript)

Offizielles @anthropic-ai/sdk. Base URL zeigt auf /api, der Client hängt /v1/messages an. apiKey wird als x-api-key geschickt, anymize akzeptiert das.

1npm install @anthropic-ai/sdk

Anthropic SDK (Python)

anthropic.Anthropic mit base_url auf /api. api_key sendet x-api-key (funktioniert). auth_token sendet Bearer, analog zu Claude Code.

1pip install anthropic

Vercel AI SDK (OpenAI-Provider)

createOpenAI mit baseURL .../api/v1/llm spricht Chat Completions. generateText, streamText, tools: alles wie gegen api.openai.com, plus Anonymisierung.

1import { createOpenAI } from "@ai-sdk/openai"
2import { generateText } from "ai"
3
4const openai = createOpenAI({
5 apiKey: "YOUR_API_KEY",
6 baseURL: "https://app.anymize.ai/api/v1/llm",
7})
8
9const { text } = await generateText({
10 model: openai.chat("fountain-1.0"),
11 prompt: "Hello",
12})

Vercel AI SDK (Anthropic-Provider)

createAnthropic mit baseURL .../api/v1 (ohne /llm). Der Provider POSTet /messages, landet also auf /api/v1/messages. Dieselben Modelle, dieselbe Pipeline.

Rate Limits

Standard-Limits

Jeder API-Key hat Standard-Limits pro Minute und pro Tag.

EndpunktPro MinutePro Tag
LLM Chat601,000
Anonymous Chat30500
Anonymize602,000
Models120

Rate-Limit-Header

Jede Antwort enthält Header mit den aktuellen Limits und dem Verbrauch.

X-RateLimit-Limit-RequestsMaximale Anzahl erlaubter Requests.
Retry-AfterZeitpunkt, an dem das Limit zurückgesetzt wird (Unix-Timestamp).

Rate-Limit-Fehler

Bei Überschreitung erhältst du einen 429-Fehler mit Retry-After-Header.

429Too Many Requests
{
  "error": {
    "message": "Rate limit exceeded. Please retry after 30 seconds.",
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded"
  }
}

Retry-Strategie

Warte die im Retry-After-Header angegebene Zeit ab, bevor du es erneut versuchst.

1# Check rate limit headers in the response
2curl -i -X POST https://app.anymize.ai/api/v1/llm/chat/completions \
3 -H #0a3069">"Authorization: Bearer YOUR_API_KEY" \
4 -H #0a3069">"Content-Type: application/json" \
5 -d '{
6 #0a3069">"model": "fountain-1.0",
7 #0a3069">"messages": [{"role": "user", "content": "Hello!"}]
8 }'
9
10# Response headers include:
11# X-RateLimit-Limit-Requests: 60
12# Retry-After: 30

Credit-basierte Limits

Zusätzlich zu Rate Limits gelten Credit-basierte Limits je nach Tarif.

1,000 Credits= 2 Cent
1 EUR= 50,000 Credits

Höhere Limits

Du benötigst höhere Limits? Kontaktiere uns für ein Enterprise-Angebot.

Tipp

Implementiere exponentielles Backoff und respektiere den Retry-After-Header.

Fehlercodes

HTTP-Statuscodes

Alle API-Endpunkte verwenden Standard-HTTP-Statuscodes.

CodeStatusBeschreibung
200OKErfolg — Anfrage wurde verarbeitet.
202AcceptedAkzeptiert — Job wurde erstellt und wird verarbeitet.
400Bad RequestUngültige Anfrage — prüfe die Parameter.
401UnauthorizedNicht authentifiziert — API-Key fehlt oder ungültig.
403ForbiddenZugriff verweigert — keine Berechtigung für diese Ressource.
404Not FoundNicht gefunden — Endpunkt oder Ressource existiert nicht.
429Too Many RequestsZu viele Anfragen — Rate Limit überschritten.
500Internal Server ErrorServerfehler — versuche es später erneut.
503Service UnavailableService nicht verfügbar — temporäre Wartung.

Fehlerformat

Fehler werden als JSON mit error-Objekt zurückgegeben.

400Bad Request
{
  "error": {
    "message": "Missing required field: messages",
    "type": "invalid_request_error",
    "code": "missing_messages",
    "param": "messages"
  }
}

Fehlertypen

Jeder Fehler hat einen Typ, der die Kategorie beschreibt.

invalid_request_errorUngültige Anfrage — Parameter fehlen oder sind falsch.
auth_errorAuthentifizierungsfehler — API-Key prüfen.
rate_limit_errorRate Limit — zu viele Anfragen in kurzer Zeit.
api_errorAPI-Fehler — internes Problem auf Serverseite.

Fehlercodes

Spezifische Fehlercodes für häufige Probleme.

FehlercodeHTTP-StatusBeschreibung
invalid_api_key401API-Key ist ungültig oder abgelaufen.
model_not_found404Das angegebene Modell existiert nicht.
missing_messages400Das messages-Array fehlt im Request.
missing_model400Der model-Parameter fehlt im Request.
rate_limit_exceeded429Rate Limit wurde überschritten.
service_unavailable503Der Service ist vorübergehend nicht erreichbar.

Fehler-Beispiele

401Unauthorized
{
  "error": {
    "message": "Invalid API key",
    "type": "auth_error",
    "code": "invalid_api_key"
  }
}
404Not Found
{
  "error": {
    "message": "Model 'gpt-nonexistent' not found",
    "type": "invalid_request_error",
    "code": "model_not_found",
    "param": "model"
  }
}
429Too Many Requests
{
  "error": {
    "message": "Rate limit exceeded. Please retry after 30 seconds.",
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded"
  }
}
503Service Unavailable
{
  "error": {
    "message": "The model is currently overloaded. Please try again later.",
    "type": "api_error",
    "code": "service_unavailable"
  }
}

Best Practices

Empfehlungen für robuste Fehlerbehandlung.

  • Prüfe immer den HTTP-Statuscode, bevor du die Antwort parst.
  • Logge Fehler mit error.code und error.message für Debugging.
  • Implementiere Retry-Logik mit exponentiellem Backoff für 429 und 5xx.
  • Zeige dem Endnutzer eine hilfreiche Fehlermeldung, nicht den rohen API-Fehler.

Hinweis zu Retries

Versuche 400er-Fehler nicht erneut — der Request ist fehlerhaft und wird immer fehlschlagen.
API Reference Dokumentation | anymize