Référence de l’API

Conformité / LCAP

Gestion du consentement LCAP et des désabonnements.

get/v1/compliance/consents

Lister les enregistrements de consentement des abonnés du compte

Permissioncompliance:rSDK Node.jshonkio.consents.list()

Les consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.

Nécessite compliance:r.

Paramètres

ParamètreTypeDescription
phone_numberrequêtestring
email_addressrequêtestring

Limiter aux consentements par courriel de cette adresse. Le consentement par courriel sera offert au lancement du produit courriel.

statusrequêtestring
  • Une valeur parmi : ACTIVE | EXPIRED | REVOKED
consent_batch_idrequêtestring

Seulement les consentements enregistrés par ce téléversement groupé.

  • Au plus 64 caractères
pagerequêteinteger
  • Minimum : 1
  • Par défaut : 1
limitrequêteinteger
  • Minimum : 1
  • Maximum : 100
  • Par défaut : 20

Réponses

  • 200Une page d’enregistrements de consentement, du plus récent au plus ancien. Aucun total n’est renvoyé.
    ChampTypeDescription
    data[]obligatoireobject[]
    idobligatoirestring
    accountIdobligatoirestring
    channelobligatoirestring
    • Une valeur parmi : SMS | EMAIL
    phoneNumberobligatoirestring
    • Peut être null
    emailAddressobligatoirestring
    • Peut être null
    consentTypeobligatoirestring
    • Une valeur parmi : EXPRESS | IMPLIED
    statusobligatoirestring
    • Une valeur parmi : ACTIVE | EXPIRED | REVOKED
    sourceDescriptionobligatoirestring
    • Peut être null
    sourceIpobligatoirestring
    • Peut être null
    sourceUrlobligatoirestring
    • Peut être null
    relationshipTypeobligatoirestring
    • Peut être null
    expiresAtobligatoirestring
    • Format : date-time
    • Peut être null
    grantedAtobligatoirestring
    • Format : date-time
    revokedAtobligatoirestring
    • Format : date-time
    • Peut être null
    revokedReasonobligatoirestring
    • Peut être null
    doubleOptInConfirmedAtobligatoirestring

    Quand l’abonné a confirmé pour la dernière fois son double consentement en répondant OUI à une confirmation envoyée depuis l’un de vos numéros sans frais. Un envoi sans frais exige une confirmation de son propre numéro d’envoi : voir GET /v1/compliance/opt-in-confirmations.

    • Format : date-time
    • Peut être null
    doubleOptInConfirmationIdobligatoirestring

    La confirmation de consentement (oic_…) à laquelle il a répondu.

    • Peut être null
    consentBatchIdobligatoirestring

    Le téléversement groupé (cb_…) qui a enregistré ce consentement ; null pour un consentement enregistré individuellement.

    • Peut être null
    modeobligatoirestring

    Le mode de la clé qui l’a enregistré. Une clé de test ne voit que les enregistrements TEST, une clé de production que les enregistrements LIVE.

    • Une valeur parmi : LIVE | TEST
    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.
  • 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel (renvoyé uniquement pour une requête email_address).Le corps d’erreur standard.

Exemple

const { data, error } = await honkio.consents.list({ status: 'ACTIVE', limit: 50 })
if (error) throw new Error(error.message)
console.log(data.data.length)
post/v1/compliance/consents

Enregistrer le consentement LCAP pour un numéro de téléphone ou une adresse courriel

Enregistre un consentement exprès ou tacite conformément aux articles 6 à 10 de la LCAP. Tout SMS exige un consentement enregistré pour son destinataire, qu’il soit transactionnel ou commercial (un code de vérification envoyé par l’API Verify n’en exige aucun) ; un courriel ne l’exige que s’il est commercial. Refusé avec 409 CONSENT_REVOKED_BY_REVIEW lorsque HonkIO a révoqué le consentement de ce destinataire après examen d’un téléversement : ce consentement ne peut plus être enregistré à moins que HonkIO ne lève le blocage. Les consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.

Nécessite compliance:w.

Corps de la requête

ChampTypeDescription
phone_numberstring

Numéro de téléphone E.164 de l’abonné

email_addressstring

Adresse courriel de l’abonné (canal courriel). Le consentement par courriel sera offert au lancement du produit courriel.

  • Au plus 254 caractères
consent_typeobligatoirestring
  • Une valeur parmi : express | implied
source_descriptionstring

