We use optional, privacy-safe analytics to understand which pages help visitors. Nothing optional runs until you choose. Privacy policy

Skip to content
Product

The messaging infrastructure your product can grow on.

SendiMessage runs dedicated messaging lines for your business and delivers over iMessage where recipients support it, with SMS fallback. Send from one clean API or an official SDK, hold real two-way conversations in a shared team inbox, and react to delivery and reply events with webhooks.

Request a LineView API Docs
Who it's for

Built for the teams that send the messages.

Product & platform teams
Add iMessage and SMS notifications, reminders, and status updates without building any messaging plumbing.
Backend developers
One REST endpoint or an official SDK, predictable JSON, and webhook events for delivery and replies.
Operations & support
Reach customers from a shared team inbox — booking, delivery, and support conversations in one place.
How delivery works

A predictable path for every message.

You POST a message and get a message_handle with status QUEUED immediately. The final status is readable from the API and pushed to your webhook endpoint as an outbound event.

QUEUED
Accepted — you get a message_handle back immediately
SENT
Your line delivered it; the service used (iMessage or SMS) is recorded
ERROR
The send failed — the error message tells you why
Customer replies come back the same way — a signed receive event lands on your endpoint, and the conversation appears in your team inbox.
Core features

Everything the messaging lifecycle needs.

Dedicated managed lines
A messaging line provisioned and operated for your business on real Apple hardware — no carrier plumbing on your side.
iMessage-first delivery
Messages go out over iMessage where the recipient supports it, with SMS fallback — the service used is recorded per message.
Two-way conversations
Replies are captured, threaded into conversations, and pushed to your webhook as receive events.
Media messaging
Photos, video, audio, and PDFs up to 50 MB — uploaded once, stored durably, sent by URL.
Delivery tracking
Every message moves QUEUED → SENT or ERROR, readable via the API and a filterable message history.
Webhook events
Signed receive, outbound, and line events — plus a per-message status callback URL you compose.
Opt-out compliance built in
STOP and START keywords are honored automatically, and opt-outs are enforced on every send path.
Web portals included
A shared team inbox with templates and contacts, plus an admin portal with analytics, API keys, and invoices.
Official SDKs
JavaScript/TypeScript, Python, PHP, and Go — dependency-free clients covering the whole public API.
Scheduling and lookup
Schedule sends with scheduled_at and check whether a number has iMessage before you write to it.
Beyond the API

Two portals, included with every line.

platform.sendimessage.com

The team inbox

A shared, auto-refreshing workspace for the people who actually talk to customers: iMessage-style threads with media, message templates with variables, a company address book with opt-out control, and live per-line quota bars.

account.sendimessage.com

The admin portal

Everything an administrator needs: sent/received analytics split by iMessage vs SMS, per-line traffic and quota stats, API key management, webhook endpoints, and your invoices as PDFs.

Explore interactive product demo →

Deliverability

Paced like a human, protected like infrastructure.

Every line sends at a human pace — randomized gaps between messages and longer pauses before brand-new conversations — so your number builds a healthy sending reputation. Quotas apply only to first contacts: replies inside existing conversations are never throttled, and live remaining counts are visible per line.

Roadmap

Room to grow beyond SMS.

The same infrastructure is being built to support more channels. These are not available yet:

Voice · soonAI communication · soonAutomation · soon
The message journey

Follow every message from request to reply.

See how one API request moves through validation, routing, delivery, and the return webhook.

Request created
01 / 07
Application
SendiMessage
Phone
EndpointPOST /send-messageBodynumber + content
Awaiting message
POST /send-message
{
  "number": "+15555550123",
  "content": "Your order has shipped."
}

API request

Your application sends one request to the SendiMessage API — no channel juggling, no per-carrier logic.

EndpointPOST /send-messageBodynumber + content
Request created
01 / 07
Application
SendiMessage
Phone
EndpointPOST /send-messageBodynumber + content
Awaiting message
POST /send-message
{
  "number": "+15555550123",
  "content": "Your order has shipped."
}

Validation

The API key, messaging line, and destination are verified. The request is accepted and queued — never sent inline.

API keyacceptedLineverifiedDestinationaccepted
Queued
02 / 07
Application
SendiMessage
Phone
API keyacceptedLineverifiedDestinationaccepted
Awaiting message
201 Created
{
  "message_handle": "msg_01H...",
  "status": "QUEUED"
}

Routing

SendiMessage picks the best channel for the destination — iMessage when it's available, with SMS fallback standing by.

iMessagecheckingSMS fallbackready
Routing
03 / 07
Application
SendiMessage
Phone
iMessagecheck
SMSfallback
Awaiting message
channel selection
{
  "imessage": "checking",
  "sms_fallback": "ready"
}

Sending

The selected channel carries the message to the device. Every attempt is recorded, so the status always reflects reality.

ServiceiMessageStatesending
Sending
04 / 07
Application
SendiMessage
Phone
iMessageselected
SMSfallback
Your order has shipped.
Sending…
queue state
{
  "service": "imessage",
  "state": "sending"
}

Sent

Your line confirms the send and the service actually used — visible via the API and pushed as an outbound event.

StatusSENTEventoutbound
Sent
05 / 07
Application
SendiMessage
Phone
StatusSENTEventoutbound
Your order has shipped.
Delivered
outbound
{
  "message_handle": "msg_01H...",
  "status": "SENT",
  "service": "imessage"
}

Customer reply

When the customer replies, SendiMessage receives the inbound message and resolves it to your line and organization.

DirectioninboundText“Thanks, received.”
Reply received
06 / 07
Application
SendiMessage
Phone
receivesignature verifiedwebhook sentyour endpointawaiting
Your order has shipped.
Delivered
Thanks. When will it arrive?
inbound message
{
  "direction": "inbound",
  "content": "Thanks, received."
}

Webhook

A signed event is delivered back to your endpoint, so your application stays in sync — request to reply, one loop.

EventreceiveSignatureverifiedDelivery200 OK
Webhook delivered
07 / 07
Application
SendiMessage
Phone
receivesignature verifiedwebhook sentyour endpoint200 OK
Your order has shipped.
Delivered
Thanks. When will it arrive?
POST your-endpoint
// "receive" event → your endpoint
// SendiMessage-Signature verified

One request, one loop — validated, routed, delivered, and confirmed back to your application. That's the whole integration.

Request a Line
Delivery lifecycle

Know what happened to every message.

Drag the timeline or use arrow keys to see each state — and the webhook it emits.

Failure paths:
Sent
Delivered by your line

Status SENT — the service used (iMessage or SMS) is recorded on the message.

customer device
Your order has shipped.
webhook: outbound
Dedicated lines

One line for every workflow.

One active, dedicated messaging number or sending channel provisioned for a customer. Run as many as your business needs.

Your Business
Sales Line ready
+1 ••• •••• · SMS · Outbound sales & follow-ups
$129.00/mo
Support Line ready
+1 ••• •••• · SMS + iMessage · Customer support replies
$129.00/mo
Delivery Updates Line ready
+1 ••• •••• · SMS · Shipping & delivery notices
$129.00/mo
Estimate by active lines
3active lines
Estimated monthly line cost
3 × $129.00 = $387.00

Estimate for active lines only. Message usage and other fees may apply.

Before & after

Less infrastructure to manage.

See what changes when messaging is managed for you.

  • One API
  • Managed lines
  • Automatic routing
  • SMS fallback
  • Unified webhooks
  • Direct integration support