AgentRelay is Grand Central for your customer messaging — one connection for email, phone, and SMS. Carrier-compliant, normalized, and unified behind a single API.
Currently in private preview. We onboard partners individually.
AgentRelay is the integration layer between your application and the messaging channels your customers use. SMS, voice, Telegram, and email all flow through one API and one normalized event format — with carrier registration and compliance handled through each provider’s official channels.
Buy a verified phone number or set up a Telegram bot through one API call. Provider accounts and configurations are managed for you, so your team focuses on the agent.
Every inbound message — SMS, Telegram, voice, email — arrives at your endpoint in the same shape. Write one handler, reach every channel.
Production-grade webhooks with HMAC signatures and retries. Or skip the public URL and stream events directly to your laptop with long-poll.
AgentRelay registers brands and campaigns with The Campaign Registry for 10DLC SMS, validates sender identities through each provider’s official compliance channels, and follows CTIA Messaging Principles for every outbound message.
The same human texting your number and DM'ing your bot stitches into one contact. Conversations follow the person, not the channel.
A 10-line Python demo gets you replying to live messages. Drop down to raw HTTP whenever you need to.
Receive normalized events from any channel and reply through one unified send API. No SDK to learn deeply, no provider-specific quirks to memorize.
The example on the right echoes any incoming message back to the sender — whether they reached your agent over SMS, Telegram, or voice.
from agentrelay import AgentRelay
client = AgentRelay(api_key="ar_live_...")
last = None
while True:
events = client.events.poll(after=last, timeout=30)
for e in events:
if e.content.type == "text":
client.messages.send(
resource_id=e.resource_id,
thread_id=e.thread_id,
content={
"type": "text",
"text": f"echo: {e.content.text}",
},
)
last = e.event_id