Se connecter

API et intégrations

Pilotez une salle Cliqer Timer depuis vos propres outils via HTTP, et recevez un webhook signé dès que le show avance.

Chaque salle dispose d'une API HTTP. Démarrez et arrêtez des minuteurs, affichez des messages, ajoutez du temps et lisez le déroulé depuis un script, un système de contrôle de spectacle ou tout outil capable d'envoyer une requête web. Un webhook prévient votre système quand un minuteur démarre ou se termine.

La page Clés API avec un bouton Créer une clé et aucune clé pour l'instant
Clés API du compte, dans la section Team de votre tableau de bord.

Bien démarrer

Créer une clé API

Ouvrez Clés API et cliquez sur Créer une clé. Copiez-la tout de suite : elle n'est affichée qu'une seule fois. Consultez Équipe et clés API.

Trouver l'id de la salle

C'est la partie qui suit /timer/r/ dans l'adresse de la régie, par exemple https://cliqer.io/timer/r/<room>/control.

Envoyer une requête

Envoyez la clé avec chaque requête. ping vérifie que la salle existe.

L'API pilote la même salle que la régie : un appel depuis votre outil s'affiche sur tous les écrans en même temps.

Requêtes

Chaque appel a la forme https://cliqer.io/api/timer/v1/<room>/<action>. GET, POST, PUT et PATCH fonctionnent tous. Les paramètres passent dans la query string, ou dans un corps JSON en POST, PUT et PATCH ; le corps l'emporte quand les deux en contiennent. Les tirets dans le nom de l'action fonctionnent aussi : add-time équivaut à add_time. /api/timer/v0/ accepte les mêmes appels.

Envoyez la clé de l'une des façons suivantes, vérifiées dans cet ordre :

EmplacementExemple
En-tête AuthorizationAuthorization: Bearer <key>
En-tête x-api-keyx-api-key: <key>
Paramètre de requête api_key?api_key=<key>. À éviter autant que possible : les adresses finissent dans les journaux.
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"}'

Clés et permissions

La clé API de votre compte peut tout faire sur les salles dont vous êtes propriétaire. Une salle peut aussi avoir ses propres clés, chacune disposant de tout ou partie de ces trois permissions :

PermissionAutorise
LectureLes actions get_ et export.
PilotageTransport, temps, blackout, On air et messages.
ModificationSuppression, import, intents bruts et webhook.

Un appel qui requiert une permission que la clé n'a pas reçoit 401. Le secret d'une clé de salle n'est affiché qu'une seule fois, à sa création. Pour utiliser l'API, votre forfait doit l'inclure, voir Forfaits et limites.

Actions

timer_id désigne un minuteur par son id ; index le désigne par sa position, en comptant à partir de 1. Si les deux sont envoyés, timer_id l'emporte. Omettez les deux pour agir sur le minuteur en cours.

ActionRenvoie
get_roomTitre, date, fuseau horaire et paramètres.
get_statusCe qui est en cours.
get_timersLe déroulé.
get_messagesLes messages.
get_questionsLes questions du public.
get_connectionsLes appareils connectés.
get_logsLe journal de la salle. limit, offset.
exportToute la salle, en téléchargement cliqer-timer-<room>.json.

Les durées s'écrivent 30s, 5m, 1h, 250ms, ou sous forme d'un simple nombre de secondes. seconds peut remplacer amount, et un signe moins fait reculer. Les interrupteurs comme on, autostart et replace interprètent 0, false, off et no comme désactivé, et toute autre valeur comme activé. Omettez on dans blackout pour le basculer.

Réponses

Chaque réponse est en JSON : {"ok": true, "message": "<action>", "data": ...} en cas de succès, {"ok": false, "message": "...", "code": "..."} en cas d'échec.

StatutMessageRaison
400Either timer_id OR index are requiredselect sans minuteur.
400amount is required, like 30s, 5m or 1hDurée manquante ou illisible.
400Refused: invalidLa salle n'a pas pu l'appliquer.
401Access Denied: Valid API key requiredClé absente, clé erronée ou permission manquante.
403The API is not in this planLe forfait de la salle n'inclut pas l'API.
403Refused: forbidden, Refused: readOnly, Refused: limitReachedAction non autorisée, salle en lecture seule, ou limite du forfait atteinte.
404Room not found, Unknown action <name>, Timer not foundVérifiez l'id de la salle, l'action ou l'id du minuteur.
409Refused: staleEpochLa salle a changé pendant l'appel. Renvoyez-le.
429Too many requests. Please try again later.Limite de débit.
503Refused: authorityOfflineLa salle est dans la corbeille. Restaurez-la d'abord.

Limite de débit : 100 appels par minute et par clé ; les appels sans clé sont comptés par adresse. Chaque réponse contient RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset (nombre de secondes avant le début de la minute suivante).

Webhooks

Définir l'adresse

Appelez webhook avec une url en https. La réponse contient un secret commençant par whsec_. Conservez-le : il n'est affiché qu'une seule fois.

Recevoir les événements

Cliqer Timer envoie un POST à cette adresse dès qu'il se passe quelque chose dans la salle.

Vérifier la signature

Vérifiez chaque requête avant de lui faire confiance.

Supprimer le webhook

Appelez webhook sans url. L'adresse et son secret sont tous deux supprimés.

ÉvénementQuand
timerStartedUn minuteur démarre.
timerEndedUn minuteur atteint zéro.
wrapUpYellowUn minuteur atteint son seuil d'alerte jaune.
wrapUpRedUn minuteur atteint son seuil d'alerte rouge.
messageShownUn message est affiché.

Le corps est {"event", "roomId", "timestamp", "payload"}. L'en-tête x-cliqer-timestamp contient l'heure Unix en secondes, et x-cliqer-signature contient sha256= suivi du HMAC-SHA256 en hexadécimal de <timestamp>.<body>, calculé avec votre secret.

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

Calculez la signature sur le corps brut, exactement tel qu'il a été reçu, avant toute analyse JSON. La fenêtre de cinq minutes est un choix qui vous appartient ; elle empêche de rejouer une ancienne requête.

La livraison se fait en une seule tentative, avec un délai d'expiration de 5 secondes. Les redirections ne sont pas suivies, et une adresse qui pointe vers un réseau privé est ignorée. Si un événement manqué a de l'importance, lisez get_status pour vous remettre à jour.

Liens courts

GET https://cliqer.io/api/timer/link/<code> convertit le code d'un lien court en sa salle : {"ok": true, "data": {"roomId", "link"}}, ou 404 Link not found pour un code inconnu, révoqué ou expiré, ou pour un mauvais mot de passe. Pour un lien protégé par mot de passe, envoyez celui-ci dans l'en-tête x-link-password, jamais dans l'adresse.

Companion et Stream Deck

Il n'existe pas de module Companion ni de plugin Stream Deck pour les salles Cliqer Timer. Le module Generic HTTP de Bitfocus Companion peut appeler les actions ci-dessus. Le minuteur intégré à l'application de bureau Cliqer dispose de sa propre API REST et de la prise en charge de Stream Deck, voir Timer (bureau) et Minuteur de l'hôte.

FAQ

Et ensuite

Hors ligne et fiabilité

Ce qui se passe quand le réseau tombe.

Forfaits et limites

Les forfaits qui incluent l'API.