Was ist eine API? Erklärung an Beispielen für KI und erster curl-Befehl
Was ist eine API einfach erklärt: Requests, Responses, JSON, HTTP-Methoden, Statuscodes 401 bis 500 und der erste curl-Aufruf an ein KI-Modell im Test.
👁 121 Aufrufe
Eine API ist eine Vereinbarung zwischen zwei Programmen: Eines sendet eine Anfrage in einem festgelegten Format, das andere schickt eine Antwort im vereinbarten Format zurück. Wenn Ihr Skript ein KI-Modell um die Zusammenfassung einer E-Mail bittet, klickt es nicht in ein Chatfenster, sondern überträgt über das Internet ein Datenpaket im JSON-Format und erhält JSON zurück. Dieser Artikel ist der Einstieg in den Leitfaden KI-APIs von Grund auf, in dem ich alle Schritte anhand realer Anfragen auf meinem Rechner demonstriere.
API einfach erklärt: Der Schalter mit Formularen
Am anschaulichsten lässt sich eine API wie ein Behördenschalter vorstellen, der ausschliesslich standardisierte Formulare entgegennimmt. Sie sehen nicht, was im Hintergrund geschieht und wer den Vorgang bearbeitet. Sie wissen jedoch drei Dinge ganz genau:
- Zu welchem Schalter Sie gehen müssen - das ist die Adresse beziehungsweise der Endpoint, zum Beispiel
https://openrouter.ai/api/v1/chat/completions; - Wie das Formular auszufüllen ist - das in der Dokumentation definierte Anfrageformat: welche Felder Pflicht sind und welche optional bleiben;
- Wie Sie sich ausweisen - der API-Schlüssel, den Sie jeder Anfrage beifügen.
Die Gegenstelle liefert entweder das fertige Ergebnis zurück oder einen Beleg mit einem Fehlercode: fehlende Signatur, Tageslimit überschritten oder technischer Ausfall. Bei APIs entspricht dies den HTTP-Statuscodes, die weiter unten erläutert werden.
Der Unterschied zwischen einer Chat-Oberfläche und einer API liegt im Einsatzzweck: Ein Chat (wie ChatGPT, Claude oder Gemini) ist eine fertige Benutzeroberfläche für Menschen. Eine API hingegen bietet denselben Modellzugriff direkt für Softwareprogramme. Über die API speichert das Modell standardmässig keinen Verlauf, bietet keine Schaltflächen und merkt sich frühere Unterhaltungen nicht automatisch. Dafür lässt sich die Schnittstelle tausendfach automatisiert aus einer Tabelle, einem Bot oder einem nächtlichen Skript aufrufen. Abgerechnet wird dabei kein monatliches Pauschalabonnement, sondern der genaue Verbrauch an Tokens (Texteinheiten) - detailliert beschrieben im Artikel KI-Tokens: Funktionsweise und Kosten.
Anfrage und Antwort (Request und Response)
Jede Kommunikation mit einer API besteht aus zwei Elementen. Eine Anfrage (Request) umfasst folgende Bestandteile:
- Methode - die gewünschte Aktion. Bei generativen KI-Modellen kommt fast immer POST zum Einsatz, da Sie Nutzdaten übermitteln.
- Adresse - der Endpoint der jeweiligen Funktion, etwa zur Texterstellung oder zum Abrufen einer Modellliste.
- Header - Metadaten wie der API-Schlüssel (
Authorization: Bearer ...) und der Datentyp (Content-Type: application/json). - Nutzlast (Body) - die eigentlichen Daten: welches Modell angesprochen wird, welche Nachrichten übergeben werden und welche Parameter gelten.
Die Antwort (Response) liefert einen Statuscode (beispielsweise 200 für einen fehlerfreien Ablauf) sowie den Inhalt zurück, der den erzeugten Text und die Anzahl der abgerechneten Tokens enthält. So sieht eine reale Antwort aus, die ich am 4. Oktober 2026 vom Modell GPT-6 Luna über OpenRouter erhalten habe (auf die zentralen Felder gekürzt):
{
"id": "gen-1791114764-uKPpeyAgJg4GJmOQhMp4",
"object": "chat.completion",
"model": "openai/gpt-6-luna",
"provider": "OpenAI",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "Übersetzung des polnischen Originals: Krakau begeistert mit seinem historischen Hauptmarkt, stimmungsvollen Gassen und einer reichen Geschichte."
}
}
],
"usage": {
"prompt_tokens": 16,
"completion_tokens": 36,
"total_tokens": 52,
"cost": 0.0000196
}
}
Die Aufschlüsselung der Rückgabe: Das Modell lieferte den Text (content, im polnischen Originaltest: „Krakau begeistert mit seinem historischen Hauptmarkt, stimmungsvollen Gassen und einer reichen Geschichte“), beendete die Ausgabe regulär (finish_reason: stop), verbrauchte 16 Input-Tokens sowie 36 Output-Tokens, und die gesamte Anfrage kostete 0,0000196 USD (ca. 0,0000175 EUR gemäss EZB-Referenzkurs vom 12.10.2026 unter https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml).
JSON in zwei Minuten
JSON (JavaScript Object Notation) ist ein textbasiertes Datenformat, das sowohl von Menschen problemlos gelesen als auch von sämtlichen modernen Programmiersprachen verarbeitet werden kann. Es genügen fünf Grundelemente:
{ }- Ein Objekt, also eine Sammlung von Schlüssel-Wert-Paaren, z. B.{"model": "openai/gpt-6-luna"};[ ]- Ein Array beziehungsweise eine Liste, etwa für den Verlauf von Nachrichten;"text"- Zeichenketten stehen ausnahmslos in doppelten Anführungszeichen (einfache Anführungszeichen sind ungültig);- Zahlenwerte ohne Anführungszeichen:
0.7,1024- mit Dezimalpunkt statt Komma; true,false,null- Boolesche Werte für wahr, falsch oder leere Werte.
Eine typische Anfrage an ein Sprachmodell besteht aus einem Objekt mit dem Feld model und einer Liste namens messages. Jeder Eintrag besitzt eine Rolle (system für Verhaltensanweisungen, user für Ihre Eingabe, assistant für vorangegangene Modellantworten) sowie den eigentlichen Textinhalt. Das folgende Beispiel zeigt die deutsche Übersetzung unseres im Original auf Polnisch getesteten Prompts:
{
"model": "openai/gpt-6-luna",
"messages": [
{"role": "user", "content": "[Deutsche Übersetzung des polnischen Test-Prompts] Schreibe einen einzigen Satz über Krakau."}
]
}
Ein typischer Anfängerfehler ist ein überflüssiges Komma nach dem letzten Element einer Liste oder eines Objekts. Der JSON-Parser bricht in diesem Fall ab und der Server meldet den Fehlercode 400. Wenn das Modell strukturierte Ausgaben erzeugen soll, hilft das im Artikel Structured Output: Wie Sie KI-Modelle auf JSON festlegen vorgestellte Verfahren.
HTTP-Methoden: GET, POST und weitere
| Methode | Bedeutung | Beispiel in KI-APIs |
|---|---|---|
| GET | Daten abrufen, keine Zustandsänderung | Liste der verfügbaren Modelle: GET /api/v1/models |
| POST | Daten zur Verarbeitung übertragen | Antwort erzeugen: POST /api/v1/chat/completions |
| PATCH / PUT | Vorhandene Ressource anpassen | Nutzungslimit eines Schlüssels über Management-APIs ändern |
| DELETE | Ressource entfernen | Löschen einer Datei oder eines Schlüssels |
In der täglichen Praxis werden zu Beginn fast ausschliesslich zwei Methoden benötigt: GET zum Erkunden der Ressourcen und POST für generative Abfragen.
Statuscodes und Fehler: 401, 429, 500 und weitere
Der Statuscode ist eine dreistellige Zahl zu Beginn der Serverantwort. Die erste Ziffer weist auf den Ursprung hin: 2xx signalisiert Erfolg, 4xx einen clientseitigen Fehler bei der Anfrage und 5xx ein Problem auf Serverseite.
| Code | Bedeutung | Handlungsempfehlung |
|---|---|---|
| 200 | OK, Antwortdaten liegen im Body | Ergebnis auslesen und verarbeiten |
| 400 | Fehlerhafte Anfrage: ungültiges JSON, unbekanntes Modell oder falsche Parameter | Fehlermeldung prüfen, Parameter korrigieren, keine Endlosschleife starten |
| 401 | Fehlender oder ungültiger API-Schlüssel | Umgebungsvariable überprüfen und Aktivitätsstatus des Schlüssels prüfen |
| 402 | Guthaben aufgebraucht (z. B. bei OpenRouter) | Konto aufladen oder Schlüsselbegrenzung anpassen |
| 403 | Zugriff verweigert (z. B. regionale Beschränkung oder Inhaltsmoderation) | Anderes Modell wählen oder Text modifizieren |
| 404 | Endpunkt oder Modell existiert nicht | Adresse und Modellbezeichnung auf Tippfehler prüfen |
| 429 | Zu viele Anfragen in kurzer Zeit (Rate Limit) oder Gesamtkontingent erreicht | Wartezeit einlegen und Abfrage mit exponentiellem Backoff wiederholen |
| 500, 502, 503 | Serverausfall oder Überlastung beim Anbieter | Nach kurzer Wartezeit erneut anfragen, alternativ Fallback-Anbieter nutzen |
| 529 | Temporäre Überlastung (spezifischer Code bei Anthropic) | Wie bei Statuscode 503 verfahren |
Im Praxistest lässt sich das Verhalten bei fehlender Autorisierung direkt nachstellen. Eine Abfrage an OpenRouter ohne den Header Authorization liefert folgendes Ergebnis:
$ curl -s https://openrouter.ai/api/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"openai/gpt-6-luna","messages":[{"role":"user","content":"hej"}]}'
{"error":{"message":"No cookie auth credentials found","code":401}}
Ähnlich verhalten sich fehlerhafte Schlüssel und ungültige Modellnamen, hier demonstriert über Python-Rückmeldungen. Bemerkenswert: OpenRouter antwortet bei einem nicht existierenden Modell mit Code 400 statt 404. Es empfiehlt sich daher, in Skripten nicht starr von einer einzelnen Kennziffer auszugehen.
401: API-Schluessel pruefen (Error code: 401 - {'error': {'message': 'User not found.', 'code': 401}})
400: Anfrage korrigieren (Error code: 400 - {'error': {'message': 'openai/gpt-7-nie-istnieje is not a valid model ID', 'code': 400}})
Detaillierte Anleitungen zum Abfangen dieser Rückgabewerte und zur automatischen Wiederholung bei Status 429 bietet der Leitfaden Erste KI-API-Abfrage in Python.
Der erste curl-Aufruf: Anfragen über das Terminal
curl ist ein Standardwerkzeug zum Senden von HTTP-Anfragen direkt aus der Befehlszeile. Es ist unter Windows 10 und 11 (als curl.exe), macOS sowie Linux standardmässig vorinstalliert, sodass keine zusätzliche Einrichtung erforderlich ist. Zum Einstieg genügt ein GET-Aufruf ohne Schlüssel, der die verfügbaren Modelle bei OpenRouter auflistet:
{"data":[{"id":"inclusionai/ling-3.1-flash","canonical_slug":"inclusionai/ling-3.1-flash-20261002","hugging_face_id":null,"name":"inclusionAI: Ling 3.1 Flash","created":1790950024,"description":"Ling 3.1 Flash is a hybrid reasoning mixture-of-experts model from inclusionAI, with 25B active parameters out of 560B total.","context
Die zurückgelieferte JSON-Struktur enthält ein Array namens data, das zum Testzeitpunkt am 4. Oktober insgesamt 466 Modelle umfasste. Für eine produktive POST-Anfrage zur Textgenerierung wird ein gültiger API-Schlüssel benötigt (Einrichtungsanleitungen finden sich unter API-Schlüssel beschaffen und absichern). Unter Linux, macOS sowie Git Bash lautet der Aufruf (der Prompt wurde für diesen Test auf Polnisch formuliert):
#!/usr/bin/env bash
# Erste Abfrage mit curl (Git Bash, Linux, macOS). Zuvor: export OPENROUTER_API_KEY=sk-or-v1-...
# Hinweis: Der Prompt ist eine deutsche Uebersetzung der urspruenglich auf Polnisch getesteten Eingabe.
curl -s https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6-luna",
"messages": [{"role": "user", "content": "Napisz jedno zdanie o Krakowie."}]
}'
In der Windows PowerShell führen eingebettete Anführungszeichen in JSON-Strings häufig zu Formatierungsfehlern. Daher wird die Abfragestruktur vorzugsweise in einer Datei anfrage.json abgelegt und von curl eingelesen. Beachten Sie die Verwendung von curl.exe, da curl in älteren PowerShell-Umgebungen als Alias reserviert ist:
# Windows PowerShell: Abfrageinhalt in anfrage.json auslagern (vermeidet Maskierungsprobleme)
# Zuvor in derselben Sitzung ausfuehren: $env:OPENROUTER_API_KEY = "sk-or-v1-..."
curl.exe -s https://openrouter.ai/api/v1/chat/completions `
-H "Authorization: Bearer $env:OPENROUTER_API_KEY" `
-H "Content-Type: application/json" `
-d "@anfrage.json"
Beide Ausführungsvarianten wurden unter Windows 11 (mit Git Bash und curl 8.22 sowie der PowerShell) verifiziert. Das Modell lieferte jeweils den gewünschten Satz über Krakau zurück. Die Abfragekosten beliefen sich auf rund 0,00002 USD (ca. 0,000018 EUR, EZB-Referenzkurs vom 12.10.2026). Die Skripte sind im Paket api-starter hinterlegt.
Nächste Schritte
- Konto anlegen und Schlüssel generieren: API-Schlüssel bei OpenAI, Anthropic, Google AI Studio und OpenRouter.
- Das erste eigene Programm erstellen: Erste Schritte mit der KI-API in Python.
- Betriebskosten kalkulieren: KI-Tokens und Kostenberechnung.
- Automatisierte Workflows aufbauen: KI-Agenten von Grund auf entwickeln.
Häufig gestellte Fragen (FAQ)
Was ist eine API in einfachen Worten?
Eine Schnittstelle, über die zwei Anwendungen strukturiert Informationen austauschen: Das anfragende Programm sendet einen definierten Datensatz und erhält eine Antwort im festgelegten Format zurück, ohne die interne Programmlogik des Gegenübers kennen zu müssen.
Wofür steht die Abkürzung API?
API steht für Application Programming Interface (Programmierschnittstelle). Es handelt sich um den technischen Übergabepunkt zwischen Softwarekomponenten, vergleichbar mit einer grafischen Oberfläche für den Menschen.
Sind Programmierkenntnisse zwingend erforderlich?
Für erste Tests genügen curl und vorbereitete Befehle im Terminal. Für produktive Anwendungsfälle empfehlen sich grundlegende Kenntnisse in Python oder der Einsatz von Automatisierungsplattformen wie n8n oder Zapier, die API-Aufrufe ohne Programmiercode orchestrieren.
Worin liegt der Unterschied zwischen einer API und ChatGPT?
ChatGPT ist ein Endanwenderprodukt mit Benutzeroberfläche, Abonnementstruktur und Sitzungsverlauf. Die OpenAI-API stellt die dahinterliegenden Sprachmodelle für Softwareentwickler bereit, wird verbrauchsabhängig nach Tokens abgerechnet und speichert standardmässig keine Sitzungen. Ein ChatGPT-Abonnement umfasst den API-Zugriff nicht - hierfür gelten separate Konten und Abrechnungsmodalitäten.
Was versteht man unter einer REST-API?
REST ist ein Architekturstil für Webschnittstellen. Ressourcen werden über eindeutige URLs angesprochen, Interaktionen erfolgen über Standard-HTTP-Methoden (GET, POST, DELETE) und Daten werden typischerweise als JSON ausgetauscht. Gängige KI-Schnittstellen folgen diesem Paradigma.
Google · Deine QuellenWissnox höher in Ihrem Google - mit einem KlickZu bevorzugten Quellen hinzufügen →Quellen und Testdaten
Die Testabfragen wurden am 4. Oktober 2026 unter Windows 11 über OpenRouter durchgeführt. Die Gesamtkosten sämtlicher Testaufrufe lagen unter 0,0001 USD (ca. 0,000089 EUR, Referenzkurs der EZB vom 12.10.2026 unter https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml).


