+190 XP

GPT Actions: ChatGPT Ihre APIs aufrufen lassen

Mit GPT Actions kann ein Custom GPT externe APIs aufrufen, die Sie beschreiben. Statt zu raten, ruft ChatGPT in Ihrem Auftrag Live-Daten ab oder löst etwas in einem echten System aus. Sie schreiben eine kleine OpenAPI-Spezifikation, verweisen auf Ihren Endpoint, richten die Authentifizierung ein, und das Modell entscheidet während des Gesprächs, wann es den Aufruf macht.

Dahinter steckt dieselbe Mechanik wie beim Function Calling in der API, verpackt für den No-Code-Builder für Custom GPTs. Sie definieren die Tools. ChatGPT entscheidet, wann und wie sie aufgerufen werden.

Was eine Action eigentlich ist

Eine Action besteht aus einem oder mehreren HTTP-Endpoints, die einem GPT über eine OpenAPI-Spezifikation zugänglich gemacht werden. OpenAPI (früher Swagger) ist ein Standard zur maschinenlesbaren Beschreibung einer REST-API: ihre Pfade, Parameter, Request Bodies und Responses.

Wenn Sie einem GPT eine Action hinzufügen, passieren zur Laufzeit drei Dinge:

  1. Das Modell liest Ihre Operationsbeschreibungen und entscheidet, dass ein Aufruf nötig ist.
  2. ChatGPT baut den HTTP-Request (die Parameter werden aus dem Gespräch befüllt), hängt die Authentifizierung an und sendet ihn.
  3. Ihre API antwortet mit JSON, und das Modell liest dieses JSON, um seine Antwort zu schreiben.

Das Modell sieht Ihren Server nie. Es sieht nur das Schema, das Sie ihm gegeben haben, und die Response, die zurückkommt. Deshalb gilt: Ihre `description`-Felder sind Prompt, und vage Beschreibungen führen zu falschen Aufrufen.

Wo Actions konfiguriert werden

Actions werden im GPT-Editor auf chatgpt.com konfiguriert (GPTs, Create, dann der Tab Configure). Scrollen Sie zu Actions und klicken Sie auf Create new action. Sie fügen ein Schema ein, wählen eine Authentifizierungsart, und ChatGPT validiert es sofort.

Actions vs. Apps (früher Connectors)

ChatGPT hat inzwischen einen zweiten Weg, externe Systeme zu erreichen. Im Dezember 2025 hat OpenAI Connectors in Apps umbenannt. Der Katalog enthält vorgefertigte, von OpenAI verwaltete Integrationen wie Google Drive, SharePoint und GitHub. Seit Oktober 2025 können Entwickler mit dem Apps SDK, das auf dem Model Context Protocol (MCP) basiert, auch eigene Apps bauen. Eine App läuft als MCP-Server, den Sie selbst hosten. Sie kann Tools bereitstellen und optional eine interaktive UI im Chat rendern. Sie funktioniert in allen ChatGPT-Gesprächen, nicht nur innerhalb eines GPT.

Eine grobe Faustregel für die Wahl:

  • Nutzen Sie eine bestehende App, wenn sie die Quelle bereits abdeckt (zum Beispiel die Suche in Ihrem Drive).
  • Bauen Sie eine Action, wenn ein einzelner Custom GPT Ihr REST-Backend ansprechen soll und Sie bereits eine OpenAPI-Spezifikation haben oder schreiben können.
  • Bauen Sie eine MCP-basierte App, wenn die Integration in ganz ChatGPT verfügbar sein soll, eine umfangreiche UI braucht oder auch von anderen MCP-Clients wiederverwendet werden soll.

Die Design-Empfehlungen dieser Lektion gelten für beides. Klare Tool-Beschreibungen, eng gefasste Operationen, kleine Responses und serverseitige Validierung sind bei einem MCP-Tool genauso wichtig wie bei einer Action.

Ein konkretes Beispiel: Abfrage des Bestellstatus

Angenommen, Ihr Support-Team möchte einen GPT, der die Frage „Wo ist Bestellung 10428?“ beantwortet, indem er Ihre interne Orders-API aufruft. Ihr Endpoint existiert bereits:

GET https://api.acme-shop.com/v1/orders/{orderId}

Er liefert in etwa Folgendes zurück:

