Batch
Für Importe und Massenänderungen schickst du bis zu 100 Operationen in einem Aufruf.
POST /v1/publisher/calendars/{calendar_id}/events/batchcurl 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" } ] }'| Feld | Regeln |
|---|---|
operations | 1 bis 100 Einträge |
operations[].method | PUT (anlegen oder ändern) oder DELETE |
operations[].external_id | wie beim Einzel-PUT |
operations[].event | bei PUT: der Termin mit denselben Feldern wie beim Einzel-PUT |
sync_id | optional: ordnet die Operationen einem Full Sync zu |
Der Request-Body darf bis zu 1 MB groß sein.
Antwort
Abschnitt betitelt „Antwort“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 } ]}status | Bedeutung |
|---|---|
201 | Termin angelegt |
200 | Termin geändert oder unverändert (changed: false) |
204 | Termin gelöscht (oder war schon weg) |
4xx | Fehler bei dieser Operation, Details in error.code, error.message, error.errors |
Mögliche Fehlercodes je Operation: invalid_request, invalid_external_id, event_limit_reached.
Verhalten
Abschnitt betitelt „Verhalten“- 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:
PUTundDELETEsind 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