iMessage,
as an API.
mdnt is the developer infrastructure for sending and receiving iMessages programmatically. Twilio-grade primitives, Apple's network, your own handle.
import Mdnt from 'mdnt';
const client = new Mdnt({ token: process.env.MDNT_TOKEN });
await client.messages.send({
from: 'agent@example.com',
to: '+15551234567',
text: 'Hello from your agent',
});- p50 dispatch
- 228ms
- Inbound dedupe
- GUID-stable
- Webhook auth
- HMAC-SHA256
- Apple ID model
- 1:1 owned
A small surface,
deeply considered.
- Outbound iMessage
Send blue-bubble messages from your own handle. Real iMessage, not SMS fallback. ~200ms p50 dispatch.
- Inbound to webhook
Every reply lands at your endpoint, deduped on Apple-assigned GUIDs, signed with HMAC-SHA256.
- One handle per customer
Apple IDs are 1:1 yours. Never pooled, never shared. Every message goes from your address, not a shared shortcode.
Inbound is just
a typed event.
Every reply, read receipt, and delivery confirmation arrives at your webhook URL — verified, deduped, and shaped like the rest of your event bus.
// In your webhook handler
const event = client.webhooks.parse(req.body, req.headers);
if (event.type === 'message.received') {
console.log(event.data.from, event.data.text);
}One number,
no surprises.
Pay per handle. Start free. Scale to thousands of messages without renegotiating. Sendblue charges $100/handle — we start at zero.
Free includes 100 messages/month. Indie includes 1,000. Overages priced like infrastructure, not SaaS.
- Everything in Free
- Custom email available
- Overage at $0.005/msg
- Everything in Indie
- 90-day retention
- Overage at $0.003/msg