calovo / Integrationen / JSON API

calovo JSON API v2

Die JSON API v2 ist die stabile, accountbezogene Schnittstelle für Vereine und andere Premium-Kunden. Sie liefert die freigegebenen Kalender und Termine eines Kunden für serverseitige Integrationen.

Version 2.0 JSON über HTTPS Bearer-Token

Freischaltung: Die Integration ist für Premium- und individuell vereinbarte Pakete vorgesehen und wird zunächst durch die calovo-Administration aktiviert. Das dabei erzeugte Token wird nur einmal angezeigt.

Schnellstart

Das Token gehört in den HTTP-Header, niemals in URL, Query-Parameter, Browser-Code oder Logs.

curl --request GET \
  --url 'https://calovo.de/api/v2/calendar-feeds?limit=20' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer calovo_v2.ACCOUNT.SECRET'

Endpunkte

MethodePfadFunktion
GET/api/v2/calendar-feedsVeröffentlichte Kalender des Accounts
GET/api/v2/calendar-feeds/{id}Ein Kalender des Accounts
GET/api/v2/calendar-feeds/{id}/eventsFreigegebene Termine eines Kalenders
GET/api/v2/openapi.jsonMaschinenlesbare OpenAPI-3-Beschreibung

Filter und Seitennavigation

  • page: Seite ab 1; Standardwert 1.
  • limit: 1 bis 100 Ergebnisse pro Seite; Standardwert 50.
  • date_from und date_to: inklusive Zeitraumgrenzen im Format YYYY-MM-DD für Termine.
  • Ohne Zeitraum werden Termine ab heute bis 18 Monate in die Zukunft geliefert; maximal sind 731 Tage pro Abfrage erlaubt.
  • Erzeugt ein wiederkehrender Spezialkalender in diesem Fenster mehr als 1.200 Vorkommen, antwortet die API mit 422 result_window_too_large; der Zeitraum ist dann zu verkleinern.
  • Nicht dokumentierte Query-Parameter werden mit 422 invalid_parameter abgelehnt, damit Tippfehler nicht unbemerkt auf Standardwerte zurückfallen.

Listen enthalten meta.pagination sowie navigierbare Links für self, first, last, prev und next.

Antwortformat

{
  "data": [],
  "meta": {
    "api_version": "2.0",
    "generated_at": "2026-07-17T12:00:00+00:00",
    "request_id": "67d7d160-43ca-47ce-ac31-69bce158c62e",
    "pagination": {
      "current_page": 1,
      "per_page": 50,
      "total": 0,
      "last_page": 1
    }
  },
  "links": { "self": "https://calovo.de/api/v2/calendar-feeds?page=1&limit=50" }
}

Fehler werden konsistent als {"errors":[...]} mit HTTP-Status, stabilem Fehlercode und Beschreibung ausgegeben.

Bei Kalendern und Terminen enthält description Klartext. html_description kann redaktionelles HTML enthalten und muss vor einer Ausgabe im Browser nach den Regeln des Zielsystems bereinigt oder über eine Positivliste gefiltert werden.

Abgesagte Termine bleiben mit status: "cancelled" in der Antwort, damit Zielsysteme bestehende Einträge zuverlässig aktualisieren können. Reguläre Termine besitzen status: "confirmed".

Bei Ganztagsterminen markieren starts_at und ends_at den Anfang und das inklusive Ende der lokalen Kalendertage in Europe/Berlin, jeweils als UTC-Zeitstempel ausgegeben.

Betrieb und Synchronisation

  • Das Standardlimit beträgt 120 Requests pro Minute und Token; da ein Account genau ein aktives Token besitzt, entspricht das dem Account-Limit. Zusätzlich schützt ein höheres IP-Abuse-Limit die Authentifizierung.
  • Erfolgreiche GET-Antworten besitzen ein ETag. Mit If-None-Match erhalten Clients bei unveränderten Daten 304 Not Modified.
  • X-Request-ID und meta.request_id enthalten dieselbe Korrelations-ID. Bei Supportfällen bitte diese ID mitsenden.
  • Clients dürfen eine eigene, maximal 100 Zeichen lange X-Request-ID aus Buchstaben, Ziffern sowie ._:- mitsenden; sichere Werte werden unverändert zurückgegeben.
  • Antworten sind als private markiert. Tokens und Antworten dürfen nicht in öffentlichen oder gemeinsam genutzten Caches landen.
  • Eine Synchronisation sollte jede Seite vollständig als Snapshot abgleichen. Fehlt ein zuvor bekannter Termin dauerhaft, ist er im Zielsystem zu entfernen.
  • Bei 429 gilt der Header Retry-After; bei 5xx exponentiell mit Zufallsanteil wiederholen.

Versionierung und Legacy-v1

Bestehende produktive v1-Integrationen unter /json/{id|key} bleiben kompatibel und getrennt freigeschaltet. Neue Kundenintegrationen sollen v2 verwenden. Eine spätere inkompatible Änderung erhält einen neuen Versionspfad; additive Felder können innerhalb von v2 ergänzt werden.

Legacy-Unterlagen: Swagger v1 und PDF-Kurzdokumentation v1.

Vollständiger Vertrag: OpenAPI JSON. Für Freischaltung, Token-Rotation oder höhere Last bitte den calovo-Support kontaktieren.






NAME

Google Calendar

back

Please note: Updating calendar entries in your Google Calendar may take up to 72 hours.

Please watch our HowTo video before proceeding.

Android

To add your calendar to an Android device,
please use our app:

Get it on Google Play


Then come back to this
page and click on next.

back

Insert calendar manually

If your calendar format is not available, you can copy the link here to insert it manually.

By using this link
you accept our terms of use

Accept & Show link back

You need help?
That's how it works

Download

You can also download the calendar as a static ICS file.
WARNING: With this option you will not receive updates and must download the file regularly to stay up to date.


By clicking on "Download"
you accept our terms of use

Download
back

You need help?
That's how it works

Protected calendar

The organization reviews who may subscribe to this calendar.

The details are sent to the organization shown and used to decide access. privacy policy

back

Get ready...

100% free of charge.
Without registration. Few clicks.

As a rule, we supplement the appointments within the calfeeds with additional services, if available. This includes, for example, supplementary information, links (e. g. ticketing, betting, live ticker, etc.) and, in some cases, concrete advertising content. We try to offer you the most relevant services possible. By confirming your selection, you accept the disclaimer and agree to receive advertising content within the subscribed calendar dates, if applicable.

Should you need further help,
please visit our support area!

back

disclaimer of liability

The appointment data originates from external data service providers, is editorial content from calovo or is entered into the calovo system by the respective account holders and automatically made available to subscribers in their personal calendars. We cannot accept any liability for the accuracy, completeness and timeliness of the information. In addition, we shall only be liable for damages resulting from a grossly negligent or intentional breach of duty and for damages resulting from injury to life, limb or health caused by a slightly negligent breach of duty.

back

Imprint


Imprint text


back

Imprint


close