Comment et où le consentement a été obtenu (obligatoire pour le consentement exprès)

  • Au plus 1000 caractères
source_ipstring

Adresse IP de l’abonné au moment du consentement

  • Au plus 45 caractères
source_urlstring

URL où le consentement a été obtenu

  • Au plus 2048 caractères
relationship_typestring

Type de relation d’affaires (requis pour le type implied, soit le consentement tacite ; p. ex. « purchase », « inquiry », « member »). Il fixe la durée du consentement tacite (LCAP, par. 10(10) et 10(13)) : 2 ans pour un achat, une location, un contrat, une occasion d’affaires, un don, du bénévolat ou une adhésion ; 6 mois pour une demande de renseignements ou une demande, et pour tout type qui ne nomme ni l’un ni l’autre.

  • Au plus 100 caractères
last_transaction_datestring

Date de la dernière transaction (consentement tacite : l’expiration de 2 ans ou de 6 mois court à partir de cette date ; aujourd’hui si elle est absente)

  • Format : date
expires_atstring

Date d’expiration explicite (date ou date-heure ISO 8601) d’un consentement tacite. Remplace l’expiration calculée à partir de last_transaction_date. Refusée pour le consentement exprès, qui n’expire jamais (LCAP, art. 10).

Réponses

  • 201Réponse par défaut
    ChampTypeDescription
    statusstring
    phone_numberstring
    email_addressstring
    expires_atstring

    Moment où ce consentement expire (consentement tacite seulement) ; null pour un consentement exprès.

    • Peut être null
    livemodeboolean

    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.
  • 409CONSENT_REVOKED_BY_REVIEW : HonkIO a révoqué le consentement de ce destinataire après examen d’un téléversement ; il ne peut donc plus être enregistré à moins que HonkIO ne lève le blocage.Le corps d’erreur standard.
  • 422INVALID_PHONE_NUMBER, EMAIL_INVALID_ADDRESS ou VALIDATION_ERROR (fournissez exactement un seul des champs phone_number ou email_address ; le consentement exprès exige source_description et n’accepte pas expires_at ; le consentement tacite exige relationship_type).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.
  • 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel (renvoyé uniquement pour une requête email_address).Le corps d’erreur standard.

Exemple

const { error } = await honkio.consents.create({
  phoneNumber: '+1613XXXXXXX',
  consentType: 'express',
  sourceDescription: 'Website opt-in form',
})
if (error) throw new Error(error.message)
post/v1/compliance/consents/batch

Enregistrer le consentement LCAP pour jusqu’à 5 000 numéros de téléphone

Chaque ligne reprend defaults, complété par ses propres champs. Chaque ligne obtient son propre résultat : recorded, invalid, duplicate_in_file (le numéro figurait déjà sur une ligne précédente), opted_out (le numéro s’est désabonné ; un téléversement ne lui redonne jamais de consentement), revoked_by_review (HonkIO a révoqué le consentement du numéro après examen d’un téléversement précédent ; il ne peut plus être enregistré à moins que HonkIO ne lève le blocage) ou already_recorded (un consentement actif au moins aussi fort existe déjà, donc renvoyer un fichier n’enregistre rien en double). Le téléversement est conservé comme lot de consentements (GET /v1/compliance/consent-batches). SMS seulement. Le téléversement d’une clé de test enregistre des consentements de test, évalués d’après ses propres désabonnements et consentements (de test).

Nécessite compliance:w.

Corps de la requête

ChampTypeDescription
defaultsobligatoireobject

Les valeurs par défaut (defaults) dont part chaque ligne.

consent_typeobligatoirestring
  • Une valeur parmi : express | implied
source_descriptionstring
  • Au plus 1000 caractères
source_ipstring
  • Au plus 45 caractères
source_urlstring
  • Au plus 2048 caractères
relationship_typestring
  • Au plus 100 caractères
last_transaction_datestring
  • Au plus 40 caractères
expires_atstring
  • Au plus 40 caractères
  • Peut être null
rows[]obligatoireobject[]

De 1 à 5 000 lignes ; les champs propres à chaque ligne remplacent les valeurs par défaut (defaults).

phone_numberobligatoirestring
  • Au plus 64 caractères
consent_typestring

express (consentement exprès) ou implied (consentement tacite) ; toute autre valeur rend la ligne invalid (invalide).

  • Au plus 20 caractères
source_descriptionstring
  • Au plus 1000 caractères
source_ipstring
  • Au plus 45 caractères