json
{
  "orderId": "10428",
  "status": "shipped",
  "carrier": "DHL",
  "trackingNumber": "JD0149...",
  "estimatedDelivery": "2026-02-14"
}

Jetzt beschreiben Sie diesen Endpoint für den GPT. Hier ist ein sauberes, minimales OpenAPI-3.1-Schema, das Sie direkt in den Actions-Editor einfügen können:

yaml
openapi: 3.1.0
info:
  title: Acme Orders API
  version: 1.0.0
servers:
  - url: https://api.acme-shop.com/v1
paths:
  /orders/{orderId}:
    get:
      operationId: getOrderStatus
      summary: Get the current status and tracking info for one order.
      description: >
        Look up a single order by its numeric ID. Use this whenever a
        user asks where their order is, its delivery date, or its
        shipping status. Returns status, carrier, and tracking number.
      parameters:
        - name: orderId
          in: path
          required: true
          description: The order's numeric ID, e.g. 10428.
          schema:
            type: string
      responses:
        "200":
          description: Order found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  orderId: { type: string }
                  status: { type: string }
                  carrier: { type: string }
                  trackingNumber: { type: string }
                  estimatedDelivery: { type: string, format: date }
        "404":
          description: No order with that ID exists.

Einige Punkte machen dieses Schema gut und nicht bloß gültig:

  • Die operationId ist aussagekräftig. getOrderStatus ist für das Modell verständlicher als get1 und wird zum Funktionsnamen.
  • Die description sagt dem Modell, wann es die Operation nutzen soll. Der Satz „Use this whenever a user asks...“ ist Intent Routing.
  • Der 404 ist dokumentiert. Bekommt das Modell einen 404, kann es dem Nutzer sagen „Ich konnte diese Bestellung nicht finden“, statt einen Status zu erfinden.

Nach dem Speichern zeigt ChatGPT die verfügbare Operation an. Testen Sie sie, indem Sie dem GPT eine natürliche Frage stellen. Wenn er zum ersten Mal eine neue Domain aufruft, bittet ChatGPT den Nutzer um Bestätigung und sendet dann den Request.

Authentifizierung

Actions unterstützen im Builder drei Authentifizierungsmodi: None, API Key und OAuth. Das Schema legt fest, was aufgerufen wird. Die Authentifizierung regelt, wie Sie nachweisen, wer Sie sind.

API Key

Das ist die einfachste abgesicherte Option. Sie fügen einen Key in den GPT-Editor ein, wählen, wie er gesendet wird (Bearer-Header, Basic oder ein eigener Header), und OpenAI speichert ihn verschlüsselt. ChatGPT hängt ihn an jeden Aufruf an. Ergänzen Sie Ihr Schema um einen passenden securitySchemes-Block:

yaml
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
security:
  - bearerAuth: []

Alle, die den GPT nutzen, teilen sich diesen Key. Für einen internen Read-only-Endpoint hinter Ihren eigenen Netzwerkkontrollen ist das in Ordnung. Nicht in Ordnung ist es, wenn jeder Nutzer nur seine eigenen Daten sehen soll, denn das Modell würde mit einer einzigen geteilten Identität handeln.

OAuth

Wenn Sie eine Identität pro Nutzer brauchen (jeder Support-Mitarbeiter oder jeder Kunde authentifiziert sich als er selbst), nutzen Sie OAuth. Sie hinterlegen Authorization URL, Token URL, Client ID, Client Secret und Scopes. ChatGPT führt den Standard-OAuth-Flow aus: Der Nutzer klickt auf Sign in, genehmigt den Zugriff auf Ihrem Auth-Server, und ChatGPT speichert das Token dieses Nutzers. Die Aufrufe laufen dann mit den Berechtigungen dieses Nutzers.

Verwenden Sie OAuth für alles, was Daten schreibt oder private Datensätze offenlegt. Die vollständige Einrichtung finden Sie in der Dokumentation zur Authentifizierung von Actions. MCP-basierte Apps nutzen ebenfalls OAuth, der Auth-Server, den Sie hier einrichten, lässt sich also weiterverwenden, falls Sie später eine App bauen.

Build a Custom GPT with Actions

Watch on YouTube

Ein Hinweis zu Secrets und Rate Limits

