SMS API for Canada
Send and receive text messages in Canada
A REST API for two-way SMS with Canadian local and toll-free numbers. CASL consent and STOP replies are enforced on every send, prices are in CAD, and your data is stored in Canada.

What it is for
Messages people expect from a business they already deal with.
- Appointment and booking reminders
- Confirm a booking, remind people the day before, and let them reply to reschedule.
- Order and delivery updates
- Tell customers an order shipped, is out for delivery or is ready for pickup.
- Two-way conversations
- Replies come back to your number as a webhook, so your support or booking system can answer them.
- Verification codes
- Send a one-time code to confirm a phone number before you rely on it.
HonkIO is built for transactional and relationship messages, not bulk marketing campaigns. New accounts can send 250 live messages a day and can ask for a higher limit after 30 days of sending.
Sending and receiving
One request sends a message. Everything that happens after it arrives as a signed webhook.
- One request per message
- POST /v1/messages with from, to and body. The response carries the message id, its status and its cost.
- Delivery receipts
- A message moves from queued to sent, then to delivered, undelivered or failed, and each change arrives as an HMAC-signed webhook.
- Inbound SMS
- Texts to your numbers arrive as a message.received webhook with the sender, the body and the charge.
- Safe retries
- Send an Idempotency-Key header and a retried request returns the original message instead of sending, and charging, twice.
- Long messages
- A message over 160 characters (70 with emoji) goes out in parts, billed per part, up to 10 parts. Curly quotes are converted first so they do not shorten the limit.
- Errors in English and French
- Every error has a stable code and a message in the language of the Accept-Language header.
- Test mode
- Test keys run the same consent and destination checks as live keys, and send and charge nothing.
curl -X POST https://api.honkio.ca/v1/messages \
-H "Authorization: Bearer mk_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-ready" \
-d '{
"from": "+14165551234",
"to": "+16045559876",
"body": "Your order 1042 is ready for pickup."
}'This runs with a test key right after sign-up, before you buy a number or top up.
Canadian phone numbers
Search, buy and release numbers through the API. Messages go to and from Canadian numbers only.
- Local numbers in every province
- Search by area code, then provision a number in one call; it can send and receive right away. Buying a live number needs a verified mobile number on the account.
- Toll-free numbers
- 833, 844, 855, 866, 877 and 888 numbers work Canada-wide. They send SMS once the carrier has verified your business, and each recipient confirms by replying YES first.
- Sending pace
- A local number sends 10 message parts a minute and a verified toll-free number up to 1,200. Messages beyond that wait in the number's queue, and each send returns an estimate of when it will go out.
- Release when you are done
- Release a number through the API or the dashboard and its monthly rent stops.
CASL consent and STOP replies, enforced on every send
The rules are checked inside the API, before a message reaches a carrier.
- A send to a number with no consent on file, or one that has opted out, is refused with HTTP 451 and nothing is charged.
- Record express or implied consent one number at a time, in batches of up to 5,000, or from a CSV in the dashboard. Implied consent expires two years after the date you give, as CASL sets out.
- STOP, ARRÊT and the other standard keywords opt a number out automatically, and START opts it back in. The confirmation texts are free.
- Every keyword opt-out and opt-in arrives as a webhook, so your own records stay in step.
- Toll-free numbers need double opt-in: HonkIO texts the confirmation request and records the YES reply for you.
How CASL, PIPEDA and Quebec Law 25 applyRecording consent in the docs
Prices in Canadian dollars
Prepaid from one balance, with no plan, contract or monthly minimum.
- SMS sent
- $0.03 per message part
- SMS received
- $0.03 per message part
- Local number
- $2.50 a month, plus $1.00 once
- Toll-free number
- $99.00 a month
- Toll-free SMS verification
- $499.00 once per application, up to 5 numbers
STOP, START and HELP replies and their confirmations are free, and test mode is always free. A send refused for consent, an opt-out or a number outside Canada costs nothing.
Where your data is stored
Messages, phone numbers, consent records and logs are stored in Canada, in AWS ca-central-1 (Montréal).
API requests are processed on US-hosted infrastructure before they are stored, and the carrier that routes text messages may process them outside Canada. The privacy policy lists each case and who processes the data.
Erasing a phone number's data takes one API call: its message bodies are scrubbed and its consent, verification and contact records deleted, while the opt-out is kept so the number cannot be texted again by mistake.
Read the privacy policyHow CASL, PIPEDA and Quebec Law 25 apply
SDKs, AI agents and migration
Use the API from the language you already work in.
- SDKs
- Official clients for Node.js, Python and PHP, and a Laravel notification channel. The OpenAPI spec is public for anything else.
- MCP server
- Let Claude, Cursor or VS Code send SMS, buy numbers and check consent through the HonkIO MCP server, hosted or run locally.
- Moving from Twilio
- The migration guide maps Twilio Programmable Messaging fields, callbacks and statuses to HonkIO, side by side.
- Webhooks you can rely on
- Every event is signed with HMAC-SHA256 and retried for about a day; one that still fails is kept so you can replay it.
Questions
- Can I send SMS to numbers outside Canada?
- No. HonkIO sends to Canadian numbers only, from Canadian numbers. A send to any other number is refused with NON_CANADIAN_NUMBER and costs nothing.
- Do I need consent before I text someone?
- Yes. HonkIO refuses a send to any number with no consent record on file, or with an opt-out, with HTTP 451 before anything is charged. Record express or implied consent through the API, in batches, or from a CSV in the dashboard.
- What happens when someone replies STOP?
- HonkIO records the opt-out, sends a confirmation you are not charged for, and refuses later sends to that number until the person replies START. Your endpoint receives an opt_out.recorded webhook. ARRÊT and the other standard keywords work the same way.
- How are long messages billed?
- Per part, at the same rate. A message over 160 characters, or over 70 when it contains emoji, is sent in parts; a body longer than 10 parts is refused before anything is charged. Received messages are billed per part the same way.
- Can I try it before I pay?
- Yes. Test keys work as soon as you sign up, with no card: they run the same consent and destination checks as a live send, and send and charge nothing. A live send needs a top-up, a verified mobile number on the account and a number you own.
- Is my data stored in Canada?
- Yes. Messages, numbers, consent records and logs are stored in AWS ca-central-1 in Montréal. API requests are processed on US-hosted infrastructure before they are stored; the privacy policy describes each case.
- Can I use HonkIO for marketing campaigns?
- It is built for transactional and relationship messages: reminders, order updates, conversations and codes. Commercial messages are allowed with CASL consent on file, but accounts start at 250 messages a day, and per-recipient and broadcast limits keep bulk campaigns off the platform.
- I use Twilio today. How much has to change?
- Usually the base URL, the API key and the request format. The migration guide maps fields, status callbacks and statuses side by side, and lists the differences to plan for, such as recording consent before you send.
Related
- Verify
One-time codes by text message, to confirm that a Canadian phone number belongs to your user.
- Email API
Send transactional email from your own domain and receive replies over the API, with CASL checks and data stored in Canada.
- AI agents and MCP
An MCP server that lets AI agents send SMS, run phone verification, buy Canadian numbers and check CASL consent through HonkIO.
- SMS APIs in Canada compared
SMS APIs for Canada compared on CASL, French opt-outs, where data is stored and pricing in CAD.
- HonkIO vs US SMS providers
Why a Canadian SMS API: consent built in, data stored in Canada and prices in CAD, compared with US-based providers.
- HonkIO vs Twilio
HonkIO and Twilio compared for texting people in Canada: prices and carrier fees, where data is stored, CASL consent and French opt-outs.
- CASL for developers
What Canada’s anti-spam law asks of the code that sends texts and email: consent, identification, unsubscribes and records.
Try it in test mode first
Test keys work right after sign-up, with no card and no charges.