Référence API

Un seul endpoint, une seule requête POST. Envoyez du JSON à l'URL de webhook de votre canal et nous gérons les notifications, la mise en forme et la distribution.

Envoyer une alerte

Déclenchez une nouvelle alerte dans un canal spécifique. C'est l'endpoint principal pour envoyer des notifications depuis votre application.

POST https://zenhook.dev/api/webhook/{token}
Exemple de requête
curl -X POST https://zenhook.dev/api/webhook/abc123def456 \
  -H "Content-Type: application/json" \
  -d '{
    "title": "New User Signup",
    "level": "success",
    "emoji": "🎉",
    "source": "My App",
    "message": "[email protected] just joined your workspace.",
    "linkUrl": "https://myapp.com/admin/users/42",
    "linkText": "View Profile"
  }'

Paramètres de chemin

token string Requis
Le jeton de webhook unique de votre canal. Vous le trouverez dans les paramètres du canal.

Corps de la requête

title string Requis
Un bref résumé de l'alerte. Utilisé comme titre dans les notifications. 200 caractères maximum.
level enum
Niveau de gravité de l'alerte : info, success, warning, error. Par défaut info.
message string
Corps de texte détaillé. 5 000 caractères maximum.
emoji string
Emoji personnalisé affiché à côté du titre. Accepte un caractère unicode ("🚀"), un nom ("rocket"), ou un shortcode (":rocket:"). Les noms et shortcodes sont convertis à l'ingestion. Les noms inconnus sont ignorés plutôt qu'affichés comme texte littéral. Noms reconnus : rocket · siren · warning · check · cross · fire · bug · zap · bell · tada · sparkles · envelope · chat · phone · megaphone · wave · eyes · heart · thumbsup · office · door · house · factory · lock · unlock · key · link · package · gear · wrench · shield · money · chart · clock · hourglass · flag · star · target · pin · tag · computer · server · database · cloud · bulb · gem · anchor · pick · bank.
fields array
Objets clé-valeur pour les données structurées. Chaque objet contient label et value.
linkUrl string
URL d'un lien d'appel à l'action cliquable affiché sous le titre.
linkText string
Libellé du bouton du lien. Par défaut "View" si linkUrl est défini.
attachments array
Jusqu'à 8 médias affichés dans l'alerte. Chaque objet prend une url et, en option, un type (image, video ou audio) et une légende name. Zenhook récupère chaque URL et réhéberge le fichier sur son propre CDN — vos médias se chargent vite et vos URLs sources restent privées. Formats acceptés : PNG, JPEG, GIF, WebP, AVIF, MP4, WebM, MP3, WAV, M4A, Ogg (le SVG est refusé). Max 10 Mo par image, 25 Mo audio, 50 Mo vidéo.
source string
Nom de l'auteur affiché dans l'en-tête de l'alerte (par ex. "GitHub", "Stripe"). Par défaut "Webhook".
metadata object
Objet JSON arbitraire affiché dans une section dépliable "Raw Payload" avec copie dans le presse-papiers. 10 Ko maximum.

Réponses

201 Created

Alerte reçue et mise en file d'attente pour distribution.

json
{
  "success": true,
  "alertId": "clx1234567890abcdef",
  "queuedAt": "2024-03-22T12:00:00Z"
}

Données structurées

Utilisez le tableau fields pour inclure des métadonnées riches affichées dans le tableau de bord et les alertes par e-mail.

Exemple avec fields
{
  "title": "Build Failed",
  "level": "error",
  "fields": [
    { "label": "Branch", "value": "main" },
    { "label": "Commit", "value": "abc123f" },
    { "label": "Author", "value": "John Smith" },
    { "label": "Error", "value": "npm install timed out after 300s" }
  ],
  "attachments": [
    { "url": "https://ci.example.com/runs/123/screenshot.png", "type": "image" }
  ],
  "linkUrl": "https://github.com/org/repo/actions/runs/123",
  "linkText": "View Logs"
}

Relire les alertes

L'endpoint de webhook ci-dessus est public et en écriture seule — toute personne disposant du jeton du canal peut y publier. Pour lister les alertes, les marquer comme lues ou construire une intégration qui les consomme, utilisez l' API de lecture authentifiée avec un jeton Bearer.