Référence de l’API
Groupes de contacts
Regrouper des contacts et envoyer des diffusions de groupe.
/v1/contact-groupsLister les groupes de contacts
contact_groups:rLes groupes sont tenus séparément pour chaque mode de clé : une clé de test ne liste, ne crée, ne modifie et ne diffuse qu’aux groupes de test, une clé de production à ceux de production, et un groupe de l’autre mode répond CONTACT_GROUP_NOT_FOUND. Un groupe ne contient que des contacts de son propre mode.
Nécessite contact_groups:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
limitrequête | integer |
|
offsetrequête | integer |
|
searchrequête | string | Filtrer par nom de groupe (insensible à la casse, correspondance partielle) |
Réponses
200Une page de groupes, du plus récent au plus ancien, chacun avec ses membres.
Champ Type Description totalobligatoireinteger Nombre total d’enregistrements correspondants.
limitobligatoireinteger offsetobligatoireinteger data[]obligatoireobject[] idobligatoirestring nameobligatoirestring descriptionobligatoirestring - Peut être null
member_countobligatoireinteger members[]obligatoireobject[] idobligatoirestring L’identifiant du contact.
phone_numberobligatoirestring - Peut être null
nameobligatoirestring - Peut être null
created_atobligatoirestring - Format : date-time
updated_atobligatoirestring - Format : date-time
livemodeobligatoireboolean false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
- 403La clé API ne dispose pas de la permission requise pour cette opération, ou le compte est suspendu ou fermé.Le corps d’erreur standard.
- 422VALIDATION_ERROR : la requête n’a pas passé la validation ; details indique les champs en cause.Le corps d’erreur standard.
- 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl https://api.honkio.ca/v1/contact-groups \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/contact-groupsCréer un groupe de contacts
contact_groups:wLes groupes sont tenus séparément pour chaque mode de clé : une clé de test ne liste, ne crée, ne modifie et ne diffuse qu’aux groupes de test, une clé de production à ceux de production, et un groupe de l’autre mode répond CONTACT_GROUP_NOT_FOUND. Un groupe ne contient que des contacts de son propre mode.
Nécessite contact_groups:w.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
nameobligatoire | string |
|
description | string |
|
Réponses
201Le groupe.
Champ Type Description idobligatoirestring nameobligatoirestring descriptionobligatoirestring - Peut être null
member_countobligatoireinteger members[]obligatoireobject[] idobligatoirestring L’identifiant du contact.
phone_numberobligatoirestring - Peut être null
nameobligatoirestring - Peut être null
created_atobligatoirestring - Format : date-time
updated_atobligatoirestring - Format : date-time
livemodeobligatoireboolean false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
- 403La clé API ne dispose pas de la permission requise pour cette opération, ou le compte est suspendu ou fermé.Le corps d’erreur standard.
- 409CONTACT_GROUP_ALREADY_EXISTS : ce nom est déjà utilisé.Le corps d’erreur standard.
- 422VALIDATION_ERROR : la requête n’a pas passé la validation ; details indique les champs en cause.Le corps d’erreur standard.
- 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl -X POST https://api.honkio.ca/v1/contact-groups \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "..."
}'/v1/contact-groups/{id}Obtenir un groupe de contacts avec ses membres
contact_groups:rNécessite contact_groups:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Réponses
200Le groupe, avec ses membres.
Champ Type Description idobligatoirestring nameobligatoirestring descriptionobligatoirestring - Peut être null
member_countobligatoireinteger members[]obligatoireobject[] idobligatoirestring L’identifiant du contact.
phone_numberobligatoirestring - Peut être null
nameobligatoirestring - Peut être null
created_atobligatoirestring - Format : date-time
updated_atobligatoirestring - Format : date-time
livemodeobligatoireboolean false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
- 403La clé API ne dispose pas de la permission requise pour cette opération, ou le compte est suspendu ou fermé.Le corps d’erreur standard.
- 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
- 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl https://api.honkio.ca/v1/contact-groups/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/contact-groups/{id}Mettre à jour un groupe de contacts
contact_groups:mNécessite contact_groups:m.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
name | string |
|
description | string |
|
Réponses
200Le groupe mis à jour.
Champ Type Description idobligatoirestring nameobligatoirestring descriptionobligatoirestring - Peut être null
member_countobligatoireinteger members[]obligatoireobject[] idobligatoirestring L’identifiant du contact.
phone_numberobligatoirestring - Peut être null
nameobligatoirestring - Peut être null
created_atobligatoirestring - Format : date-time
updated_atobligatoirestring - Format : date-time
livemodeobligatoireboolean false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
- 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise). Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
- 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
- 409CONTACT_GROUP_ALREADY_EXISTS : ce nom est déjà utilisé.Le corps d’erreur standard.
- 422VALIDATION_ERROR : la requête n’a pas passé la validation ; details indique les champs en cause.Le corps d’erreur standard.
- 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl -X PATCH https://api.honkio.ca/v1/contact-groups/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "Patients due for a recall visit"
}'/v1/contact-groups/{id}Supprimer un groupe de contacts
contact_groups:dNécessite contact_groups:d.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Réponses
- 204Supprimé. Ses contacts sont conservés.
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
- 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise) ; KEY_FENCED lorsque la modification assouplirait les restrictions d’autorisation et de blocage de la clé appelante elle-même. Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
- 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
- 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl -X DELETE https://api.honkio.ca/v1/contact-groups/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/contact-groups/{id}/membersAjouter un membre à un groupe de contacts
contact_groups:mFournissez soit contact_id (fiche Contact existante), soit phone_number (créé automatiquement s’il n’existe pas). Le contact est du mode du groupe : un contact_id de l’autre mode répond CONTACT_NOT_FOUND, et un phone_number trouve ou crée un contact du mode du groupe.
Nécessite contact_groups:m.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Corps de la requête
| Champ | Type | Description |
|---|---|---|
contact_id | string | |
phone_number | string |
Réponses
201Le membre ajouté.
Champ Type Description idobligatoirestring L’identifiant du contact.
phone_numberobligatoirestring nameobligatoirestring - Peut être null
added_atobligatoirestring - Format : date-time
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
- 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise) ; KEY_FENCED lorsque la modification assouplirait les restrictions d’autorisation et de blocage de la clé appelante elle-même. Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
- 404CONTACT_GROUP_NOT_FOUND ou CONTACT_NOT_FOUND.Le corps d’erreur standard.
- 409CONTACT_GROUP_MEMBER_EXISTS.Le corps d’erreur standard.
- 422VALIDATION_ERROR (ni contact_id ni phone_number), INVALID_PHONE_NUMBER ou CONTACT_HAS_NO_PHONE (le contact n’a pas de numéro de téléphone).Le corps d’erreur standard.
- 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl -X POST https://api.honkio.ca/v1/contact-groups/ID/members \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "CONTACT_ID"
}'/v1/contact-groups/{id}/members/{contactId}Retirer un membre d’un groupe de contacts
contact_groups:mNécessite contact_groups:m.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string | |
contactIdobligatoirechemin | string |
Réponses
- 204Retiré du groupe. Le contact est conservé.
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
- 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise) ; KEY_FENCED lorsque la modification assouplirait les restrictions d’autorisation et de blocage de la clé appelante elle-même. Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
- 404CONTACT_GROUP_NOT_FOUND ou CONTACT_GROUP_MEMBER_NOT_FOUND.Le corps d’erreur standard.
- 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl -X DELETE https://api.honkio.ca/v1/contact-groups/ID/members/CONTACT_ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/contact-groups/{id}/messagesEnvoyer un SMS à tous les membres d’un groupe de contacts
messages:wUne clé de test diffuse à ses propres groupes (de test) et une clé de production à ceux de production ; un groupe de l’autre mode répond CONTACT_GROUP_NOT_FOUND. Répond toujours 207, que le message ait été envoyé à tous les membres ou que tous aient échoué : vérifiez chaque entrée de results plutôt que le statut HTTP. Chaque résultat indique le numéro to du membre. Une diffusion en production répétée avec la même Idempotency-Key dans les 24 heures renvoie le 207 enregistré de la première tentative, sans refaire les vérifications portant sur l’ensemble du groupe ni utiliser un autre créneau de diffusion quotidien. Une nouvelle tentative ultérieure avec cette clé refait les vérifications (et peut utiliser un créneau), mais n’envoie jamais de nouveau message à un membre déjà joint par la première tentative. Avec scheduled_at (de 1 minute à 30 jours à l’avance), chaque membre reçoit un message programmé, comme POST /v1/messages avec scheduled_at en crée un : statut scheduled dans results, facturé tout de suite, toutes les vérifications refaites à l’heure prévue, et chacun peut être déplacé ou annulé séparément (PATCH ou DELETE /v1/messages/{id}). La diffusion utilise son créneau quotidien maintenant ; les limites d’envoi sont évaluées par membre à l’heure prévue. À la place de body, template (l’identifiant ou l’alias d’un modèle), variables et language (en ou fr) envoient la partie SMS de ce modèle, rendue une seule fois avec les mêmes valeurs pour chaque membre, comme le fait POST /v1/messages.
Nécessite messages:w.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string | |
Idempotency-Keyen-tête | string |
|
Corps de la requête
| Champ | Type | Description |
|---|---|---|
fromobligatoire | string | Numéro d’envoi (E.164, doit appartenir au compte) |
body | string | Jusqu’à 1 600 caractères et 10 segments SMS. Un corps plus long est refusé avec 422 MESSAGE_TOO_LONG avant qu’un seul membre ne reçoive de message. Obligatoire sauf si vous envoyez un modèle ; interdit avec un modèle.
|
template | string | L’identifiant ou l’alias d’un modèle (/v1/templates). Sa partie pour ce canal est rendue et envoyée à la place de votre propre texte. Une clé de production envoie la version publiée, une clé de test le brouillon. Avec un Idempotency-Key, une nouvelle tentative est comparée à la requête telle qu’elle a été envoyée : l’identifiant du modèle et son alias, 1 et « 1 » comme valeur de variable, et une langue omise et la langue par défaut indiquée comptent comme des requêtes différentes (409 IDEMPOTENCY_KEY_REUSED).
|
variables | object | Les valeurs des variables du modèle. Une variable sans valeur ni valeur de repli fait refuser l’envoi (422 EMAIL_TEMPLATE_VARIABLE_MISSING, details.keys). Seulement avec template. |
language | string | en ou fr : la version linguistique à rendre. Une partie qui manque à cette langue vient de la langue par défaut du modèle. Omettez-le pour la langue par défaut. Seulement avec template.
|
skip_consent_check | boolean | |
scheduled_at | string | Envoi différé : une date et heure ISO 8601 avec décalage horaire, de 1 minute à 30 jours à l’avance.
|
expires_at | string | L’heure limite de départ de l’envoi programmé : de 1 minute à 24 heures après scheduled_at, et seulement avec lui. Sans elle, scheduled_at plus 24 heures. Un envoi qui ne peut pas partir d’ici là échoue avec SCHEDULED_SEND_EXPIRED et est remboursé. La même pour chaque membre.
|
Réponses
207Toujours 207 : vérifiez chaque résultat, pas le statut. Une diffusion réelle répétée avec la même Idempotency-Key dans les 24 heures renvoie le résultat enregistré de la première tentative.
Champ Type Description group_idobligatoirestring sent_toobligatoireinteger Membres qui n’ont pas échoué.
failedobligatoireinteger results[]obligatoireobject[] toobligatoirestring Le numéro du membre.
statusobligatoirestring En minuscules : le statut du message (queued, sent, delivered, etc.), ou failed.
message_idstring Absent lorsque l’envoi au membre a échoué avant qu’un message soit créé.
errorstring Un code d’erreur : la raison de l’échec pour ce membre, ou le error_code du message lui-même.
estimated_completion_atstring Une estimation du moment où l’opérateur aura envoyé au dernier membre, d’après la file du numéro d’envoi. Null en mode test. Absent d’une réponse rejouée pour une diffusion envoyée avant son ajout.
- Format : date-time
- Peut être null
- 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
- 402INSUFFICIENT_BALANCE : le solde ne couvre pas l’envoi. RENT_OWED : un loyer est dû pour un numéro libéré pendant sa suspension; rechargez d’abord pour le payer. Aussi PAYMENT_REQUIRED lorsqu’une clé de production est utilisée avant la première recharge.Le corps d’erreur standard.
- 403FORBIDDEN (skip_consent_check avec une clé de production, ou la clé n’a pas l’autorisation messages:w), ACCOUNT_NOT_VERIFIED, SENDING_PAUSED, ou TOLL_FREE_NOT_VERIFIED (un numéro from sans frais dont la vérification sans frais n’est pas approuvée ; clés de test comprises). Un membre en production sans double consentement confirmé échoue seul dans les résultats avec DOUBLE_OPT_IN_REQUIRED.Le corps d’erreur standard.
- 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
- 422VALIDATION_ERROR, BROADCAST_TOO_LARGE, MESSAGE_TOO_LONG ou LINK_SHORTENER_BLOCKED.Le corps d’erreur standard.
- 429BROADCAST_LIMIT_REACHED, DAILY_LIMIT_REACHED, FANOUT_LIMIT_REACHED, NUMBER_QUEUE_FULL (les segments de message de la diffusion dépasseraient la file d’attente de l’opérateur pour le numéro d’envoi; Retry-After est fourni quand attendre libérerait de la place) ou RECIPIENT_RATE_LIMITED, ou RATE_LIMITED au-delà de 100 requêtes par seconde. SCHEDULED_LIMIT_REACHED (avec scheduled_at) : un message programmé par membre ferait dépasser au compte 10 000 messages réels programmés, ou 1 000 messages de test programmés ; la diffusion est refusée en entier, avant que tout membre soit programmé ou facturé (details contient mode, limit, scheduled et requested).Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
Exemple
curl -X POST https://api.honkio.ca/v1/contact-groups/ID/messages \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "+1416XXXXXXX"
}'
HonkIO