Anmelden

API und Integrationen

Steuern Sie einen Raum in Cliqer Timer per HTTP aus Ihren eigenen Tools und erhalten Sie einen signierten Webhook, sobald sich in der Show etwas tut.

Jeder Raum hat eine HTTP-API. Starten und stoppen Sie Timer, zeigen Sie Nachrichten an, fügen Sie Zeit hinzu und lesen Sie den Ablaufplan aus, und zwar aus einem Skript, einem Showsteuerungssystem oder allem, was eine Webanfrage senden kann. Ein Webhook informiert Ihr System, wenn ein Timer startet oder endet.

Die Seite API-Schlüssel mit der Schaltfläche Schlüssel erstellen und noch ohne Schlüssel
API-Schlüssel des Kontos, unter Team in Ihrem Dashboard.

Erste Schritte

API-Schlüssel erstellen

Öffnen Sie API-Schlüssel und klicken Sie auf Schlüssel erstellen. Kopieren Sie ihn sofort: Er wird nur einmal angezeigt. Siehe Team und API-Schlüssel.

Raum-ID finden

Das ist der Teil nach /timer/r/ in der Adresse des Kontrollraums, zum Beispiel https://cliqer.io/timer/r/<room>/control.

Einen Aufruf senden

Senden Sie den Schlüssel mit jeder Anfrage. ping prüft, ob der Raum existiert.

Die API steuert denselben Raum wie der Kontrollraum: Ein Aufruf aus Ihrem Tool erscheint gleichzeitig auf allen Bildschirmen.

Anfragen

Jeder Aufruf lautet https://cliqer.io/api/timer/v1/<room>/<action>. GET, POST, PUT und PATCH funktionieren alle. Parameter stehen im Query-String oder bei POST, PUT und PATCH in einem JSON-Body; enthalten beide einen Wert, gilt der Body. Bindestriche im Aktionsnamen funktionieren ebenfalls, add-time entspricht also add_time. /api/timer/v0/ akzeptiert dieselben Aufrufe.

Senden Sie den Schlüssel auf eine dieser Arten, geprüft in dieser Reihenfolge:

WoBeispiel
Authorization-HeaderAuthorization: Bearer <key>
x-api-key-Headerx-api-key: <key>
api_key-Query?api_key=<key>. Vermeiden Sie das nach Möglichkeit: Adressen landen in Logs.
curl -X POST https://cliqer.io/api/timer/v1/<room>/add_time \
  -H "Authorization: Bearer $CLIQER_KEY" \
  -H "content-type: application/json" \
  -d '{"timer_id": "<timer>", "amount": "2m"}'

Schlüssel und Berechtigungen

Mit dem API-Schlüssel Ihres Kontos können Sie in allen Räumen, die Ihnen gehören, alles tun. Ein Raum kann außerdem eigene Schlüssel haben, jeweils mit einer Auswahl aus drei Berechtigungen:

BerechtigungErlaubt
LesenDie get_-Aktionen und export.
Show-SteuerungTransportfunktionen, Zeit, Blackout, On Air und Nachrichten.
BearbeitenLöschen, Importieren, Raw-Intents und den Webhook.

Ein Aufruf, der eine Berechtigung benötigt, die dem Schlüssel fehlt, erhält 401. Das Secret eines Raumschlüssels wird nur einmal angezeigt, bei seiner Erstellung. Damit Sie die API überhaupt nutzen können, muss sie in Ihrem Plan enthalten sein, siehe Pläne und Limits.

Aktionen

timer_id wählt einen Timer über seine ID aus; index wählt ihn über seine Position aus, gezählt ab 1. Werden beide gesendet, gilt timer_id. Lassen Sie beide weg, um den aktuellen Timer anzusprechen.

AktionRückgabe
get_roomTitel, Datum, Zeitzone und Einstellungen.
get_statusWas gerade läuft.
get_timersDen Ablaufplan.
get_messagesDie Nachrichten.
get_questionsPublikumsfragen.
get_connectionsVerbundene Geräte.
get_logsDas Raumprotokoll. limit, offset.
exportDen gesamten Raum als Download cliqer-timer-<room>.json.

Beträge sind 30s, 5m, 1h, 250ms oder eine einfache Zahl in Sekunden. seconds funktioniert anstelle von amount, und ein Minuszeichen geht rückwärts. Schalter wie on, autostart und replace werten 0, false, off und no als aus und alles andere als ein. Lassen Sie on bei blackout weg, um den Blackout umzuschalten.

