Überblick
Antworten und Fehler
Aufbau der Antworten, Seiten, Sperren gegen Überschreiben und Fehlercodes.
Alle Adressen unter /spaces/{space} antworten im selben Aufbau. Die Wissensdatenbank weicht davon noch ab, das steht weiter unten.
Einzelne Ressource
{
"data": {
"id": "0199a3c2-7d4e-7b21-9f3a-2c5e8d1b4a70",
"name": "Empfang",
"updated_at": "2026-09-21T10:15:00+02:00"
}
}Listen
Listen tragen neben data das Feld meta. Mit ?page= blätterst du, mit ?per_page= bestimmst du die Seitengröße (Standard 50, höchstens 200). Auf der letzten Seite ist next_page gleich null.
{
"data": [
"…"
],
"meta": {
"page": 1,
"per_page": 50,
"total": 132,
"next_page": 2
}
}Schreiben
POST, PATCH und DELETE liefern die Ressource nach dem Schreiben in data. Bei Ressourcen, die erst veröffentlicht werden müssen, steht in sync der Stand der Veröffentlichung.
Bei PATCH ändern sich nur die Felder, die du mitschickst. Verschachtelte Objekte wie behavior.values oder das recipe eines Tools werden nach Schlüsseln zusammengeführt, Listen wie tool_ids werden vollständig ersetzt.
Schutz vor Überschreiben
Schicke bei PATCH und DELETE das Feld expected_updated_at mit, also updated_at aus deinem letzten Lesen. Hat inzwischen jemand anderes die Ressource geändert, lehnt die API ab, statt dessen Änderung stillschweigend zu überschreiben:
{
"code": "stale",
"message": "The record changed since you read it.",
"current": {
"…": "…"
}
}Lies dann current, führe deine Änderung darauf aus und schicke sie erneut.
Fehler
Fehler tragen immer code und message. Validierungsfehler nennen zusätzlich jedes ungültige Feld mit seinem Pfad:
{
"code": "validation",
"message": "1 field is invalid.",
"errors": [
{
"path": "behavior.values.tone.closeness",
"code": "invalid_enum",
"message": "Must be one of formal, personal."
}
]
}| Status | code |
Bedeutung |
|---|---|---|
| 400 | invalid_json |
Der Body ist kein gültiges JSON. |
| 401 | unauthenticated |
Schlüssel fehlt, ist falsch oder gelöscht. |
| 403 | forbidden |
Der Schlüssel darf das in diesem Space nicht. |
| 404 | not_found |
Die Ressource gibt es in diesem Space nicht, oder die Adresse ist falsch. |
| 405 | method_not_allowed |
Die Adresse gibt es, aber nicht mit dieser Methode. |
| 409 | stale |
expected_updated_at passt nicht mehr. current enthält den aktuellen Stand. |
| 409 | referenced |
Löschen abgelehnt, weil noch etwas darauf verweist. references nennt, was. |
| 422 | validation |
Felder ungültig. errors nennt jedes Feld mit Pfad. |
| 429 | rate_limited |
Mehr als 60 Anfragen pro Minute. Retry-After beachten. |
| 500 | server_error |
Fehler bei uns. Mit X-Request-Id an den Support wenden. |
Fehler eines Drittanbieters, etwa einer angebundenen Schnittstelle, kommen unverändert unter code: upstream mit Status und Meldung des Anbieters zurück.
Köpfe
Jede Antwort trägt X-RateLimit-Limit, X-RateLimit-Remaining und X-Request-Id. Die Request-ID hilft dem Support, einen Aufruf in unseren Protokollen zu finden.
Wissensdatenbank
Die Adressen unter /knowledge sind älter und folgen noch dem vorigen Aufbau: Listen tragen neben data die Felder links und meta, Fehler nur message. Jede Antwort zu einem Dokument oder Ordner enthält sync_status und sync_error. Dateien dürfen bis 20 MB groß sein.