source_urlstring
  • Au plus 2048 caractères
relationship_typestring
  • Au plus 100 caractères
last_transaction_datestring
  • Au plus 40 caractères
expires_atstring
  • Au plus 40 caractères
  • Peut être null
file_namestring

Le nom du fichier téléversé, conservé sur le lot.

  • Au plus 255 caractères
attestedboolean

La personne qui téléverse confirme que ces personnes ont donné ce consentement ou entretiennent cette relation. Consigné sur le lot.

Réponses

  • 200Le résultat de chaque ligne, dans l’ordre d’envoi, et les totaux. Un succès partiel est normal : seule une requête erronée dans son ensemble est refusée.
    ChampTypeDescription
    batch_idobligatoirestring

    cb_…

    livemodeobligatoireboolean

    false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.

    countsobligatoireobject
    rowsobligatoireinteger
    recordedobligatoireinteger
    expressobligatoireinteger
    impliedobligatoireinteger
    already_recordedobligatoireinteger
    opted_outobligatoireinteger
    revoked_by_reviewobligatoireinteger
    duplicate_in_fileobligatoireinteger
    invalidobligatoireinteger
    results[]obligatoireobject[]
    rowobligatoireinteger

    Indice de la ligne dans rows.

    phone_numberobligatoirestring

    Numéro E.164, ou la valeur telle qu’envoyée si elle n’a pas pu être interprétée.

    statusobligatoirestring
    • Une valeur parmi : recorded | invalid | duplicate_in_file | opted_out | revoked_by_review | already_recorded
    reasonstring

    Présent sur les lignes invalides (le champ en cause et ce qui ne va pas) et sur les lignes revoked_by_review.

    consent_typestring

    Présent sur les lignes enregistrées.

    • Une valeur parmi : express | implied
    expires_atstring

    Présent sur les lignes enregistrées ; null pour le consentement exprès.

    • Peut être null
  • 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 : rows vide ou de plus de 5 000 lignes, ou defaults erroné en soi (consent_type inconnu, date illisible, expires_at avec le consentement exprès).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

const { data, error } = await honkio.consents.recordBatch({
  defaults: { consentType: 'implied', relationshipType: 'volunteer', lastTransactionDate: '2026-05-01' },
  rows: [{ phoneNumber: '+1613XXXXXXX' }],
  fileName: 'volunteers.csv',
})
if (error) throw new Error(error.message)
console.log(data.counts)
get/v1/compliance/consents/check

Vérifier si un numéro de téléphone ou une adresse courriel dispose d’un consentement LCAP valide

Un consentement que cette vérification trouve expiré est marqué EXPIRED par la vérification elle-même, et pas seulement par une tâche en arrière-plan : cet appel peut donc écrire, et non seulement lire. Elle répond pour le mode de la clé appelante : une clé de test vérifie les enregistrements de test auxquels un envoi de test serait confronté, une clé de production, les enregistrements de production.

Nécessite compliance:r.

Paramètres

ParamètreTypeDescription
phone_numberrequêtestring
email_addressrequêtestring

Vérifier une adresse courriel plutôt qu’un numéro de téléphone. Le consentement par courriel sera offert au lancement du produit courriel.

Réponses

  • 200Indique si un envoi au numéro de téléphone ou à l’adresse courriel franchirait le contrôle de la LCAP. Un seul des champs phone_number/email_address est présent, selon le sujet interrogé. consentType et reason sont en camelCase et mutuellement exclusifs.
    ChampTypeDescription
    phone_numberstring
    email_addressstring
    allowedobligatoireboolean
    consentTypestring

    Présent si l’opération est autorisée.

    • Une valeur parmi : EXPRESS | IMPLIED
    reasonstring

    Présent si l’opération n’est pas autorisée.

    • Une valeur parmi : OPT_OUT | NO_CONSENT | CONSENT_EXPIRED
    livemodeboolean

    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.
  • 422INVALID_PHONE_NUMBER, EMAIL_INVALID_ADDRESS ou VALIDATION_ERROR (fournissez exactement un seul des champs phone_number ou email_address).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.
  • 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel (renvoyé uniquement pour une requête email_address).Le corps d’erreur standard.

Exemple

const { data, error } = await honkio.consents.check({ phoneNumber: '+1613XXXXXXX' })
if (error) throw new Error(error.message)
console.log(data.allowed, data.reason)
delete/v1/compliance/consents/{phone}

