Blog

Meet @honkio/node, our Node.js SDK (oh, and HonkIO receives email now)

The official Node.js SDK for HonkIO is on npm, covering SMS, email and webhooks. We also, almost in passing, started receiving email: a managed address with no DNS, or your own domain with one MX record, stored in Canada.

We have a new Node.js SDK to show you, and it is the main event of this post. There is one other small thing at the end. Try not to skip ahead.

@honkio/node

@honkio/node is the official Node.js client for HonkIO, now on npm. It runs on Node 18 or newer, works from ESM and CommonJS, and has no runtime dependencies.

sh
npm install @honkio/node

Every call resolves to { data, error }, and an API error never throws. error.name is the API code, such as NON_CANADIAN_NUMBER, or network_error when no response arrived, so one if statement covers every failure:

ts
import { Honkio } from '@honkio/node'

const honkio = new Honkio(process.env.HONKIO_API_KEY)

const { data, error } = await honkio.messages.send({
  from: '+1416XXXXXXX',
  to: '+1613XXXXXXX',
  body: 'Your table is ready.',
})

if (error) console.error(error.name, error.message) // e.g. NON_CANADIAN_NUMBER
else console.log(data.id, data.status)

It covers the whole API on both channels:

  • SMS: messages, phone numbers (search, provision, release) and verification codes
  • CASL consents for phone numbers and email addresses
  • Email: sends, batches, scheduling, stored templates with versions, sending domains and suppressions
  • Webhooks: endpoints, signature verification, secret rotation, delivery logs and dead-letter replay

You write request fields in camelCase and get the API response back exactly as it was sent. The guide at honkio.ca/docs/sdk has every resource with examples.

MCP 1.9.0

Version 1.9.0 of @honkio/mcp is on npm too, with 64 tools. The hosted endpoint at mcp.honkio.ca is already up to date, and npx picks up the new version the next time your agent starts.

Oh, did we forget to mention receiving email?

We may have buried the lede. HonkIO receives email now, too.

Every account gets a managed inbound address with nothing to set up: no DNS, no domain, and any local part works. Ask the API for it, then fetch each message when it arrives:

ts
const { data: address } = await honkio.emails.received.address()
console.log(address.example) // anything@<your-slug>.inbound.honkio.ca

// In your email.received webhook handler: the event carries metadata only
const { data: email } = await honkio.emails.received.get(event.data.email.id)
console.log(email.from, email.subject, email.verdicts)

To receive at your own domain instead, verify it for sending, turn receiving on and publish the one MX record the API returns. A subdomain is recommended, so the rest of your mail setup stays as it is. The email.received webhook carries metadata only, never the body, so fetch the full message by id. Each message comes with SPF, DKIM, DMARC and spam verdicts, and attachments you can download.

  • Each received message costs $0.0025 CAD, the same as sending one, for its first 1 MB, and $0.002 for each started MB after that. Mail blocked as a virus is free
  • Received mail is stored in Canada, in Montréal (ca-central-1), like the rest of your account
  • The message body is kept for 90 days; the raw message and its attachments for 40 days
  • Each account receives up to 1,000 emails a day by default; mail over the cap is not charged
  • Live receiving needs the account owner's phone verified, like live sending. Test keys can simulate received mail for free

The receiving guide at honkio.ca/docs/email#receiving covers domains, verdicts, attachments and the webhook. If you are weighing HonkIO against a US email provider, honkio.ca/compare/us-email-providers covers what changes.

  • HonkIO now sends email, on the account you already have

    Transactional email from your own domain, with CASL built in, records stored in Canada and pricing in CAD: $0.0025 per recipient. Same account, same API keys and same balance as your SMS.

  • Your AI agent can now send Canadian SMS

    HonkIO now ships a Model Context Protocol server, so Claude, Cursor and Copilot can send SMS, verify phone numbers and check CASL consent directly, with no SDK and no glue code.

Send your first message this afternoon.