Real iMessages,
from your terminal.
Run sendblue setup to provision an iMessage number, then send messages, manage contacts, and configure webhooks — entirely from the terminal.
# Get an iMessage number $ sendblue setup Email: you@example.com Code: 12345678 Company: acme Contact: +14155551234 ✓ Account created · line provisioned # Send your first iMessage $ sendblue send +14155551234 "Hey from the terminal 👋" ✓ Sent
Install. Set up.
Send.
Three commands stand between an empty terminal and a real iMessage delivered to a real phone.
Install the CLI
Anywhere Node.js runs. npm install -g @sendblue/cli drops a sendblue binary on your $PATH.
Run sendblue setup
Interactive flow: it prompts for your email, an emailed verification code, your company name, and a first contact — and provisions an iMessage line for you. On the free sandbox, that contact needs to text your Sendblue number first to verify before you can message them. Already have a Sendblue account? Run sendblue login instead.
Send your first iMessage
sendblue send +14155551234 "Hello" delivers a real iMessage. Pipe it from any script, cron job, or CI runner.
Wire up replies (optional)
Use sendblue webhooks add <url> --type receive to forward inbound messages to your endpoint, then watch the live thread with sendblue messages.
# 1 · Install $ npm install -g @sendblue/cli # 2 · Create an account + line $ sendblue setup # 3 · Add a contact $ sendblue add-contact +14155551234 # 4 · Free sandbox: have them text your Sendblue line first # 5 · Send $ sendblue send +14155551234 \ "Hello from the terminal" ✓ Sent # 6 · Read the thread $ sendblue messages -n +14155551234 → "On my way."
Every sendblue command, on one page.
Verbatim from sendblue --help in v0.7.6 — grouped by what you'll reach for.
.env or another tool.--media attaches an image, video, or file (local path or URL).--media support.receive, outbound, call_log, line_blocked, line_assigned, contact_created.otpauth:// URI from a QR code, or a base32 secret directly.Everything you need
to send real iMessages.
One binary, the same surface area as the REST API, wrapped for the terminal.
Real iMessages
Sendblue delivers your messages as blue bubbles through Apple's iMessage protocol — not gateway SMS.
Group threads & typing
send-group addresses a multi-recipient thread; typing sends a real Apple typing indicator.
Media attachments
Pass --media <path> to send or send-group to attach an image, video, or file (local path or URL).
Webhooks for inbound
Subscribe to receive, outbound, call_log, and account events with one command.
TOTP storage
Stash 2FA secrets and pull current codes from the terminal — agents and scripts can log into your tools without you typing.
Scriptable
Plain CLI ergonomics — fits cleanly into bash, cron, GitHub Actions, or any process that can exec.
A scriptable iMessage
endpoint for any process.
Anything that can exec a shell command can now send and receive iMessages.
AI assistants that text
Hand an agent sendblue send and it can message customers, partners, or you. sendblue totp handles the 2FA wall.
Helpdesk handoff
Forward inbound iMessages into Zendesk, Slack, or your own backend with sendblue webhooks add <url> --type receive.
Cron-driven reminders
A one-line cron entry plus sendblue send covers appointment reminders, status pings, and follow-ups.
Group sends from a CSV
Loop a CSV through sendblue send-group with --media for rich attachments.
Ops tools & scripts
Wrap sendblue send in a Make/n8n/Zapier step or a small bash helper for your team.
Local development
Read live threads with sendblue messages, inspect contacts and lines, and check delivery without leaving your editor.
Free sandbox to start.
Dedicated lines for production.
The CLI is free. Sandbox accounts include full API access in a rate-limited test environment. When you need a dedicated number, plans start at $100/line/month.
- Sandbox: every command, rate-limited
- Dedicated line: webhooks, contacts, group threads, media
- Upgrade from your dashboard, no downtime
$ sendblue status account acme plan sandbox lines 1 contacts 3 $ sendblue lines +14155557890 · sandbox · upgrade in dashboard for a dedicated line
Frequently asked questions
If something's not covered here, the docs usually have it.
How do I send an iMessage from the command line?
Install the Sendblue CLI with npm install -g @sendblue/cli, then run sendblue setup to create a Sendblue account and provision an iMessage number. On the free sandbox, your first contact needs to text your Sendblue number inbound once to verify before you can message them. Once verified, run sendblue send +14155551234 "Hello" to deliver a real iMessage.
What commands does the CLI support?
Top-level: setup, login, send, send-group, typing, messages, add-contact, contacts, lines, webhooks (list/add/remove), totp (add/list/code/remove), status, whoami, and show-keys. Run sendblue help at any time for the full list, or sendblue help <command> for per-command flags.
How do I send images, videos, or files?
Pass --media <path> to sendblue send or sendblue send-group. The path can be a local file or a URL. The same flag attaches images, videos, or other media to a one-to-one or group thread.
How do I receive inbound messages?
Register a webhook URL with sendblue webhooks add <url> --type receive. Sendblue will POST inbound messages to that endpoint. You can subscribe to other events the same way: outbound, call_log, line_blocked, line_assigned, contact_created. Use sendblue webhooks list to see what's configured and sendblue messages to read recent traffic from the terminal.
Is the Sendblue CLI free?
The CLI itself is free to install and use. Sendblue accounts include a free sandbox with full API access in a rate-limited test environment. Production traffic on a dedicated line starts at $100/line/month — see /pricing for the current plans.
Does the CLI work on Windows, Mac, and Linux?
Yes. The CLI runs anywhere Node.js runs — macOS, Linux, and Windows. You do not need a Mac or an iPhone: Sendblue handles the Apple infrastructure in the cloud, so your CLI commands work the same on any operating system.
What's the TOTP command for?
sendblue totp lets you store TOTP (2FA) secrets and pull the current 6-digit code on demand. It's useful when you want a script or AI agent to log into a tool on your behalf without you having to type the code yourself. Add a secret with sendblue totp add, then read the current code with sendblue totp code <secret-id>.
Get an iMessage number.
Send your first message.
Install @sendblue/cli, run sendblue setup, then sendblue send.