Zum Inhalt springen
Zur App

Batch

Öffnen in ChatGPT

Für Importe und Massenänderungen schickst du bis zu 100 Operationen in einem Aufruf.

POST /v1/publisher/calendars/{calendar_id}/events/batch
Terminal-Fenster
curl https://api.kalender-sync.de/v1/publisher/calendars/$KS_CAL/events/batch \
-H "Authorization: Bearer $KS_KEY" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{ "method": "PUT", "external_id": "wp-1482", "event": { "title": "Sunset Yoga", "start": "2026-11-12T18:00:00" } },
{ "method": "PUT", "external_id": "wp-1490", "event": { "title": "", "start": "2026-11-13T18:00:00" } },
{ "method": "DELETE", "external_id": "wp-1311" }
]
}'
FeldRegeln
operations1 bis 100 Einträge
operations[].methodPUT (anlegen oder ändern) oder DELETE
operations[].external_idwie beim Einzel-PUT
operations[].eventbei PUT: der Termin mit denselben Feldern wie beim Einzel-PUT
sync_idoptional: ordnet die Operationen einem Full Sync zu

Der Request-Body darf bis zu 1 MB groß sein.

Immer 200 OK, sofern der Aufruf selbst gültig ist. Das Ergebnis jeder Operation steht in results, in derselben Reihenfolge:

{
"results": [
{ "external_id": "wp-1482", "status": 201, "changed": true, "sequence": 0 },
{
"external_id": "wp-1490",
"status": 400,
"error": {
"code": "invalid_request",
"errors": [{ "field": "title", "code": "too_small", "message": "String must contain at least 1 character(s)" }]
}
},
{ "external_id": "wp-1311", "status": 204 }
]
}
statusBedeutung
201Termin angelegt
200Termin geändert oder unverändert (changed: false)
204Termin gelöscht (oder war schon weg)
4xxFehler bei dieser Operation, Details in error.code, error.message, error.errors

Mögliche Fehlercodes je Operation: invalid_request, invalid_external_id, event_limit_reached.

  • Die Operationen laufen der Reihe nach. Eine fehlerhafte Operation hält die anderen nicht auf; prüfe also jedes Ergebnis.
  • Ein Batch ist keine Transaktion. Bricht die Verbindung ab, sind manche Operationen eventuell schon durch. Schick den Batch einfach noch einmal: PUT und DELETE sind idempotent.
  • Der Feed wird nach dem Batch einmal aktualisiert, nicht pro Operation.
  • Jeder Batch zählt als eine Anfrage für das Rate Limit. Für Importe ist Batch deshalb der richtige Weg.

Fehler, die den ganzen Aufruf betreffen (Key, Kalender, mehr als 100 Operationen, Body zu groß, Sync abgelaufen), kommen wie gewohnt als Problem-Antwort mit HTTP-Status. → Fehler