Legen Sie niemals Zugangsdaten im Schema selbst oder in den Anweisungen des GPT ab. Wer einen GPT nutzen kann, schafft es manchmal, ihm seine Konfiguration zu entlocken. Bewahren Sie Secrets in den dafür vorgesehenen Auth-Feldern auf und schützen Sie Ihren Endpoint mit eigenem Rate Limiting. Ein beliebter GPT kann echten Traffic erzeugen, und das Modell wiederholt Aufrufe unter Umständen bei Fehlern.

Die API für ein Modell gestalten, nicht für einen Menschen

Eine REST-API für Engineers und eine für ein LLM unterscheiden sich in kleinen Details. Schärfen Sie diese Punkte nach:

  • Geben Sie kleines, flaches JSON zurück. Die Response landet im Context Window und kostet Tokens. Eine Bestellabfrage braucht nicht das komplette Audit-Log.
  • Verwenden Sie klare Feldnamen. estimatedDelivery ist besser als est_dlv_dt, weil das Modell über die Namen schlussfolgert.
  • Machen Sie Fehler verständlich, mit einer für Menschen lesbaren message bei Fehlschlägen, damit das Modell sie weitergeben kann.
  • Halten Sie Operationen eng gefasst. Ein Endpoint, der fünf Dinge erledigt, verwirrt das Routing. Setzen Sie lieber auf getOrderStatus, cancelOrder und getInvoice als getrennte Operationen mit eigenen Beschreibungen.

Das Modell kann nur tun, was Ihr Schema beschreibt. Soll es Bestellungen stornieren, brauchen Sie eine cancelOrder-Operation (ein POST oder DELETE) mit eigener Beschreibung und idealerweise OAuth, damit die Action als echter Nutzer mit Stornierungsberechtigung läuft.

Wissenscheck

1. Was ist der Hauptzweck einer GPT Action?

2. Warum betont die Lektion, dass Ihre OpenAPI-„description“-Felder „Prompt und keine Dokumentation“ sind?

3. Sie möchten Daten aus Google Drive für Suche und Abruf in ChatGPT nutzen. Was sollten Sie verwenden?

MEHRFACHAUSWAHL

4. Wählen Sie ALLE Aussagen aus, die korrekt beschreiben, was zur Laufzeit passiert, wenn ein GPT eine Action nutzt.

Wählen Sie alle richtigen Antworten aus.

MEHRFACHAUSWAHL

5. Wählen Sie ALLE korrekten Aussagen zum Unterschied zwischen Actions und Connectors aus.

Wählen Sie alle richtigen Antworten aus.

Folgenreiche Actions und Bestätigung

Manche Aufrufe sind read-only. Andere verändern etwas in der realen Welt: eine Zahlung erstatten, eine E-Mail senden, einen Datensatz löschen. ChatGPT behandelt diese unterschiedlich.

Standardmäßig bittet ChatGPT den Nutzer um Bestätigung, bevor eine Action auf einer neuen Domain aufgerufen wird. Bei schreibenden Aufrufen wollen Sie diese Hürde. Sie können Operationen so markieren, dass der Nutzer jedes Mal bestätigen muss, was für alles Destruktive gute Praxis ist. Behandeln Sie jedes `POST`, `PUT`, `PATCH` und `DELETE` als folgenreich, bis das Gegenteil bewiesen ist. Gestalten Sie Ihren Endpoint so, dass ein Bestätigungsschritt wenig kostet, zum Beispiel mit einem Ablauf aus zwei Aufrufen: einer für die Vorschau, einer für die Ausführung.

Der GPT schlussfolgert über Ihre Beschreibungen und ruft unter Umständen die falsche Operation auf oder übergibt das falsche Argument. Die eigentliche Autorität ist Ihr Server. Validieren Sie jeden Request serverseitig: Prüfen Sie, ob die Bestellung dem authentifizierten Nutzer gehört, ob der Betrag innerhalb der Limits liegt und ob die ID korrekt formatiert ist. Gehen Sie nie davon aus, dass das Modell alles richtig gemacht hat.

Wie das mit der API und dem Agents SDK zusammenhängt