Révoquer le consentement LCAP pour un numéro de téléphone

Révoque les enregistrements de consentement pour le numéro donné. Tout SMS vers ce numéro est ensuite refusé avec NO_CONSENT jusqu’à ce qu’un consentement soit de nouveau enregistré. Les désabonnements sont distincts : un désabonnement (POST /opt-outs) bloque les envois même lorsqu’un consentement est enregistré, et seul le destinataire peut le lever. Une clé de test ne révoque que des consentements de test, et une clé de production, que des consentements de production.

Nécessite compliance:m ou compliance:d (l’une ou l’autre).

Paramètres

ParamètreTypeDescription
phoneobligatoirecheminstring

Réponses

  • 204Tous les consentements actifs du numéro sont révoqué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.
  • 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.
  • 404NOT_FOUND : aucun consentement actif pour le numéro.Le corps d’erreur standard.
  • 422INVALID_PHONE_NUMBER.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

const { error } = await honkio.consents.revoke({ phoneNumber: '+1613XXXXXXX' })
if (error) throw new Error(error.message)
delete/v1/compliance/consents/email/{address}

Révoquer le consentement LCAP pour une adresse courriel

Révoque les consentements courriel ACTIVE de l’adresse. Tout courriel commercial vers cette adresse est ensuite refusé avec EMAIL_NO_CONSENT jusqu’à ce qu’un consentement soit de nouveau enregistré ; les courriels transactionnels ne sont pas touchés. Les désabonnements et les entrées de la liste de suppression sont distincts.

Nécessite compliance:m ou compliance:d (l’une ou l’autre).

Paramètres

ParamètreTypeDescription
addressobligatoirecheminstring

Réponses

  • 204Tous les consentements actifs de l’adresse courriel sont révoqué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.
  • 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.
  • 404NOT_FOUND : aucun consentement actif pour l’adresse courriel.Le corps d’erreur standard.
  • 422EMAIL_INVALID_ADDRESS.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.
  • 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel.Le corps d’erreur standard.

Exemple

const { error } = await honkio.consents.revoke({ emailAddress: 'sam@example.com' })
if (error) throw new Error(error.message)
get/v1/compliance/opt-outs

Lister les enregistrements de désabonnement

Permissioncompliance:r

Les consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.

Nécessite compliance:r.

Paramètres

ParamètreTypeDescription
phone_numberrequêtestring
from_numberrequêtestring
pagerequêteinteger
  • Minimum : 1
  • Par défaut : 1
limitrequêteinteger
  • Minimum : 1
  • Maximum : 100
  • Par défaut : 20

Réponses

  • 200Une page d’enregistrements de désabonnement, du plus récent au plus ancien. Aucun total n’est renvoyé.
    ChampTypeDescription
    data[]obligatoireobject[]
    idobligatoirestring
    accountIdobligatoirestring
    channelobligatoirestring
    • Une valeur parmi : SMS | EMAIL
    phoneNumberobligatoirestring
    • Peut être null
    fromNumberobligatoirestring

    Le numéro d’envoi à partir duquel l’abonné s’est désabonné (SMS).

    • Peut être null
    fromAddressobligatoirestring
    • Peut être null
    emailAddressobligatoirestring
    • Peut être null
    keywordUsedobligatoirestring

    STOP, UNSUBSCRIBE, etc. ; null pour un désabonnement enregistré au moyen de l’API.

    • Peut être null
    optedOutAtobligatoirestring
    • Format : date-time
    reinstatedAtobligatoirestring
    • Format : date-time
    • Peut être null
    reinstateKeywordobligatoirestring
    • Peut être null
    modeobligatoirestring

    LIVE pour un STOP envoyé à l’un de vos numéros, un désabonnement d’un courriel de production ou un désabonnement enregistré par une clé de production ; TEST pour un désabonnement enregistré par une clé de test ou produit par un courriel de test. Une clé de test ne voit que les enregistrements TEST, une clé de production que les enregistrements LIVE.

    • Une valeur parmi : LIVE | TEST
    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
curl https://api.honkio.ca/v1/compliance/opt-outs \
  -H "Authorization: Bearer mk_live_YOUR_KEY"
post/v1/compliance/opt-outs

Enregistrer manuellement un désabonnement pour un numéro de téléphone

Permissioncompliance:w

Les consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.

Nécessite compliance:w.

Corps de la requête

ChampTypeDescription
phone_numberobligatoirestring

