SMS
Tarifs et limites
Le coût de chaque SMS, vérification et numéro, lu à l’exécution, et les limites d’envoi qui gardent le marketing de masse hors de la plateforme.
Tarification
Les prix sont définis à l'exécution et peuvent changer sans nouvelle version : lisez-les plutôt que de les coder en dur. Le nom de chaque champ en donne l'unité : les champs _cents sont en cents CAD, les champs _millicents (courriel et push) en millicents CAD, des millièmes de cent, et le champ overage_tenth_cents_per_user des auth_plans en dixièmes de cent. L'envoi est facturé par segment : message_cost_cents × le nombre de segments en lesquels l'opérateur découpe le texte. Les segments sont comptés comme l'opérateur les compte : guillemets typographiques, tirets et points de suspension sont convertis en GSM-7 (160 caractères, puis 153 par segment), tandis que les émojis et la plupart des lettres accentuées imposent des segments Unicode (70, puis 67). Le montant est ajusté au décompte de segments de l'opérateur après l'envoi. Un message refusé d'emblée par l'opérateur ne coûte rien, pas plus qu'un envoi vers un central réservé (555-XXXX et semblables), refusé ici ; un message accepté par l'opérateur mais non livré conserve ses frais. Un texte de plus de 10 segments est rejeté avec 422 MESSAGE_TOO_LONG avant toute facturation. verification_cost_cents couvre un OTP typique d'un seul segment ; un app_name long ou non GSM peut ajouter un segment. phone_number_activation_fee_cents correspond aux frais uniques d'un numéro local, facturés avec le premier mois et non remboursés à la libération. Pour un numéro sans frais, phone_number_tollfree_monthly_cost_cents est le loyer mensuel et phone_number_tollfree_activation_fee_cents les frais d'activation uniques, 0 s'il n'y en a pas (son résultat de recherche les indique aussi dans activation_fee_cents) ; tollfree_verification_fee_cents correspond aux frais uniques par demande de vérification sans frais, payés par carte à sa première soumission. inbound_message_cost_cents est facturé par segment pour chaque SMS reçu sur un numéro provisionné, quel que soit l'expéditeur ou l'opérateur, sauf les mots-clés STOP, START et HELP ; un message reçu est débité même si le solde passe sous zéro, ce qui suspend l'envoi jusqu'à la prochaine recharge.
# Current prices. Public: no API key needed.
# SMS, verification and number prices are CAD cents; email and push
# prices are CAD millicents (thousandths of a cent: 250 is $0.0025, or
# $2.50 per 1,000); an auth plan's overage is tenths of a cent per user
# (25 is $0.025).
# The email_* fields appear while email is available, push_* while push is.
curl https://api.honkio.ca/v1/pricing
# Response 200:
# {
# "message_cost_cents": 3,
# "verification_upcharge_cents": 25,
# "verification_cost_cents": 28,
# "phone_number_upfront_cost_cents": 250,
# "phone_number_monthly_cost_cents": 250,
# "phone_number_activation_fee_cents": 100,
# "phone_number_tollfree_monthly_cost_cents": 9900,
# "phone_number_tollfree_activation_fee_cents": 0,
# "tollfree_verification_fee_cents": 49900,
# "inbound_message_cost_cents": 3,
# "email_price_millicents": 250,
# "email_attachment_included_bytes": 2097152,
# "email_attachment_price_millicents_per_mb": 200,
# "email_attachment_max_bytes": 26214400,
# "email_inbound_price_millicents": 250,
# "email_inbound_included_bytes": 1048576,
# "email_inbound_price_millicents_per_mb": 200,
# "push_price_millicents": 50,
# "push_free_monthly": 0,
# "auth_plans": {
# "free": { "fee_cents": 0, "included_users": 250, "overage_tenth_cents_per_user": null },
# "pro": { "fee_cents": 4900, "included_users": 2500, "overage_tenth_cents_per_user": 25 },
# "business": { "fee_cents": 24900, "included_users": 10000, "overage_tenth_cents_per_user": 20 }
# }
# }Les requêtes en mode test sont tarifées de façon identique dans la réponse, mais ne sont jamais facturées : vous pouvez donc voir ce que coûterait une intégration sans rien dépenser.
Les numéros sans frais envoient et reçoivent au même prix par segment que les numéros locaux. Avant de pouvoir envoyer des SMS, un numéro sans frais doit être vérifié une fois : 499,00 $ par demande, payés par carte plutôt que sur votre solde. Voir Numéros sans frais.
Limites d’envoi
HonkIO est conçu pour la messagerie transactionnelle et relationnelle, pas pour les campagnes, et la délivrabilité de chaque client repose sur un profil opérateur partagé. Ces limites gardent le marketing de masse hors de la plateforme ; une clinique, un entrepreneur ou un SaaS qui envoie des codes ne les remarquera pas. Les limites d’envoi s’appliquent uniquement au mode réel ; la règle sur les raccourcisseurs de liens, les vérifications de destination réservée et injoignable, et le plafond de taille des diffusions s’appliquent aux deux modes.
- Plafond quotidien : les nouveaux comptes peuvent envoyer 250 messages réels par 24 heures glissantes. Il ne se lève pas de lui-même. 30 jours après votre premier message réel, vous pouvez demander un volume plus élevé depuis le tableau de bord ; l’approbation fixe 1 000 par jour ou le chiffre demandé. Les envois refusés renvoient 429 DAILY_LIMIT_REACHED avec votre limite et votre compte. La demande exige une entreprise vérifiée (voir Vérification d’entreprise ci-dessous).
- Messages identiques : un même corps de message peut atteindre au plus 250 destinataires distincts par 24 heures (429 FANOUT_LIMIT_REACHED). Les messages personnalisés ne sont pas concernés.
- Débit par numéro : un numéro à 10 chiffres envoie 10 segments par minute, le rythme auquel l’opérateur les envoie; un message de 3 segments en utilise donc trois. Un envoi est refusé tant qu’au moins une minute complète de segments est déjà en attente (429 NUMBER_RATE_LIMITED avec Retry-After). Un numéro sans frais vérifié envoie jusqu’à 1 200 segments par minute. Une diffusion à un groupe de contacts n’est pas soumise à ce débit, mais ne peut pas mettre plus de 1 200 segments dans la file d’un numéro à 10 chiffres (429 NUMBER_QUEUE_FULL); les numéros sans frais n’ont pas ce plafond.
- Diffusions : jusqu’à 250 destinataires par diffusion de groupe et 3 diffusions par 24 heures (422 BROADCAST_TOO_LARGE, 429 BROADCAST_LIMIT_REACHED).
- Numéros sans frais : les envois depuis un numéro sans frais vérifié ont leurs propres limites, comptées à part des envois depuis vos numéros locaux, si bien que les uns n’entament pas les autres. Il n’y a pas de période probatoire : 10 000 messages réels par 24 heures glissantes (moins si HonkIO a limité votre compte sous sa limite quotidienne approuvée), un même corps de message vers au plus 2 500 destinataires distincts, et des diffusions de groupe d’au plus 2 500 destinataires, 30 par 24 heures. Un refus indique quelle limite a été atteinte (details.tier vaut toll_free ou local). Le plafond par destinataire, la pause automatique, la règle sur les raccourcisseurs de liens et les plafonds de rechargement sont les mêmes pour les deux.
- Les raccourcisseurs de liens (bit.ly, tinyurl et similaires) sont refusés dans les deux modes, car les opérateurs les filtrent (422 LINK_SHORTENER_BLOCKED). Utilisez l’URL complète.
- Avertissement de livraison, puis pause automatique : si plus de 10 % de vos 50 derniers messages réels échouent chez l’opérateur, vous recevez un courriel (et l’événement account.delivery_warning) sans aucune pause. Si, sur vos envois récents, plus de 1 % des destinataires se désabonnent (au moins cinq personnes ; une réponse STOP et un désabonnement que vous enregistrez vous-même comptent tous deux) ou plus de 5 % des messages sont rejetés par les opérateurs, l’envoi réel est suspendu 24 heures et vous êtes avisé par courriel (403 SENDING_PAUSED avec l’heure de reprise ; l’événement account.sending_paused est émis).
- Rechargements : le solde ne peut dépasser 500 $ et les rechargements sont limités à 1 000 $ par 30 jours. Une entreprise vérifiée peut demander des limites plus élevées.
- Plafond par destinataire : 30 messages vers un même destinataire par heure et 100 par 24 heures (429 RECIPIENT_RATE_LIMITED avec Retry-After). Une conversation bidirectionnelle n’en approche jamais ; un script qui réessaie le même numéro, oui.
- Les messages non livrés sont facturés : un message accepté par l’opérateur mais non livré conserve ses frais. Un central réservé (555-XXXX, centraux N11 comme 411 ou 911, codes de test des opérateurs, centraux commençant par 0 ou 1) est refusé sans frais avec 422 RESERVED_DESTINATION, en mode test aussi, et un indicatif régional réservé (555, 911 et semblables) comme tout numéro non canadien. Tout ce qui réessaie devrait envoyer un en-tête Idempotency-Key afin qu’une nouvelle tentative ne devienne jamais un second débit. Une heure de dépenses inhabituelles déclenche un courriel et l’événement account.spend_warning.
- Numéros injoignables : après 3 échecs consécutifs chez l’opérateur vers un même numéro en 30 jours, tous clients HonkIO confondus, les envois vers ce numéro sont refusés sans frais (422 UNDELIVERABLE_NUMBER avec le nombre d’échecs, la date d’inscription et la date d’expiration) pendant 90 jours, puis réessayés au cas où le numéro aurait été réattribué.
- Plafond entrant : chaque compte peut recevoir au plus 1 000 segments par fenêtre glissante de 24 heures par défaut, un long texto en comptant plusieurs (relevé par le soutien sur demande). Les textos au-delà du plafond sont enregistrés sans leur contenu, sans frais, et ne déclenchent pas message.received ; le premier de la fenêtre déclenche account.inbound_sms_capped. STOP, START et HELP sont toujours traités.
Envoyer à une liste détaille le rythme par numéro avec un exemple et montre comment gérer les refus 429 et les nouvelles tentatives.
curl https://api.honkio.ca/v1/send-limit \
-H "Authorization: Bearer mk_live_YOUR_KEY"
# → { "daily_limit": 250, "sent_last_24h": 12, "remaining": 238,
# "recipient_rate_per_hour": 30, "recipient_rate_per_day": 100,
# "probation": { "ends_at": "2026-09-26T14:02:11.000Z", "eligible_to_request": false },
# "paused_until": null, "requests": [] }Consultez vos limites et votre utilisation avec GET /v1/send-limit, et déposez une demande avec POST /v1/send-limit/requests. Chaque chiffre ci-dessus est une valeur par défaut de la plateforme qui peut être relevée par compte.
Rechargement automatique
Le rechargement automatique prélève votre carte enregistrée et crédite votre solde sans recharge manuelle. Activez-le depuis la page de facturation du tableau de bord : vous choisissez un seuil de solde bas et un montant, et la première recharge enregistre la carte pour les prélèvements suivants.
- Il se déclenche quand votre solde passe sous votre seuil, et dans les 24 heures qui précèdent le loyer mensuel des numéros si votre solde ne le couvrirait pas. Le seuil minimal est de 5,00 $ et le montant minimal de 10,00 $. Le montant doit être au moins égal au seuil, afin qu’un seul rechargement ramène votre solde au-dessus de celui-ci.
- Votre solde est vérifié environ une fois par minute : une rafale d’envois peut donc atteindre 0 $ entre deux vérifications. Choisissez un seuil qui laisse de la marge pour vos pointes d’envoi.
- Chaque prélèvement compte dans vos limites de rechargement (solde maximal et total sur 30 jours). Un prélèvement qui les dépasserait est ignoré, et le tableau de bord vous l’indique.
- Si nous ne pouvons pas prélever votre carte, le rechargement automatique se met en pause et nous vous écrivons. Il se met aussi en pause lorsqu’un de vos paiements est remboursé, et après 3 prélèvements en 24 heures. Un rechargement manuel ne le réactive pas. Pour reprendre, utilisez Recharger pour reprendre dans la section Rechargement automatique de la page de facturation, ce qui est un nouveau rechargement qui enregistre de nouveau votre carte. Si votre compte fait l’objet d’un examen, le rechargement automatique reste en pause jusqu’à ce que le soutien de HonkIO le lève, et un rechargement ne le reprend pas. GET /v1/auto-topup renvoie vos réglages et les tentatives récentes, et les événements webhook account.auto_topup_succeeded et account.auto_topup_paused signalent chaque résultat.
Vérification d’entreprise
Les demandes de numéros supplémentaires, de volume d’envoi plus élevé, de limites de rechargement plus élevées et de vérification de numéro sans frais sont réservées aux entreprises vérifiées. La vérification est gratuite : indiquez votre entreprise et une personne-ressource dans Paramètres, Vérification d’entreprise (ou PUT /v1/business-verification, puis POST /v1/business-verification/submit), et notre équipe les compare aux registres publics et à votre site Web, habituellement en quelques jours ouvrables.
- Une entreprise individuelle peut être vérifiée sans numéro d’entreprise de l’ARC : indiquez votre nom légal, le nom sous lequel vous faites affaire, votre adresse, un lien public qui montre votre travail et une phrase sur ce que vous faites. Toute autre forme d’organisation doit fournir son numéro d’entreprise, et la vérification de numéro sans frais l’exige toujours.
- D’ici là, les routes de demande répondent 403 BUSINESS_VERIFICATION_REQUIRED ; une soumission de vérification de numéro sans frais depuis un profil vérifié sans numéro d’entreprise répond 403 BUSINESS_NUMBER_REQUIRED.
- Demandez des limites de rechargement plus élevées avec POST /v1/account/topup-cap-requests ou depuis Facturation. Les limites déjà accordées restent en place si une vérification est révoquée par la suite. Une entreprise vérifiée peut modifier ses renseignements en tout temps : les modifications sont de nouveau examinées par HonkIO, et l’entreprise reste vérifiée, telle que HonkIO l’a vérifiée, jusqu’à la fin de l’examen (verified reste true dans GET /v1/business-verification, et verified_details garde les renseignements vérifiés par HonkIO, qu’utilise la vérification de numéro sans frais).
HonkIO