Aller au contenu principal
Zling

Documentation de l'API

Dernière mise à jour : mai 2026 — Par , fondateur de LXD Corp

Zling vous permet de recevoir des notifications push sur votre iPhone via un simple appel HTTP. Les URL complètes de vos webhooks sont uniques et disponibles directement au sein de l'application iOS Zling.

Fonctionnement de vos webhooks

Dans l'application Zling, vous trouverez deux types de webhooks :

  • Webhook partagé (br_usr_...) : envoie la notification vers tous vos appareils en une seule fois.
  • Webhook appareil (br_dev_...) : cible un seul appareil spécifique.

Le domaine de votre webhook ressemble à ceci :

https://<votre-projet>.convex.site/v1/br_usr_abc123def456ghi789

⚠️ Attention : toute personne possédant ce lien complet peut vous envoyer des notifications. Gardez vos secrets privés. En cas de fuite, vous pouvez facilement révoquer et générer de nouveaux secrets dans l'onglet « Paramètres » ou en cliquant sur « Rotation » dans l'application.

Envoyer une notification push (Texte brut)

La méthode la plus rapide est d'effectuer une requête POST avec du texte brut (text/plain). Ce texte sera assigné comme message principal de l'alerte.

Exemple avec cURL

curl -X POST https://<votre-projet>.convex.site/v1/br_usr_abc123def456ghi789 \
  -H "Content-Type: text/plain" \
  -d 'Déploiement terminé avec succès ! 🚀'

Vous pouvez également déclencher une notification via une simple requête GET, pratique pour tester l'alerte manuellement depuis un navigateur. Passez le contenu via les paramètres message et title :

https://<votre-projet>.convex.site/v1/br_usr_abc123def456ghi789?message=Test%20rapide%20!&title=Salut

Personnalisation avancée avec JSON

Pour davantage de flexibilité (titres, images, liens, priorités), envoyez un payload formaté en JSON (application/json).

Exemple cURL

curl -X POST https://<votre-projet>.convex.site/v1/br_usr_abc123def456ghi789 \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Alerte de surveillance",
    "subtitle": "Serveur de production",
    "message": "L\'utilisation du CPU a dépassé les 90%.",
    "thread_id": "monitoring-alerts",
    "interruption_level": "time-sensitive",
    "open_url": "https://dashboard.mon-app.com"
  }'

Liste complète des paramètres

Tous les paramètres sont optionnels. L'idéal est de toujours renseigner un message.

ParamètreTypeDescription
titlestringTitre principal de la notification.
subtitlestringSous-titre affiché sous le titre (iOS uniquement).
messagestringCorps textuel principal. Tronqué à 2 000 caractères côté serveur.
thread_idstringIdentifiant de groupage. Permet d'empiler plusieurs notifications similaires dans une seule pile sur l'écran de verrouillage iOS.
open_urlstringURL (https://…) ou deep link (myapp://…) ouvert au tap sur la notification.
image_urlstringURL d'une image affichée en pièce jointe dans la notification.
expiration_datedate ISO 8601Date de péremption (ex: 2026-04-23T09:00:00.000Z). La notification sera ignorée par APNs si l'appareil n'a pas eu de réseau avant cette date.
filter_criteriastringClé de dérogation pour les Modes de Concentration (Focus) iOS.
interruption_levelstringComportement d'interruption. Valeurs acceptées : passive, active, time-sensitive.

Niveaux d'interruption (interruption_level)

ValeurComportement
passiveAjouté silencieusement au centre de notifications, sans son ni allumage d'écran.
activeAllume l'écran et produit une vibration/son standard (comportement par défaut).
time-sensitiveTraverse les résumés planifiés et certains blocages de concentration.
Note : le niveau critical n'est pas supporté par Zling. Il nécessite une autorisation spéciale Apple réservée aux applications médicales, de sécurité domestique ou de sécurité nationale. Si vous envoyez "critical", l'API retournera une erreur 400 avec la liste des valeurs autorisées.

Limites et codes d'erreur

RègleValeurHTTP
Taille maximale du payload HTTP10 Ko413 Payload Too Large
Troncature du champ message2 000 caractères(silencieux)
interruption_level invalidepassive, active, time-sensitive uniquement400 Bad Request
Rate limiting par webhook5 requêtes / minute429 Too Many Requests
Limite gratuite (free)10 notifications / mois402 Payment Required
Secret invalide ou manquant401 Unauthorized

Passer le secret de façon sécurisée

Exposer un secret directement dans l'URL n'est pas idéal (certains proxy ou services tiers loguent les URL complètes). Il est préférable d'utiliser l'endpoint racine /v1/send avec le header Authorization :

Exemple via header Authorization

curl -X POST https://<votre-projet>.convex.site/v1/send \
  -H 'Authorization: Bearer br_usr_abc123def456ghi789' \
  -H 'Content-Type: application/json' \
  -d '{"message": "Envoi sécurisé via Bearer token !"}'

Cette méthode fonctionne également en GET :

curl -G https://<votre-projet>.convex.site/v1/send \
  -H 'Authorization: Bearer br_usr_abc123def456ghi789' \
  --data-urlencode 'message=Test rapide' \
  --data-urlencode 'title=Salut'

Endpoints disponibles

MéthodeURLSecret fourni via
POST/v1/<secret>Dans l'URL
GET/v1/<secret>Dans l'URL
POST/v1/sendHeader Authorization: Bearer <secret>
GET/v1/sendHeader Authorization: Bearer <secret>