Numéro qui se désabonne (abonné)

from_numberobligatoirestring

Votre numéro d’envoi visé par leur désabonnement

Réponses

  • 201Désabonné.
    ChampTypeDescription
    statusobligatoirestring
    • Une valeur parmi : opted_out
    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.
  • 403PHONE_NUMBER_NOT_OWNED : une clé de production a enregistré un désabonnement à partir d’un numéro que le compte ne détient pas.Le corps d’erreur standard.
  • 422INVALID_PHONE_NUMBER ou VALIDATION_ERROR.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
curl -X POST https://api.honkio.ca/v1/compliance/opt-outs \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "+1613XXXXXXX",
    "from_number": "+1416XXXXXXX"
  }'
get/v1/compliance/opt-in-confirmations

Lister les confirmations de double consentement

Les plus récentes d’abord. Une confirmation en attente au-delà de ses 7 jours est indiquée EXPIRED. Les confirmations n’existent qu’en production : une clé de test n’en liste aucune.

Nécessite compliance:r.

Paramètres

ParamètreTypeDescription
torequêtestring

Seulement les confirmations envoyées à ce destinataire (E.164).

statusrequêtestring
  • Une valeur parmi : PENDING | CONFIRMED | EXPIRED | DECLINED
pagerequêteinteger
  • Minimum : 1
  • Par défaut : 1
limitrequêteinteger
  • Minimum : 1
  • Maximum : 100
  • Par défaut : 20

Réponses

  • 200Une page de confirmations, les plus récentes d’abord. Aucun total n’est renvoyé. Vide pour une clé de test.
    ChampTypeDescription
    data[]obligatoireobject[]
    idobligatoirestring

    oic_…

    statusobligatoirestring

    PENDING jusqu’à ce que le destinataire réponde OUI (CONFIRMED), qu’elle expire après 7 jours ou soit remplacée par une plus récente (EXPIRED), ou que le destinataire texte STOP (DECLINED).

    • Une valeur parmi : PENDING | CONFIRMED | EXPIRED | DECLINED
    fromobligatoirestring

    Le numéro sans frais depuis lequel elle a été envoyée.

    • Peut être null
    toobligatoirestring

    Le destinataire.

    brand_nameobligatoirestring
    languageobligatoirestring
    • Une valeur parmi : en | fr
    message_idobligatoirestring

    Le texte de confirmation, sous forme de message (GET /v1/messages/{id}).

    • Peut être null
    expires_atobligatoirestring
    • Format : date-time
    confirmed_atobligatoirestring
    • Format : date-time
    • Peut être null
    reply_message_idobligatoirestring

    Le OUI du destinataire, sous forme de message reçu.

    • Peut être null
    created_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.
  • 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.
  • 422INVALID_PHONE_NUMBER (le filtre to) ou VALIDATION_ERROR.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

const { data, error } = await honkio.optInConfirmations.list({ to: '+1613XXXXXXX' })
if (error) throw new Error(error.message)
for (const c of data.data) console.log(c.id, c.status)
post/v1/compliance/opt-in-confirmations

Envoyer une confirmation de double consentement depuis un numéro sans frais

Envoie au destinataire une confirmation au texte fixe depuis votre numéro sans frais vérifié : "{brand_name}: reply YES to confirm you want text messages from us. Msg & data rates may apply. Reply STOP to opt out." (avec language: "fr" : "{brand_name} : répondez OUI pour confirmer que vous voulez recevoir nos textos. Des frais de messagerie et de données peuvent s’appliquer. Répondez ARRET pour vous désabonner.").

Les messages sans frais au Canada exigent un double consentement, par numéro d’envoi : tant que le destinataire n’a pas répondu YES, Y, OUI ou O à ce numéro, les envois vers lui depuis ce numéro sont refusés avec 451 DOUBLE_OPT_IN_REQUIRED (chacun de vos numéros sans frais demande le sien). La réponse confirme la confirmation, enregistre le double consentement pour ce numéro et déclenche consent.double_opt_in_confirmed. Un STOP envoyé à ce numéro le retire. Les codes de vérification (POST /v1/verify) en sont exemptés.

Le destinataire doit déjà avoir un consentement actif (le premier consentement). La confirmation est facturée comme un message ordinaire et expire après 7 jours. En envoyer une autre depuis le même numéro remplace celle en attente ; au plus 3 peuvent être envoyées à un même destinataire en 24 heures, depuis l’ensemble de vos numéros. Clés de production seulement.