Actions sind die Oberfläche für Tool-Nutzung in Custom GPTs. Dieselbe Idee steckt hinter der OpenAI API, in der Sie Tools als JSON-Schemas definieren und das Modell einen strukturierten Tool Call zurückgibt, den Ihr Code ausführt. Wenn Sie aus dem GPT-Builder herauswachsen (Sie brauchen eigene Logik zwischen den Aufrufen, Ihre eigene UI oder Orchestrierung über viele Tools), wechseln Sie zur Responses API oder zum Agents SDK, wo Sie die Schleife direkt steuern.

Die Beschreibungen und Parameter-Schemas, die Sie für eine Action geschrieben haben, lassen sich fast eins zu eins in Tool-Definitionen im Code oder in Tools auf einem MCP-Server übertragen. Betrachten Sie GPT Actions als die gehostete Version des Musters ohne eigene Orchestrierung. Prototypen Sie eine Integration als Action. Verlagern Sie sie dann ins Agents SDK, wenn Sie volle Kontrolle brauchen, oder in eine Apps-SDK-App, wenn sie in ganz ChatGPT verfügbar sein soll.

Actions debuggen

Wenn ein Aufruf nicht wie erwartet funktioniert, gehen Sie diese Punkte der Reihe nach durch:

  1. Hat das Modell die Action überhaupt aufgerufen? Wenn es aus dem Bauch heraus geantwortet hat, ist Ihre description zu schwach oder zu allgemein. Ergänzen Sie einen expliziten Auslösesatz nach dem Muster „Use this when...“.
  2. Falsche Parameter? Prüfen Sie die description-Felder und Typen der Parameter. Mehrdeutigkeit an dieser Stelle erzeugt fehlerhafte Requests.
  3. Authentifizierungsfehler? Testen Sie den Endpoint außerhalb von ChatGPT mit genau demselben Key oder Token (ein curl-Aufruf), um einzugrenzen, ob das Problem bei Ihrer Authentifizierung oder in der Konfiguration des GPT liegt.
  4. Schema wird beim Speichern abgelehnt? Der Editor validiert gegen OpenAPI 3.1. Fügen Sie Ihr YAML in einen externen Validator ein, um die fehlerhafte Zeile zu finden.

Machen Sie einen kurzen Plausibilitätscheck mit curl, bevor Sie den Builder überhaupt anfassen:

bash
curl -s https://api.acme-shop.com/v1/orders/10428 \
  -H "Authorization: Bearer $ACME_TOKEN"

Wenn das sauberes JSON zurückgibt, geht es auf der GPT-Seite nur noch um Schema und Auth-Konfiguration.

Key Takeaways

  • Schreiben Sie Beschreibungen als Prompts. Die Felder operationId, summary und description entscheiden, wann und wie das Modell Ihre API aufruft. Nehmen Sie deshalb in jede Operation einen expliziten Satz nach dem Muster „Use this when...“ auf.
  • Wählen Sie die richtige Oberfläche. Nutzen Sie eine Action für einen einzelnen Custom GPT, der mit Ihrer REST-API spricht. Nutzen Sie eine bestehende App (früher Connector), wenn sie die Quelle abdeckt. Bauen Sie mit dem Apps SDK eine MCP-basierte App für Integrationen, die in ganz ChatGPT funktionieren sollen.
  • Richten Sie die Authentifizierung nach dem Identitätsbedarf aus: API Key für geteilte, interne Read-only-Endpoints, OAuth immer dann, wenn jeder Nutzer als er selbst handeln soll oder die Action Daten schreibt.
  • Behandeln Sie das Modell als nicht vertrauenswürdigen Input. Validieren Sie jeden Request serverseitig und markieren Sie schreibende Operationen als folgenreich, damit Nutzer bestätigen, bevor sich etwas ändert.
  • Halten Sie Responses klein und flach, denn sie verbrauchen Context-Tokens, und das Modell schlussfolgert über Ihre Feldnamen.
  • Prototypen Sie als Action und steigen Sie dann auf das Agents SDK oder eine App um. Dieselben Schemas lassen sich übernehmen.

Häufige Fragen

Was ist eine GPT Action in ChatGPT?

