Zum Inhalt springen
Orbinaut Docs

Quickstart

Dieser Einstieg holt veröffentlichte Kurse über die öffentliche REST-API. Voraussetzung ist ein Workspace, in dem du Owner oder Admin bist, sowie mindestens ein veröffentlichter Kurs mit geplantem Termin.

  1. Im Dashboard Integrationen öffnen.
  2. Einen Namen vergeben, zum Beispiel Kurskatalog.
  3. Den Scope courses:read wählen.
  4. API-Key erstellen wählen.
  5. Den einmal angezeigten Wert beginnend mit orb_api_ lokal speichern.

Der Klartext ist danach nicht mehr lesbar. Bei Verlust den Key rotieren und den neuen Wert verwenden. Den Key nicht in Git, Tickets, Screenshots oder Client-Code ablegen.

Für Buchungen zusätzlich bookings:read setzen. Name und E-Mail der Teilnehmenden erfordern participants:read (setzt bookings:read voraus).

Ersetze YOUR_API_KEY durch den gespeicherten Key. Die Basis-URL der Produktions-API ist https://api.orbinaut.ccl-dev.com.

Terminal-Fenster
curl -sS \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
https://api.orbinaut.ccl-dev.com/api/public/v1/courses

Erwartete erfolgreiche Antwort:

{
"data": [
{
"id": "course-run-id",
"title": "Aquarellkurs",
"description": "Einführung ins Aquarell",
"sessions": [
{
"id": "session-id",
"startsAt": "2026-09-01T17:00:00.000Z",
"durationMinutes": 90,
"timeZone": "Europe/Berlin",
"location": "Studio Mitte"
}
]
}
]
}

Die Antwort darf nicht zwischengespeichert werden (Cache-Control: private, no-store).

Derselbe Aufruf mit einem Key, der bookings:read besitzt:

Terminal-Fenster
curl -sS \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
https://api.orbinaut.ccl-dev.com/api/public/v1/bookings

Ohne participants:read enthält jedes Element id, courseRunId, source, status, createdAt und updatedAt. Mit dem Scope kommt participant: { "name", "email" } hinzu. Es gibt keine Cursor-Pagination; die API liefert höchstens die 100 neuesten Buchungen.

Fehlender oder ungültiger Key:

{
"error": {
"code": "invalid_api_key",
"message": "A valid API key is required"
}
}

Key ohne den nötigen Scope (HTTP 403):

{
"error": {
"code": "missing_scope",
"message": "The bookings:read scope is required"
}
}

Mehr als 120 Anfragen in 60 Sekunden liefern HTTP 429 mit error.code rate_limit_exceeded und Header Retry-After: 60.

Die vollständige Feldliste steht in der Referenz. Das OpenAPI-Dokument liegt unter /openapi/public-v1.yaml.