Send iMessages with Node.js
The short answer
Yes, Node.js can send iMessages. The Blue Reacher API is plain HTTPS with a bearer key, so native fetch sends a blue-bubble text from your dedicated line with zero dependencies, and one route handler receives replies and delivery states. No SDK to install, no A2P registration required, unlimited iMessages per line. Lines pace at 50 opted-in / 30 cold new contacts a day; replies never metered.
5 tools in this group
Trigger
Node.js
Under 9 seconds
Send iMessage
Result
Reply back in Node.js
iMessage
Hi Alex, following up on your demo request. Worth a quick chat this week?
Sent from your Node.js workflow
Yeah, tomorrow works.
Key takeaways
- Node has needed no HTTP library since fetch went native, so the whole send is one call with a bearer key.
- Webhooks carry the inbound side: register your HTTPS endpoint once and every reply, delivery state and STOP opt-out arrives as a signed JSON envelope your handler verifies.
- Pricing is flat: $249 per line per month with unlimited iMessages (50 opted-in / 30 cold new contacts a day) and no per-message metering, so a heavy month costs the same as a quiet one.
How a message falls back
How do you send an iMessage from Node.js?
Node has needed no HTTP library since fetch went native, so the whole send is one call with a bearer key. No SDK, no client to version.
const res = await fetch("https://api.bluereacher.com/v1/messages", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BLUEREACHER_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
to: "+15551234567",
message: "Hi Alex, worth a quick chat this week?",
}),
});
const message = await res.json();- The response carries a message id. Poll https://api.bluereacher.com/v1/status/{message_id} for pending, sent or failed, or let the webhook push delivery events instead.
How does Node receive replies and delivery states?
Webhooks carry the inbound side: register your HTTPS endpoint once and every reply, delivery state and STOP opt-out arrives as a signed JSON envelope your handler verifies.
import crypto from "node:crypto";
export async function POST(req) {
const raw = await req.text();
const expected =
"sha256=" +
crypto
.createHmac("sha256", process.env.BLUEREACHER_WEBHOOK_SECRET)
.update(raw)
.digest("hex");
if (req.headers.get("X-BlueReacher-Signature") !== expected) {
return new Response("bad signature", { status: 401 });
}
const { event, data } = JSON.parse(raw);
// event === "message.received" carries the reply
return new Response("ok");
}- The handler slots into Express, Fastify, Next.js or a serverless function unchanged; the signature check is the only part that must not be skipped.
What do Node teams pay to run this?
Pricing is flat: $249 per line per month with unlimited iMessages (50 opted-in / 30 cold new contacts a day) and no per-message metering, so a heavy month costs the same as a quiet one.
- $1,949 per line per year comes to about $162.50 a month with the $449 activation waived. No A2P registration required, so nothing sits between deploy and the first real send.
- White-glove onboarding covers the line, the API key and the webhook registration, and a brk_test_ sandbox key runs the whole flow with nothing real sent.
Frequently asked questions
Is there a Node.js SDK for iMessage?
No SDK is needed. The Blue Reacher API is standard HTTPS with JSON and bearer auth, so native fetch covers it: one POST to send, one GET for status, and a webhook route for replies. Full request and response schemas live in the OpenAPI spec at docs.bluereacher.com.
Does this work in serverless and edge runtimes?
Yes. Sends are a single fetch call, so Vercel, Cloudflare Workers and Lambda all work. The webhook handler is a plain request handler; verify the HMAC signature on the raw body and route the event from there.
Can TypeScript types be generated for the API?
Yes. The OpenAPI spec at docs.bluereacher.com/openapi.json feeds any generator, so openapi-typescript produces typed clients in one command. The MCP server exposes the same surface as typed tools for agent stacks.
Do I need A2P registration to text from Node?
No A2P registration required: no brand vetting, no campaign approval, no carrier queue. Pacing applies instead: 50 opted-in / 30 cold new contacts per line per day, with replies unmetered and automatic RCS then SMS fallback.
What does the API cost?
$249 per line per month, unlimited iMessages, or $1,949 per year (about $162.50/month, $449 activation waived). Lines pace at 50 opted-in / 30 cold new contacts a day; replies never metered. API, MCP server and webhooks are all included.
Send your first Node iMessage today
Book a demo and we'll issue your sandbox key on the call: you run the fetch snippet yourself and watch the delivery states come back live.