Référence de l’API
Courriels
Envoyer et lire des courriels.
/v1/emails/received/addressVotre adresse de réception gérée
emails:rSDK Node.jshonkio.emails.received.address()Nécessite emails:r.
Réponses
200L’adresse de réception gérée du compte (n’importe quoi@… y aboutit), créée au premier appel puis stable. enabled active ou désactive l’adresse gérée : les courriels qui y sont envoyés pendant qu’elle est désactivée sont supprimés, sans frais.
Champ Type Description domainobligatoirestring exampleobligatoirestring livemodeobligatoireboolean enabledobligatoireboolean - 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.
- 403ACCOUNT_NOT_VERIFIED : l’adresse gérée de production nécessite un numéro mobile du propriétaire vérifié. Une clé de test n’est jamais refusée ; elle crée et renvoie toujours l’adresse de test. Également FORBIDDEN lorsque la clé n’a pas la permission requise par cette opération, ou que le compte est suspendu ou fermé.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: address, error } = await honkio.emails.received.address()
if (error) throw new Error(error.message)
console.log(address.example)curl https://api.honkio.ca/v1/emails/received/address \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emails/received/addressActiver ou désactiver votre adresse de réception gérée (clés de production seulement)
emails:mSDK Node.jshonkio.emails.received.setAddressEnabled()Nécessite emails:m.
Corps de la requête
Active ou désactive l’adresse de réception gérée de production du compte.
| Champ | Type | Description |
|---|---|---|
enabledobligatoire | boolean | false cesse d’accepter les courriels à l’adresse gérée ; true les accepte de nouveau. Vos propres domaines de réception ne sont pas touchés. |
Réponses
200Le même objet d’adresse que celui renvoyé par GET, avec enabled défini sur la valeur demandée. Ce paramètre s’applique à tout le compte : le désactiver empêche l’adresse gérée de production de recevoir des courriels ; seule une clé de production peut donc le modifier.
Champ Type Description domainobligatoirestring exampleobligatoirestring livemodeobligatoireboolean enabledobligatoireboolean - 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 : ce réglage s’applique à tout le compte et désactive l’adresse de production, de sorte qu’une clé de test ne peut pas le modifier (GET l’indique tout de même). Aussi ACCOUNT_NOT_VERIFIED (un numéro mobile du propriétaire vérifié est requis) ou FORBIDDEN lorsque la clé ne dispose pas de emails:m.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
const { data, error } = await honkio.emails.received.setAddressEnabled(false)
if (error) throw new Error(error.message)
console.log(data.enabled)curl -X PATCH https://api.honkio.ca/v1/emails/received/address \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"enabled": false
}'/v1/emails/receivedLister les courriels reçus
emails:rSDK Node.jshonkio.emails.received.list()Nécessite emails:r.
Réponses
200Une page de courriels reçus, du plus récent au plus ancien.
Champ Type Description data[]obligatoireobject[] idobligatoirestring fromobligatoirestring from_nameobligatoirestring - Peut être null
toobligatoirestring[] ccobligatoirestring[] subjectobligatoirestring message_idobligatoirestring - Peut être null
in_reply_toobligatoirestring - Peut être null
received_atobligatoirestring - Format : date-time
statusobligatoirestring - Une valeur parmi : received | rejected
reject_reasonobligatoirestring - Peut être null
verdictsobligatoireobject spfobligatoirestring dkimobligatoirestring dmarcobligatoirestring spamobligatoirestring virusobligatoirestring attachments_countobligatoireinteger size_bytesobligatoireinteger charge_millicentsobligatoireinteger domain_idobligatoirestring - Peut être null
livemodeobligatoireboolean has_moreobligatoireboolean next_cursorobligatoirestring - 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 : 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
const { data, error } = await honkio.emails.received.list({ limit: 10 })
if (error) throw new Error(error.message)
for (const email of data.data) console.log(email.id, email.from, email.subject)curl https://api.honkio.ca/v1/emails/received \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emails/received/simulateSimuler un courriel reçu (clés de test uniquement)
emails:wSDK Node.jshonkio.emails.received.simulate()Nécessite emails:w.
Corps de la requête
Un message à recevoir comme s’il était arrivé par courriel, avec le même traitement, le même enregistrement et le même webhook email.received qu’un vrai courriel.
| Champ | Type | Description |
|---|---|---|
fromobligatoire | string | L’adresse de l’expéditeur.
|
toobligatoire | string[] | Jusqu’à 10 destinataires, chacun étant votre adresse gérée de test ou une adresse de l’un de vos domaines en mode test. |
cc | string[] | Jusqu’à 10 destinataires de plus, selon la même règle que to. |
subject | string | Jusqu’à 998 caractères.
|
text | string | Le corps en texte brut.
|
html | string | Le corps HTML.
|
attachments[] | object[] | Jusqu’à 10 fichiers, 10 Mo au total. |
filenameobligatoire | string | Le nom du fichier.
|
content_typeobligatoire | string | Le type MIME, par exemple application/pdf.
|
contentobligatoire | string | Le fichier, encodé en base64. |
content_id | string | Un Content-ID, pour que html puisse faire référence au fichier avec cid:.
|
inline | boolean | Marque le fichier comme intégré au corps plutôt que joint. |
verdicts | object | Les verdicts de pourriel, de virus et d’authentification à enregistrer. virus FAIL stocke le message comme rejeté, comme pour un vrai courriel. |
spf | string | Le verdict à enregistrer. S’il est omis, c’est PASS.
|
dkim | string | Le verdict à enregistrer. S’il est omis, c’est PASS.
|
dmarc | string | Le verdict à enregistrer. S’il est omis, c’est PASS.
|
spam | string | Le verdict à enregistrer. S’il est omis, c’est PASS.
|
virus | string | Le verdict à enregistrer. S’il est omis, c’est PASS.
|
in_reply_to | string | Le Message-ID auquel ce message répond, pour le regroupement en fil.
|
headers[] | object[] | Jusqu’à 20 en-têtes supplémentaires. |
nameobligatoire | string | Le nom de l’en-tête. |
valueobligatoire | string | La valeur de l’en-tête. |
Réponses
201Le message simulé, sous la même forme que la réponse de GET /v1/emails/received/:id. livemode est toujours false.
Champ Type Description idobligatoirestring fromobligatoirestring from_nameobligatoirestring - Peut être null
toobligatoirestring[] ccobligatoirestring[] subjectobligatoirestring message_idobligatoirestring - Peut être null
in_reply_toobligatoirestring - Peut être null
received_atobligatoirestring - Format : date-time
statusobligatoirestring - Une valeur parmi : received | rejected
reject_reasonobligatoirestring - Peut être null
verdictsobligatoireobject spfobligatoirestring dkimobligatoirestring dmarcobligatoirestring spamobligatoirestring virusobligatoirestring attachments_countobligatoireinteger size_bytesobligatoireinteger charge_millicentsobligatoireinteger domain_idobligatoirestring - Peut être null
livemodeobligatoireboolean textobligatoirestring - Peut être null
htmlobligatoirestring - Peut être null
html_formatobligatoirestring - Une valeur parmi : cid | links | sanitized
remote_imagesobligatoireinteger Images distantes mises de côté dans data-remote-src par html_format=sanitized ; null pour les autres formats.
- Peut être null
headers[]obligatoireobject[] nameobligatoirestring valueobligatoirestring referencesobligatoirestring[] reply_toobligatoirestring[] envelope_recipientsobligatoirestring[] body_purgedobligatoireboolean body_truncatedobligatoireboolean text ou html a été tronqué à 2 Mo (octets UTF-8) lors du stockage ; le message brut le conserve en entier.
raw_availableobligatoireboolean parse_failedobligatoireboolean attachments_bytesobligatoireinteger Taille totale des pièces jointes, en octets.
attachments[]obligatoireobject[] idobligatoirestring filenameobligatoirestring content_typeobligatoirestring content_idobligatoirestring - Peut être null
inlineobligatoireboolean size_bytesobligatoireinteger expires_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.
- 403TEST_KEY_REQUIRED : ce point de terminaison n’accepte que les clés de test.Le corps d’erreur standard.
- 422VALIDATION_ERROR (entrée invalide, ou pièces jointes de plus de 10 Mo au total) ou SIMULATE_RECIPIENT_NOT_OWNED (une adresse to/cc n’est ni l’adresse gérée de test du compte ni l’un de ses propres domaines en mode test).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
// Test keys only: no real sender involved.
const { data, error } = await honkio.emails.received.simulate({
from: 'sam@example.com',
to: ['support@yourdomain.ca'],
subject: 'Where is my order?',
text: 'Hi, it has been a week.',
})
if (error) throw new Error(error.message)
console.log(data.id)curl -X POST https://api.honkio.ca/v1/emails/received/simulate \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "sam@example.com",
"to": [
"support@yourdomain.ca"
],
"subject": "Where is my order?",
"text": "Hi, it has been a week."
}'/v1/emails/received/{id}Obtenir un courriel reçu
emails:rSDK Node.jshonkio.emails.received.get()Nécessite emails:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Réponses
200Le courriel reçu. html est réécrit pour que les images cid: pointent vers la route de la pièce jointe, sauf si html_format=cid demande l’original ; html_format=sanitized retire également les scripts et le balisage potentiellement dangereux, et place les images distantes dans data-remote-src (leur nombre figure dans remote_images).
Champ Type Description idobligatoirestring fromobligatoirestring from_nameobligatoirestring - Peut être null
toobligatoirestring[] ccobligatoirestring[] subjectobligatoirestring message_idobligatoirestring - Peut être null
in_reply_toobligatoirestring - Peut être null
received_atobligatoirestring - Format : date-time
statusobligatoirestring - Une valeur parmi : received | rejected
reject_reasonobligatoirestring - Peut être null
verdictsobligatoireobject spfobligatoirestring dkimobligatoirestring dmarcobligatoirestring spamobligatoirestring virusobligatoirestring attachments_countobligatoireinteger size_bytesobligatoireinteger charge_millicentsobligatoireinteger domain_idobligatoirestring - Peut être null
livemodeobligatoireboolean textobligatoirestring - Peut être null
htmlobligatoirestring - Peut être null
html_formatobligatoirestring - Une valeur parmi : cid | links | sanitized
remote_imagesobligatoireinteger Images distantes mises de côté dans data-remote-src par html_format=sanitized ; null pour les autres formats.
- Peut être null
headers[]obligatoireobject[] nameobligatoirestring valueobligatoirestring referencesobligatoirestring[] reply_toobligatoirestring[] envelope_recipientsobligatoirestring[] body_purgedobligatoireboolean body_truncatedobligatoireboolean text ou html a été tronqué à 2 Mo (octets UTF-8) lors du stockage ; le message brut le conserve en entier.
raw_availableobligatoireboolean parse_failedobligatoireboolean attachments_bytesobligatoireinteger Taille totale des pièces jointes, en octets.
attachments[]obligatoireobject[] idobligatoirestring filenameobligatoirestring content_typeobligatoirestring content_idobligatoirestring - Peut être null
inlineobligatoireboolean size_bytesobligatoireinteger expires_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.
- 404RECEIVED_EMAIL_NOT_FOUND : aucun courriel reçu portant cet identifiant dans ce compte. Une clé de test ne trouve que les messages reçus à l’adresse gérée de test.Le corps d’erreur standard.
- 422VALIDATION_ERROR : html_format ne vaut ni cid, ni links, ni sanitized.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: email, error } = await honkio.emails.received.get('RECEIVED_EMAIL_ID')
if (error) throw new Error(error.message)
console.log(email.from, email.subject, email.text)curl https://api.honkio.ca/v1/emails/received/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emails/received/{id}/rawTélécharger le MIME brut d’un courriel reçu
emails:rSDK Node.jshonkio.emails.received.raw()Nécessite emails:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Réponses
- 200Le message MIME brut, exactement tel qu’il a été reçu.
- 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.
- 404RECEIVED_EMAIL_NOT_FOUND : aucun courriel reçu portant cet identifiant dans ce compte. Une clé de test ne trouve que les messages reçus à l’adresse gérée de test.Le corps d’erreur standard.
- 410ATTACHMENT_EXPIRED : le message brut ou la pièce jointe n’est plus conservé (durée de conservation de 40 jours).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: mime, error } = await honkio.emails.received.raw('RECEIVED_EMAIL_ID')
if (error) throw new Error(error.message)
console.log(await mime.text())curl https://api.honkio.ca/v1/emails/received/ID/raw \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emails/received/{id}/attachments/{attachmentId}Télécharger une pièce jointe reçue
emails:rSDK Node.jshonkio.emails.received.attachment()Nécessite emails:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string | |
attachmentIdobligatoirechemin | string |
Réponses
- 200Les octets de la pièce jointe, avec l’en-tête Content-Disposition défini sur le nom de fichier d’origine.
- 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.
- 404RECEIVED_EMAIL_NOT_FOUND : aucun courriel reçu portant cet identifiant dans ce compte. Une clé de test ne trouve que les messages reçus à l’adresse gérée de test.Le corps d’erreur standard.
- 410ATTACHMENT_EXPIRED : le message brut ou la pièce jointe n’est plus conservé (durée de conservation de 40 jours).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: file, error } = await honkio.emails.received.attachment('RECEIVED_EMAIL_ID', 'ATTACHMENT_ID')
if (error) throw new Error(error.message)
const bytes = new Uint8Array(await file.arrayBuffer())
console.log(bytes.length)curl https://api.honkio.ca/v1/emails/received/ID/attachments/ATTACHMENT_ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emailsLister les courriels
emails:rSDK Node.jshonkio.emails.list()Nécessite emails:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
limitrequête | string | De 1 à 100. Valeur par défaut : 50. |
cursorrequête | string | La valeur next_cursor de la page précédente. |
statusrequête | string | L’une des valeurs suivantes : queued, scheduled, sending, sent, delivered, bounced, complained, rejected, failed, cancelled. |
tagrequête | string | string[] | name:value. Répétez le paramètre pour exiger plusieurs conditions ; toutes doivent être remplies. |
torequête | string | Une adresse complète figurant dans la liste to du courriel (pas cc ni bcc), comparée à l’identique, sans égard à la casse. |
fromrequête | string | L’adresse complète de l’expéditeur, comparée exactement, sans tenir compte de la casse. |
sincerequête | string | Date et heure ISO 8601 avec décalage horaire : created_at égal ou postérieur à ce moment. |
untilrequête | string | Date et heure ISO 8601 avec décalage horaire : created_at égal ou antérieur à ce moment. |
domain_idrequête | string | L’identifiant du domaine d’envoi (GET /v1/email-domains). |
Réponses
200Une page de courriels envoyés dans le mode de la clé appelante (une clé de production ne liste jamais un envoi de test, ni une clé de test un envoi réel), du plus récent au plus ancien.
Champ Type Description data[]obligatoireobject[] idobligatoirestring fromobligatoirestring toobligatoirestring[] subjectobligatoirestring body_purged_atobligatoirestring Défini une fois l’objet et le corps purgés par la politique de conservation.
- Format : date-time
- Peut être null
statusobligatoirestring - Une valeur parmi : queued | scheduled | sending | sent | delivered | bounced | complained | rejected | failed | cancelled
ses_message_idobligatoirestring - Peut être null
is_commercialobligatoireboolean attachments_countobligatoireinteger livemodeobligatoireboolean tags[]obligatoireobject[] nameobligatoirestring valueobligatoirestring created_atobligatoirestring - Format : date-time
has_moreobligatoireboolean next_cursorobligatoirestring - 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 : 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
const { data, error } = await honkio.emails.list({ status: 'bounced', limit: 20 })
if (error) throw new Error(error.message)
for (const email of data.data) console.log(email.id, email.to)curl https://api.honkio.ca/v1/emails \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emailsEnvoyer un courriel
emails:wSDK Node.jshonkio.emails.send()Nécessite emails:w.
Corps de la requête
Un courriel : un objet avec html, text ou les deux, ou un modèle.
| Champ | Type | Description |
|---|---|---|
from | string | Expéditeur, avec un nom au besoin. Son domaine doit être un domaine d’envoi vérifié de votre compte. Facultatif quand le modèle en définit un.
|
toobligatoire | string | string[] | Une chaîne ou un tableau ; au plus 50 destinataires entre to, cc et bcc. |
cc | string | string[] | Une chaîne ou un tableau. |
bcc | string | string[] | Une chaîne ou un tableau. |
reply_to | string | string[] | Une chaîne ou un tableau. |
subject | string | Jusqu’à 998 caractères. Omettez subject, html et text pour envoyer un modèle.
|
html | string | Le corps HTML. Fournissez html, text ou les deux, sauf pour envoyer un modèle. |
text | string | Le corps en texte brut. Fournissez html, text ou les deux, sauf pour envoyer un modèle. |
template | object | Envoie un modèle enregistré au lieu de subject, html et text : son identifiant ou son alias, et les valeurs de ses variables. |
idobligatoire | string | L’identifiant ou l’alias du modèle.
|
variables | object | Les valeurs des variables du modèle, par clé.
|
variables | object | Valeurs à substituer dans subject, html et text. Ignoré quand template est présent ; les variables propres à un modèle vont dans template.variables.
|
headers | object | En-têtes de courriel supplémentaires, envoyés tels quels.
|
attachments[] | object[] | Jusqu’à 10 fichiers et 25 Mo au total. Les 2 premiers Mo par destinataire sont inclus ; chaque Mo entamé au-delà est facturé par destinataire (GET /v1/pricing). Les exécutables et les scripts sont refusés.
|
filenameobligatoire | string | Le nom de fichier que voit le destinataire.
|
content | string | Le fichier, encodé en base64. Fournissez exactement un seul de content, content_base64 ou path. |
content_base64 | string | Le fichier, encodé en base64 (comme content). |
path | string | Une URL HTTPS d’où HonkIO récupère le fichier.
|
content_type | string | Le type MIME, par exemple application/pdf. Déduit s’il est omis.
|
content_id | string | Intègre le fichier dans le corps : faites-y référence dans html avec cid: suivi de cet identifiant. |
tags[] | object[] | Jusqu’à 10 paires name et value, chaque partie de 1 à 256 lettres, chiffres, traits de soulignement ou traits d’union. Les noms commençant par honkio_ sont réservés. Les tags sont conservés après la purge de l’objet et du corps ; n’y mettez aucun renseignement personnel.
|
nameobligatoire | string | |
valueobligatoire | string | |
is_commercial | boolean | false par défaut. true désigne un message commercial au sens de la LCAP : il va à un seul destinataire, exige un consentement consigné pour cette adresse et porte un pied de page et un en-tête de désabonnement.
|
scheduled_at | string | Envoi différé : une date et heure ISO 8601 avec décalage horaire, de 1 minute à 30 jours à l’avance.
|
tracking | object | Suivi des ouvertures et des clics pour ce courriel, qui prime sur le réglage du domaine d’envoi.
|
opens | boolean | Suit les ouvertures au moyen d’un pixel. |
clicks | boolean | Suit les clics en réécrivant les liens. |
disable_unsubscribe_footer | boolean | Omet le pied de page de désabonnement que HonkIO ajoute à un courriel commercial. L’en-tête de désabonnement en un clic est tout de même envoyé : placez votre propre lien de désabonnement dans le corps.
|
Réponses
- 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.
- 403FORBIDDEN (la clé n’a pas l’autorisation emails:w), EMAIL_DOMAIN_NOT_ALLOWED (cette clé ne peut pas envoyer depuis ce domaine) ou SENDING_PAUSED (l’envoi réel de courriels est mis en pause pour ce compte à la suite d’un taux élevé de rebonds ou de plaintes ; details contient paused_until, reason et channel: "email"). Les clés de test ne sont jamais mises en pause.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.emails.send({
from: 'Acme <hello@yourdomain.ca>',
to: 'sam@example.com',
subject: 'Your receipt',
html: '<p>Thanks for your order, Sam.</p>',
})
if (error) throw new Error(`${error.name}: ${error.message}`)
console.log(data.id, data.status)curl -X POST https://api.honkio.ca/v1/emails \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme <hello@yourdomain.ca>",
"to": "sam@example.com",
"subject": "Your receipt",
"html": "<p>Thanks for your order, Sam.</p>"
}'/v1/emails/{id}Obtenir un courriel par identifiant
emails:rSDK Node.jshonkio.emails.get()Nécessite emails:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Réponses
200Le courriel envoyé, avec la chronologie de ses événements.
Champ Type Description idobligatoirestring fromobligatoirestring toobligatoirestring[] subjectobligatoirestring body_purged_atobligatoirestring Défini une fois l’objet et le corps purgés par la politique de conservation.
- Format : date-time
- Peut être null
statusobligatoirestring - Une valeur parmi : queued | scheduled | sending | sent | delivered | bounced | complained | rejected | failed | cancelled
ses_message_idobligatoirestring - Peut être null
is_commercialobligatoireboolean attachments_countobligatoireinteger livemodeobligatoireboolean tags[]obligatoireobject[] nameobligatoirestring valueobligatoirestring created_atobligatoirestring - Format : date-time
from_nameobligatoirestring - Peut être null
ccobligatoirestring[] bccobligatoirestring[] htmlobligatoirestring - Peut être null
textobligatoirestring - Peut être null
templateobligatoireany | object attachments[]obligatoireobject[] filenameobligatoirestring content_typeobligatoirestring content_idobligatoirestring - Peut être null
size_bytesobligatoireinteger cost_centsobligatoireinteger Nombre de cents entiers débités du solde pour cet envoi ; souvent 0 pour un seul courriel à une fraction de cent.
charge_millicentsobligatoireinteger Le prix exact consommé par l’envoi, en millicents CAD.
attachment_bytesobligatoireinteger Nombre total d’octets de pièces jointes sur lequel les frais ont été calculés.
scheduled_atobligatoirestring - Format : date-time
- Peut être null
updated_atobligatoirestring - Format : date-time
events[]obligatoireobject[] typeobligatoirestring occurred_atobligatoirestring - Format : date-time
payloadobligatoireany - 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 (details.resource "email") : aucun courriel portant cet id sur ce compte dans le mode de la clé appelante. Une clé de test ne trouve que les envois de test, une clé de production que les envois réels.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.emails.get('EMAIL_ID')
if (error) throw new Error(error.message)
console.log(data.status, data.events)curl https://api.honkio.ca/v1/emails/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emails/{id}Reprogrammer un courriel programmé
emails:mSDK Node.jshonkio.emails.update()Nécessite emails:m.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Corps de la requête
La nouvelle heure d’envoi d’un courriel programmé.
| Champ | Type | Description |
|---|---|---|
scheduled_atobligatoire | string | Une date et heure ISO 8601 avec décalage horaire, de 1 minute à 30 jours à l’avance.
|
Réponses
- 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.
- 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.emails.update('EMAIL_ID', { scheduledAt: '2026-10-01T14:00:00Z' })
if (error) throw new Error(error.message)
console.log(data.scheduled_at)curl -X PATCH https://api.honkio.ca/v1/emails/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"scheduled_at": "2026-10-01T14:00:00Z"
}'/v1/emails/{id}Annuler un courriel programmé
emails:dSDK Node.jshonkio.emails.cancel()Nécessite emails:d.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
Réponses
- 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.
- 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.emails.cancel('EMAIL_ID')
if (error) throw new Error(error.message)curl -X DELETE https://api.honkio.ca/v1/emails/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/emails/batchEffectuer un envoi groupé de courriels
emails:wSDK Node.jshonkio.batch.send()Nécessite emails:w.
Corps de la requête
Un tableau JSON d’au plus 100 courriels indépendants, ou un même message pour au plus 500 destinataires, sous forme d’objet avec une liste recipients. Les pièces jointes ne sont pas offertes en envoi groupé, et la programmation ne l’est que sous forme d’objet.
Un tableau d’au plus 100 courriels, chacun envoyé séparément. Chaque élément est vérifié avant tout envoi.
| Champ | Type | Description |
|---|---|---|
from | string | Expéditeur, avec un nom au besoin. Son domaine doit être un domaine d’envoi vérifié de votre compte. Facultatif quand le modèle en définit un.
|
toobligatoire | string | string[] | Une chaîne ou un tableau ; au plus 50 destinataires entre to, cc et bcc. |
cc | string | string[] | Une chaîne ou un tableau. |
bcc | string | string[] | Une chaîne ou un tableau. |
reply_to | string | string[] | Une chaîne ou un tableau. |
subject | string | Jusqu’à 998 caractères. Omettez subject, html et text pour envoyer un modèle.
|
html | string | Le corps HTML. Fournissez html, text ou les deux, sauf pour envoyer un modèle. |
text | string | Le corps en texte brut. Fournissez html, text ou les deux, sauf pour envoyer un modèle. |
template | object | Envoie un modèle enregistré au lieu de subject, html et text : son identifiant ou son alias, et les valeurs de ses variables. |
idobligatoire | string | L’identifiant ou l’alias du modèle.
|
variables | object | Les valeurs des variables du modèle, par clé.
|
variables | object | Valeurs à substituer dans subject, html et text. Ignoré quand template est présent ; les variables propres à un modèle vont dans template.variables.
|
headers | object | En-têtes de courriel supplémentaires, envoyés tels quels.
|
tags[] | object[] | Jusqu’à 10 paires name et value, chaque partie de 1 à 256 lettres, chiffres, traits de soulignement ou traits d’union. Les noms commençant par honkio_ sont réservés. Les tags sont conservés après la purge de l’objet et du corps ; n’y mettez aucun renseignement personnel.
|
nameobligatoire | string | |
valueobligatoire | string | |
is_commercial | boolean | false par défaut. true désigne un message commercial au sens de la LCAP : il va à un seul destinataire, exige un consentement consigné pour cette adresse et porte un pied de page et un en-tête de désabonnement.
|
tracking | object | Suivi des ouvertures et des clics pour ce courriel, qui prime sur le réglage du domaine d’envoi.
|
opens | boolean | Suit les ouvertures au moyen d’un pixel. |
clicks | boolean | Suit les clics en réécrivant les liens. |
disable_unsubscribe_footer | boolean | Omet le pied de page de désabonnement que HonkIO ajoute à un courriel commercial. L’en-tête de désabonnement en un clic est tout de même envoyé : placez votre propre lien de désabonnement dans le corps.
|
Un même message pour au plus 500 destinataires, chacun avec ses propres variables.
| Champ | Type | Description |
|---|---|---|
from | string | Expéditeur, avec un nom au besoin. Son domaine doit être un domaine d’envoi vérifié de votre compte. Facultatif quand le modèle en définit un.
|
subject | string | Jusqu’à 998 caractères. Omettez subject, html et text pour envoyer un modèle.
|
html | string | Le corps HTML. Fournissez html, text ou les deux, sauf pour envoyer un modèle. |
text | string | Le corps en texte brut. Fournissez html, text ou les deux, sauf pour envoyer un modèle. |
template | object | Envoie un modèle enregistré au lieu de subject, html et text : son identifiant ou son alias, et les valeurs de ses variables. |
idobligatoire | string | L’identifiant ou l’alias du modèle.
|
variables | object | Les valeurs des variables du modèle, par clé.
|
headers | object | En-têtes de courriel supplémentaires, envoyés tels quels.
|
tags[] | object[] | Jusqu’à 10 paires name et value, chaque partie de 1 à 256 lettres, chiffres, traits de soulignement ou traits d’union. Les noms commençant par honkio_ sont réservés. Les tags sont conservés après la purge de l’objet et du corps ; n’y mettez aucun renseignement personnel.
|
nameobligatoire | string | |
valueobligatoire | string | |
is_commercial | boolean | false par défaut. true désigne un message commercial au sens de la LCAP : il va à un seul destinataire, exige un consentement consigné pour cette adresse et porte un pied de page et un en-tête de désabonnement.
|
scheduled_at | string | Envoi différé : une date et heure ISO 8601, de 1 minute à 30 jours à l’avance.
|
tracking | object | Suivi des ouvertures et des clics pour ce courriel, qui prime sur le réglage du domaine d’envoi.
|
opens | boolean | Suit les ouvertures au moyen d’un pixel. |
clicks | boolean | Suit les clics en réécrivant les liens. |
disable_unsubscribe_footer | boolean | Omet le pied de page de désabonnement que HonkIO ajoute à un courriel commercial. L’en-tête de désabonnement en un clic est tout de même envoyé : placez votre propre lien de désabonnement dans le corps.
|
recipients[]obligatoire | object[] | Jusqu’à 500 destinataires, chacun recevant son propre courriel. |
toobligatoire | string | L’adresse du destinataire.
|
variables | object | Les valeurs des variables de ce destinataire, dans le contenu ou dans le modèle.
|
Réponses
- 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.
- 403FORBIDDEN, EMAIL_DOMAIN_NOT_ALLOWED ou SENDING_PAUSED (l’envoi réel de courriels est mis en pause ; details contient paused_until, reason et channel: "email"). Refusé avant l’envoi de tout élément.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.batch.send([
{ from: 'Acme <hello@yourdomain.ca>', to: 'sam@example.com', subject: 'Your receipt', html: '<p>Thanks, Sam.</p>' },
{ from: 'Acme <hello@yourdomain.ca>', to: 'alex@example.com', subject: 'Your receipt', html: '<p>Thanks, Alex.</p>' },
])
if (error) throw new Error(error.message)
console.log(data.batch_id, data.data.length)curl -X POST https://api.honkio.ca/v1/emails/batch \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"from": "Acme <hello@yourdomain.ca>",
"to": "sam@example.com",
"subject": "Your receipt",
"html": "<p>Thanks, Sam.</p>"
},
{
"from": "Acme <hello@yourdomain.ca>",
"to": "alex@example.com",
"subject": "Your receipt",
"html": "<p>Thanks, Alex.</p>"
}
]'
HonkIO