Eine GPT Action besteht aus einem oder mehreren HTTP-Endpoints, die einem Custom GPT über eine OpenAPI-Spezifikation zur Verfügung gestellt werden. Sie fügen das Schema im GPT-Editor ein, legen einen Authentifizierungstyp fest, und ChatGPT entscheidet dann während der Unterhaltung, wann es den Request aufbaut, die Authentifizierung anhängt und ihn abschickt. Ihre API liefert JSON zurück, und das Modell formuliert auf Basis dieses JSON seine Antwort.

Was ist der Unterschied zwischen einer GPT Action und einer ChatGPT-App?

Eine Action lebt in einem einzelnen Custom GPT und ruft Ihre REST-API über eine OpenAPI-Spec auf. Eine App (so heißen die Connectors bei OpenAI seit Dezember 2025) läuft als MCP-Server, den Sie selbst hosten, funktioniert in allen ChatGPT-Unterhaltungen statt nur in einem einzelnen GPT und kann interaktive UI im Chat darstellen. Nutzen Sie eine bestehende App, wenn es für die Quelle schon eine gibt. Bauen Sie eine Action, wenn ein einzelner GPT Ihr Backend ansprechen soll, und bauen Sie eine MCP-basierte App mit dem Apps SDK, wenn die Integration überall in ChatGPT verfügbar sein soll.

Soll ich für meine GPT Action einen API-Key oder OAuth verwenden?

Einen API-Key nur für gemeinsam genutzte, rein lesende interne Endpoints: Alle Nutzer des GPT rufen mit derselben Identität auf, die OpenAI verschlüsselt speichert und an jeden Request anhängt. OAuth immer dann, wenn jeder Nutzer nur seine eigenen Daten sehen soll oder die Action irgendetwas schreibt. ChatGPT durchläuft dann den Standard-Flow und speichert pro Nutzer einen Token mit dessen Berechtigungen. OAuth lässt sich außerdem übernehmen, falls Sie die Integration später als MCP-basierte App neu bauen.

Warum ruft ChatGPT meine Action nicht auf, wenn ich die Frage stelle?

Fast immer, weil die Beschreibung der Operation zu schwach oder zu allgemein ist. Das Modell antwortet dann aus Vermutungen, statt an Ihren Endpoint weiterzuleiten. Ergänzen Sie in der Beschreibung einen expliziten Satz wie „Use this when a user asks...“ und geben Sie der Operation eine lesbare operationId wie getOrderStatus statt get1. Diese Beschreibungsfelder sind Prompt, keine Dokumentation.

Wie gestalte ich eine REST-API, damit ein Modell sie richtig nutzt?

Liefern Sie kleines, flaches JSON zurück, denn jede Response verbraucht Kontext-Tokens und das Modell arbeitet mit Ihren Feldnamen: estimatedDelivery ist besser als est_dlv_dt. Halten Sie Operationen schmal, jede mit genau einer Aufgabe, mit eigenen Beschreibungen für getOrderStatus, cancelOrder und getInvoice statt eines Endpoints, der alles macht. Dokumentieren Sie auch die Fehlercodes, damit das Modell bei einem 404 sagen kann, dass die Bestellung nicht gefunden wurde, statt einen Status zu erfinden.

Wie verhindere ich, dass ein Custom GPT versehentlich einen destruktiven Aufruf auslöst?

Behandeln Sie jedes POST, PUT, PATCH und DELETE als folgenreich und markieren Sie diese Operationen so, dass der Nutzer jedes Mal bestätigt. ChatGPT fragt ohnehin beim ersten Aufruf einer neuen Domain nach einer Bestätigung. Behandeln Sie das Modell außerdem als nicht vertrauenswürdigen Input und validieren Sie serverseitig: Gehört der Datensatz dem authentifizierten Nutzer, liegen Beträge innerhalb der Limits, sind IDs korrekt aufgebaut? Ein Ablauf mit zwei Aufrufen, einer für die Vorschau und einer für die Ausführung, macht den Bestätigungsschritt billig.

Was Sie aus dieser Lektion umsetzen

Diese Maßnahmen sind im Playbook der Rolle zusammengefasst.

  • operationId, summary und description der Action als Wann-verwenden-Prompts schreiben
  • OAuth für user-scoped Actions oder solche mit Schreibzugriff nutzen; API Keys nur für gemeinsame Read-only-Zugriffe
Vollständiges Action Playbook ansehen →

Verwandte Artikel

Aktuelle Blogartikel, die auf dieser Lektion aufbauen.