Now in private beta

iMessage infrastructure
for developers

Programmatic send and receive. Real-time webhooks. Typing indicators. Multi-line routing. One API.

Get Started Free View API Docs Soon
Send a message via API
$ curl -X POST https://app.urelay.ai/api/v1/messages/send \
-H "X-API-Key: ur_live_k2x..." \
-H "X-API-Secret: ur_sec_..." \
-d '{"to":"+1234567890","text":"Hello from urelay!"}'
{
"status": "sent",
"guid": "6EEC3F64-A2B1...",
"to": "+1234567890"
}
<2s
End-to-end delivery
99.9%
Uptime SLA
Unlimited
Messages per line

Features

Everything you need to build on iMessage

Send & Receive API

REST API for programmatic iMessage with delivery status tracking, read receipts, and error handling.

Real-time Webhooks

Instant notifications for incoming messages, delivery receipts, and failures. Signed payloads with retry logic.

Typing Indicators

Bidirectional typing bubbles. Your users see the three-dot indicator, just like a real iMessage conversation.

Multi-line Routing

Route messages across multiple phone lines with priority rules, fallback logic, and load balancing.

Contact Management

Organize contacts with tags, team assignments, and full conversation history. Import and export via CSV.

Live Message Stream

Server-Sent Events for real-time message delivery. No polling. Sub-second latency from phone to your app.

How it works

Up and running in minutes

1

Connect a phone line

Plug an iPhone into your infrastructure. Our agent manages the device lifecycle, jailbreak state, and message relay automatically.

2

Configure webhooks

Set up webhook endpoints to receive real-time notifications for incoming messages, delivery status changes, and typing indicators.

3

Send via API

A single POST request sends an iMessage. Track delivery with webhooks or poll the status endpoint. It's that simple.

Developer experience

Built for developers who ship

Clean REST API. Predictable responses. Copy-paste examples in your language of choice.

curl
$ curl -X POST \
  app.urelay.ai/api/v1/messages/send \
  -H "X-API-Key: ur_live_..." \
  -H "X-API-Secret: ..." \
  -d '{"to":"+1234567890","text":"Hello!"}'
python
import requests

resp = requests.post(
  "https://app.urelay.ai/api/v1/messages/send",
  headers={
    "X-API-Key": key,
    "X-API-Secret": secret,
  },
  json={
    "to": "+1234567890",
    "text": "Hello!",
  },
)
node.js
const res = await fetch(
  "https://app.urelay.ai/api/v1/messages/send",
  {
    method: "POST",
    headers: {
      "X-API-Key": key,
      "X-API-Secret": secret,
    },
    body: JSON.stringify({
      to: "+1234567890",
      text: "Hello!",
    }),
  }
);

Why urelay

Infrastructure you control

Unlike hosted providers, urelay gives you full ownership of your messaging infrastructure. No per-message fees. No vendor lock-in.

µrelay Sendblue Linq
Per-message fees None Per message Per message
Infrastructure ownership You own it Hosted Hosted
Typing indicators Bidirectional Limited Yes
Real-time streaming SSE + Redis pub/sub Webhooks only Webhooks only
Delivery latency <2 seconds ~5 seconds <120ms *
Multi-tenant platform Built-in No Enterprise only

* Linq's latency claim is for their hosted infrastructure. urelay latency is measured end-to-end from API call to recipient delivery.

Pricing

Simple, predictable pricing

No per-message fees. No surprise charges. Pay for lines, not messages.

Starter
Free

Perfect for testing and development.

  • 1 phone line
  • 50 new contacts per day
  • Unlimited messages
  • REST API + Webhooks
  • Community support
Get Started
Recommended
Enterprise
Custom

For teams that need scale and support.

  • Unlimited phone lines
  • Custom routing rules
  • Dedicated support + SLA
  • Multi-tenant white-label
  • Managed infrastructure option
Contact Sales