API v2
Nutzen Sie die REST-API v2 für Agent-Verwaltung, Streaming-Chat, Unterhaltungen, Feedback, Quellen, Kontakte, Leads und Einstellungen.
API v2 ist eine strukturierte REST-API zur Verwaltung von Agenten und zum Erstellen individueller Chat-Erlebnisse. Sie ergänzt Agent-Verwaltung, Streaming-Chat, Unterhaltungsverlauf, Nachrichten-Feedback, Kontakte, Leads, Quellen, Einstellungen und Trainings-Endpunkte.
Für den API-Zugriff ist mindestens der Hobby-Tarif mit aktiver Abrechnung erforderlich.
Basis-URL
https://your-domain.com/api/v2
Authentifizierung
Außer beim Health-Check senden Sie Ihren Workspace-API-Schlüssel als Bearer-Token:
Authorization: Bearer YOUR_API_KEY
Erstellen und widerrufen Sie API-Schlüssel unter Einstellungen > API-Schlüssel.
Antwortformat
Die meisten erfolgreichen Antworten liefern entweder ein Ressourcenobjekt oder einen data-Umschlag zurück:
{
"data": []
}
Listen-Endpunkte enthalten eine Cursor-Paginierung:
{
"data": [],
"pagination": {
"cursor": null,
"hasMore": false,
"total": 0
}
}
Fehler verwenden ein strukturiertes error-Objekt:
{
"error": {
"code": "VALIDATION_INVALID_BODY",
"message": "Invalid request body"
}
}
Jede v2-Antwort enthält einen x-request-id-Header. Geben Sie diesen Wert an, wenn Sie sich bezüglich einer API-Anfrage an den Support wenden.
Umfang der Unterhaltungen
Schreibgeschützte Unterhaltungs-Endpunkte verwenden standardmäßig source=api_v2. Setzen Sie source=widget, um Widget- und Playground-Unterhaltungen zurückzugeben; Playground-Datensätze werden mit der Quelle widget gespeichert. Setzen Sie source=all, um API-v2-, Widget- und Playground-Unterhaltungen zurückzugeben. Die Ergebnisse bleiben stets auf den Agenten des authentifizierten Kontos beschränkt. Ein ungültiger source-Wert oder mehr als ein source-Abfrageparameter führt zu 400 VALIDATION_INVALID_BODY. Chat-Fortsetzung, Wiederholung, Feedback, Nachrichtenauflistung und nutzerbezogene Abfragen bleiben auf API-v2-Unterhaltungen beschränkt.
Health-Check
GET /api/v2/health
Der Health-Check erfordert keine Authentifizierung.
Erfolg: 200 OK
{
"status": "ok",
"timestamp": 1784332800
}
timestamp ist der aktuelle Unix-Zeitstempel in Sekunden.
Chat
POST /api/v2/agents/{agentId}/chat
Anfrage:
{
"message": "What plans do you offer?",
"conversationId": "optional-existing-conversation-id",
"userId": "optional-user-id",
"stream": true
}
| Field | Required | Notes |
|---|---|---|
message | Ja | 1 bis 32.000 Zeichen. |
conversationId | Nein | Setzt eine API-v2-Unterhaltung fort. Unbekannte IDs führen zu 404. |
userId | Nein | Stabile Endnutzer-ID zum Gruppieren von API-Unterhaltungen. Erlaubt sind Buchstaben, Zahlen, ., _ und -. |
stream | Nein | Standardmäßig true. Setzen Sie false für eine einzelne JSON-Antwort. |
Streaming-Antworten verwenden Server-Sent Events. Der Stream enthält die Ereignisse message-start, text-start, text-delta, text-end, message-metadata, finish und [DONE]. Bei einem Fehler im Stream oder im Completion-Hook wird ein error-Ereignis mit error.code gleich CHAT_STREAMING_ERROR gesendet; dieser nur für SSE geltende Protokollcode ist unabhängig vom strukturierten REST-Fehlerkatalog. message-metadata enthält bei erfolgreicher Persistierung die ID der Assistant-Nachricht sowie die Unterhaltungs-ID, die Nutzer-ID, den Abschlussgrund und die Nutzungsangaben. Der Wert messageId ist null, wenn keine Assistant-Nachricht persistiert wurde. Wenn die Antwort bei einer clientseitigen Aktion pausiert, sendet der Stream zusätzlich ein tool-call-Ereignis mit { "id", "name", "arguments" }; übermitteln Sie das Ergebnis an den Tool-Result-Endpunkt, um die Unterhaltung fortzusetzen — die Antwort auf diese Anfrage streamt die Fortsetzung.
Antworten ohne Streaming liefern:
{
"data": {
"id": "123",
"role": "assistant",
"parts": [{ "type": "text", "text": "..." }],
"pendingToolCall": null,
"metadata": {
"userMessageId": "122",
"conversationId": "abc123",
"userId": "user_123",
"finishReason": "stop",
"usage": { "credits": 1 }
}
}
}
Bei Antworten ohne Streaming sind data.id und metadata.userMessageId numerische Nachrichten-IDs, die als Strings serialisiert werden, oder null, wenn die zugehörige Nachricht nicht persistiert wurde. metadata.userId ist die übergebene bzw. gespeicherte Nutzer-ID oder null. pendingToolCall ist null, es sei denn, die Antwort wurde bei einem clientseitigen Tool-Aufruf pausiert; in diesem Fall enthält es { "id", "name", "arguments" } für den Tool-Result-Endpunkt.
Endpunktübersicht
| Method | Endpoint | Description | Reference |
|---|---|---|---|
| GET | /api/v2/health | API-Status prüfen. | Health-Check |
| GET | /api/v2/agents | Agenten auflisten. | Agenten und Einstellungen |
| POST | /api/v2/agents | Agenten erstellen. | Agenten und Einstellungen |
| GET | /api/v2/agents/{agentId} | Agenten abrufen. | Agenten und Einstellungen |
| PATCH | /api/v2/agents/{agentId} | Namen oder URL des Agenten aktualisieren. | Agenten und Einstellungen |
| DELETE | /api/v2/agents/{agentId} | Agenten löschen. | Agenten und Einstellungen |
| POST | /api/v2/agents/{agentId}/chat | Chat-Nachricht senden. | Chat |
| GET | /api/v2/agents/{agentId}/conversations | Unterhaltungen nach Quelle auflisten. | Unterhaltungen |
| GET | /api/v2/agents/{agentId}/conversations/export | Unterhaltungen mit Nachrichten exportieren. | Unterhaltungen |
| GET | /api/v2/agents/{agentId}/conversations/{conversationId} | Eine Unterhaltung nach Quelle abrufen. | Unterhaltungen |
| GET | /api/v2/agents/{agentId}/conversations/{conversationId}/messages | Nachrichten einer API-v2-Unterhaltung auflisten. | Unterhaltungen |
| POST | /api/v2/agents/{agentId}/conversations/{conversationId}/retry | Antwort einer API-v2-Assistant-Nachricht wiederholen. | Unterhaltungen |
| POST | /api/v2/agents/{agentId}/conversations/{conversationId}/tool-result | Clientseitiges Tool-Ergebnis übermitteln. | Unterhaltungen |
| PATCH | /api/v2/agents/{agentId}/conversations/{conversationId}/messages/{messageId}/feedback | Feedback zu einer Assistant-Nachricht setzen oder entfernen. | Unterhaltungen |
| GET | /api/v2/agents/{agentId}/users/{userId}/conversations | API-v2-Unterhaltungen eines Endnutzers auflisten. | Unterhaltungen |
| GET | /api/v2/agents/{agentId}/sources | Trainingsquellen auflisten. | Quellen und Training |
| POST | /api/v2/agents/{agentId}/sources/text | Textquelle hinzufügen. | Quellen und Training |
| POST | /api/v2/agents/{agentId}/sources/qna | Q&A-Quelle hinzufügen. | Quellen und Training |
| POST | /api/v2/agents/{agentId}/sources/url | URL-Quelle hinzufügen oder neu trainieren. | Quellen und Training |
| POST | /api/v2/agents/{agentId}/sources/file/upload-url | Signierte URLs für direkte Datei-Uploads erstellen. | Quellen und Training |
| POST | /api/v2/agents/{agentId}/sources/file | Hochgeladene Dateien registrieren und Verarbeitung starten. | Quellen und Training |
| DELETE | /api/v2/agents/{agentId}/sources/{documentId} | Quelle löschen. | Quellen und Training |
| GET | /api/v2/agents/{agentId}/contacts | Kontakte auflisten. | Kontakte |
| POST | /api/v2/agents/{agentId}/contacts | Einen Kontakt anhand der externen ID erstellen oder aktualisieren. | Kontakte |
| POST | /api/v2/agents/{agentId}/contacts/import | Kontakte im Bulk anlegen oder aktualisieren. | Kontakte |
| GET | /api/v2/agents/{agentId}/leads | Erfasste Leads auflisten. | Kontakte und Leads |
| GET/PATCH | /api/v2/agents/{agentId}/settings/ai | KI-Einstellungen lesen oder aktualisieren. | Agenten und Einstellungen |
| GET/PATCH | /api/v2/agents/{agentId}/settings/design | Design-Einstellungen lesen oder aktualisieren. | Agenten und Einstellungen |
| GET/PATCH | /api/v2/agents/{agentId}/settings/security | Sicherheitseinstellungen lesen oder aktualisieren. | Agenten und Einstellungen |
| GET/PATCH | /api/v2/agents/{agentId}/settings/notifications | Benachrichtigungseinstellungen lesen oder aktualisieren. | Agenten und Einstellungen |
| GET/PATCH | /api/v2/agents/{agentId}/settings/training | Trainingseinstellungen lesen oder aktualisieren. | Agenten und Einstellungen |
| GET | /api/v2/agents/{agentId}/channels/instagram | Instagram-Verbindung, Automatisierungen und Unterhaltungsstarter abrufen. | Instagram-Kanal |
| GET/PATCH | /api/v2/agents/{agentId}/channels/instagram/automations/{key} | Eine Instagram-Automatisierung lesen oder aktualisieren. | Instagram-Kanal |
| GET/PATCH | /api/v2/agents/{agentId}/channels/instagram/conversation-starters | Instagram-Unterhaltungsstarter lesen oder aktualisieren. | Instagram-Kanal |
| GET | /api/v2/agents/{agentId}/train | Trainingsstatus abrufen. | Quellen und Training |
| POST | /api/v2/agents/{agentId}/train | Neutraining von Web-Quellen starten. | Quellen und Training |
Feedback
Mit Feedback markieren Sie API-v2-Assistant-Nachrichten als positive, negative oder null. Das Anfrageschema, die Antwort und das Fehlerverhalten finden Sie unter Unterhaltungen, Nachrichten und Feedback.
Paginierung
Behandeln Sie Cursor als von der API zurückgegebene, undurchsichtige Tokens. Übergeben Sie den Wert pagination.cursor bei der nächsten Anfrage unverändert; konstruieren oder dekodieren Sie ihn nicht selbst.
| Query | Notes |
|---|---|
limit | Standardmäßig 20. Muss eine Ganzzahl von 1 bis 100 sein, sofern ein Endpunkt kein niedrigeres Maximum dokumentiert; der Unterhaltungsexport hat ein Maximum von 20. |
cursor | Undurchsichtiger Cursor aus der vorherigen Seite. Ungültige Cursor führen zu 400 VALIDATION_INVALID_BODY. |
Kontakte akzeptieren zusätzlich search. Leads akzeptieren die inklusiven ISO-8601-Datumsfilter createdAfter und createdBefore. Quellen akzeptieren sourceType mit web_crawl, file_upload, text_snippet oder qna_entry.
Cursor-Formate sind ein internes Implementierungsdetail. Clients müssen jeden Cursor als undurchsichtig behandeln und ihn unverändert übergeben, ohne ihn zu konstruieren oder zu dekodieren.
Häufige Fehler
| Code | Meaning |
|---|---|
AUTH_INVALID_API_KEY | Der Bearer-API-Schlüssel kann nicht validiert werden. |
SUBSCRIPTION_PLAN_REQUIRED | Der Workspace-Tarif enthält keinen API-Zugriff. |
AGENT_NOT_FOUND | Der Agent existiert nicht oder gehört nicht zum Konto des API-Schlüssels. |
VALIDATION_INVALID_BODY | Ein Anfragetext, Pfadwert, Query-Parameter, Limit oder Cursor hat die Validierung nicht bestanden. |
Den vollständigen API-v2-Fehlerkatalog mit allen 27 deklarierten Codes, HTTP-Status, Auslösern und reservierten Codes finden Sie dort.
Referenz
- Fehlerkatalog
- Agenten und Einstellungen
- Unterhaltungen, Nachrichten, Wiederholungen und Feedback
- Quellen und Training
- Kontakte und Leads
- Instagram-Kanal