Antworten

Jede Antwort ist JSON: {"ok": true, "message": "<action>", "data": ...} bei Erfolg, {"ok": false, "message": "...", "code": "..."} bei einem Fehler.

StatusMeldungGrund
400Either timer_id OR index are requiredselect ohne Timer.
400amount is required, like 30s, 5m or 1hFehlender oder nicht lesbarer Betrag.
400Refused: invalidDer Raum konnte die Änderung nicht anwenden.
401Access Denied: Valid API key requiredKein Schlüssel, ein falscher Schlüssel oder eine fehlende Berechtigung.
403The API is not in this planDer Plan des Raums enthält keine API.
403Refused: forbidden, Refused: readOnly, Refused: limitReachedNicht erlaubt, ein schreibgeschützter Raum oder ein Planlimit.
404Room not found, Unknown action <name>, Timer not foundPrüfen Sie die Raum-ID, die Aktion oder die Timer-ID.
409Refused: staleEpochDer Raum hat sich während des Aufrufs weiterbewegt. Senden Sie den Aufruf erneut.
429Too many requests. Please try again later.Ratenlimit.
503Refused: authorityOfflineDer Raum liegt im Papierkorb. Stellen Sie ihn zuerst wieder her.

Ratenlimit: 100 Aufrufe pro Minute und Schlüssel; Aufrufe ohne Schlüssel werden pro Adresse gezählt. Jede Antwort enthält RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset (Sekunden, bis die Minute neu beginnt).

Webhooks

Adresse festlegen

Rufen Sie webhook mit einer https-Adresse als url auf. Die Antwort enthält ein secret, das mit whsec_ beginnt. Speichern Sie es: Es wird nur einmal angezeigt.

Ereignisse empfangen

Cliqer Timer sendet einen POST an diese Adresse, wenn im Raum etwas passiert.

Signatur prüfen

Verifizieren Sie jede Anfrage, bevor Sie ihr vertrauen.

Webhook entfernen

Rufen Sie webhook ohne url auf. Die Adresse und ihr Secret werden beide gelöscht.

EreignisWann
timerStartedEin Timer startet.
timerEndedEin Timer erreicht null.
wrapUpYellowEin Timer erreicht seine gelbe Wrap-up-Marke.
wrapUpRedEin Timer erreicht seine rote Wrap-up-Marke.
messageShownEine Nachricht wird angezeigt.

Der Body ist {"event", "roomId", "timestamp", "payload"}. Der Header x-cliqer-timestamp enthält die Unix-Zeit in Sekunden, und x-cliqer-signature enthält sha256= gefolgt vom hexadezimalen HMAC-SHA256 von <timestamp>.<body>, mit Ihrem Secret als Schlüssel.

# Recompute the signature of a saved body.
printf '%s.%s' "$TIMESTAMP" "$(cat body.json)" \
  | openssl dgst -sha256 -hmac "$WHSEC" -hex

Signieren Sie den Rohbody genau so, wie er angekommen ist, vor jedem JSON-Parsing. Das Fünf-Minuten-Fenster legen Sie selbst fest; es verhindert, dass eine alte Anfrage erneut eingespielt wird.

Die Zustellung erfolgt mit einem einzigen Versuch und 5 Sekunden Timeout. Weiterleitungen werden nicht verfolgt, und eine Adresse, die in ein privates Netzwerk auflöst, wird verworfen. Wenn ein verpasstes Ereignis wichtig ist, lesen Sie get_status, um den aktuellen Stand abzurufen.

GET https://cliqer.io/api/timer/link/<code> löst einen Kurzlink-Code in seinen Raum auf: {"ok": true, "data": {"roomId", "link"}}, oder 404 Link not found bei einem unbekannten, widerrufenen oder abgelaufenen Code oder einem falschen Passwort. Bei einem Link mit Passwort senden Sie dieses im Header x-link-password, niemals in der Adresse.

Companion und Stream Deck

Es gibt kein Companion-Modul und kein Stream Deck Plugin für Räume in Cliqer Timer. Das Generic HTTP Modul von Bitfocus Companion kann die oben genannten Aktionen aufrufen. Der eigene Timer der Cliqer Desktop-App hat eine eigene REST-API und Unterstützung für Stream Deck, siehe Timer (Desktop) und Host-Timer.

Häufige Fragen

Weiter

Offline und Zuverlässigkeit

Was passiert, wenn das Netzwerk ausfällt.

Pläne und Limits

Welche Pläne die API enthalten.