Nécessite compliance:w.

Corps de la requête

ChampTypeDescription
fromobligatoirestring

Votre numéro sans frais (E.164) avec une vérification sans frais approuvée.

toobligatoirestring

Le destinataire (E.164, canadien), qui doit déjà avoir un consentement actif.

brand_nameobligatoirestring

Le nom sous lequel le destinataire vous connaît, affiché au début du texte. Texte simple : lettres, chiffres, espaces et . , ' & ! -, pas un lien.

  • Au moins 1 caractères
  • Au plus 64 caractères
languagestring

La langue du texte de confirmation.

  • Une valeur parmi : en | fr
  • Par défaut : en

Réponses

  • 201Envoyée : la confirmation, PENDING jusqu’à ce que le destinataire réponde OUI.
    ChampTypeDescription
    idobligatoirestring

    oic_…

    statusobligatoirestring

    PENDING jusqu’à ce que le destinataire réponde OUI (CONFIRMED), qu’elle expire après 7 jours ou soit remplacée par une plus récente (EXPIRED), ou que le destinataire texte STOP (DECLINED).

    • Une valeur parmi : PENDING | CONFIRMED | EXPIRED | DECLINED
    fromobligatoirestring

    Le numéro sans frais depuis lequel elle a été envoyée.

    • Peut être null
    toobligatoirestring

    Le destinataire.

    brand_nameobligatoirestring
    languageobligatoirestring
    • Une valeur parmi : en | fr
    message_idobligatoirestring

    Le texte de confirmation, sous forme de message (GET /v1/messages/{id}).

    • Peut être null
    expires_atobligatoirestring
    • Format : date-time
    confirmed_atobligatoirestring
    • Format : date-time
    • Peut être null
    reply_message_idobligatoirestring

    Le OUI du destinataire, sous forme de message reçu.

    • Peut être null
    created_atobligatoirestring
    • Format : date-time
  • 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.
  • 403TOLL_FREE_NOT_VERIFIED (from n’a pas de vérification sans frais approuvée), ACCOUNT_NOT_VERIFIED, LIVE_KEY_REQUIRED (une clé de test ne peut pas en envoyer), ALLOW_LIST_BLOCKED, DENY_LIST_BLOCKED ou SENDING_PAUSED. Aussi FORBIDDEN quand la clé n’a pas l’autorisation compliance:w.Le corps d’erreur standard.
  • 409PHONE_NUMBER_SUSPENDED : le numéro from est suspendu pour loyer impayé.Le corps d’erreur standard.
  • 422INVALID_PHONE_NUMBER, NOT_A_TOLL_FREE_NUMBER (from n’est pas un de vos numéros sans frais), VALIDATION_ERROR (brand_name doit être du texte simple, pas un lien), NON_CANADIAN_NUMBER, RESERVED_DESTINATION, UNDELIVERABLE_NUMBER ou NOT_A_MOBILE_NUMBER. Un envoi refusé ne coûte rien.Le corps d’erreur standard.
  • 429OPT_IN_CONFIRMATION_LIMIT (3 vers un même destinataire en 24 heures), DAILY_LIMIT_REACHED, FANOUT_LIMIT_REACHED, NUMBER_RATE_LIMITED ou RECIPIENT_RATE_LIMITED (Retry-After est défini pour les deux limites de débit), ou RATE_LIMITED au-delà de 100 requêtes par seconde.Le corps d’erreur standard.
  • 451Le destinataire n’a pas de premier consentement : NO_CONSENT, CONSENT_EXPIRED ou OPT_OUT_BLOCKED.Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.
  • 502CARRIER_ERROR : l’opérateur a refusé l’envoi. Tout montant facturé est remboursé et aucune confirmation n’est conservée.Le corps d’erreur standard.
  • 503CARRIER_UNAVAILABLE, CARRIER_THROTTLED ou CARRIER_TIMEOUT : voir POST /v1/messages. Aucune confirmation n’est conservée ; envoyez de nouveau.Le corps d’erreur standard.

Exemple

const { data: confirmation, error } = await honkio.optInConfirmations.send({
  from: '+1833XXXXXXX', // your verified toll-free number
  to: '+1613XXXXXXX',
  brandName: 'Acme Clinics',
})
if (error) throw new Error(`${error.name}: ${error.message}`)
console.log(confirmation.id, confirmation.status) // 'PENDING' until they reply YES