Build on Relayd.
An API-first contact centre. Send a message, open a case, subscribe to every event, drop chat into your own app, and bring your own AI. It is all one clean API.
curl https://api.relayd.africa/v1/conversations/cv_2210/messages \
-H "Authorization: Bearer $RELAYD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Your refund of KES 4,200 is on its way.",
"quick_replies": ["Track it", "Talk to someone"]
}'One API for the whole conversation.
Read and write conversations, messages, contacts and cases with a clean, predictable REST API. Everything you see in the agent desktop is available to build on.
- Conversations, messages, contacts, cases and channels
- Predictable JSON, cursor pagination, clear errors
- Cases come back with their SLA clock and status
curl https://api.relayd.africa/v1/cases \
-H "Authorization: Bearer $RELAYD_API_KEY" \
-d '{
"contact_id": "ct_8f21",
"type": "complaint",
"subject": "Double charge",
"priority": "high"
}'Subscribe to everything that happens.
Point a webhook at your service and Relayd streams every event as it happens, a message received, a case opened, a conversation closed. Every delivery is signed, idempotent and retried.
- Events like message.received and case.opened
- Signed payloads, verified with your secret
- Idempotent on event id, retried with backoff
{
"event": "message.received",
"id": "evt_9a3f7c1",
"created_at": "2026-08-06T09:41:02Z",
"data": {
"conversation_id": "cv_2210",
"channel": "whatsapp",
"contact": { "id": "ct_8f21", "name": "Thandeka M." },
"text": "I was charged twice for my order"
}
}Drop live chat into your own app.
Add a chat widget to your web or mobile app in a few lines. Because the customer is already signed in, you know exactly who they are, and the conversation can continue on WhatsApp later, on the same thread.
- Web and mobile SDKs, your own branding
- Authenticated, so context loads instantly
- One thread, even when it moves channels
<script src="https://cdn.relayd.africa/chat.js"></script>
<script>
Relayd.init({ appId: "app_relayd_123" });
// The customer is already signed in to your app,
// so you know exactly who they are.
Relayd.identify({
id: user.id,
name: user.name,
hmac: signedUserHmac, // signed on your server
});
</script>Any app or bot is just another channel.
Push a message into Relayd from your own app, a bot platform or a script, and it is routed, recorded and answered exactly like a WhatsApp or voice conversation. An idempotency key makes redelivery safe.
- Ingest from your app, a bot, or a script
- Routed and recorded like every other channel
- Idempotent, so nothing is ingested twice
curl https://api.relayd.africa/v1/messages/inbound \
-H "Authorization: Bearer $RELAYD_API_KEY" \
-d '{
"channel": "app",
"external_id": "msg_local_8891",
"contact": { "external_id": "user_4821" },
"text": "Hi, I need help with my order"
}'
# external_id makes redelivery safe: the same id is never ingested twice.A few of the endpoints.
Built for people who build.
Sensible defaults, real controls, and a place to try it all safely.
- API keys with scopesGrant only what a service needs.
- Sign in with your IdPThe same logins as the rest of Relayd.
- Rate limits & clear errorsPredictable, documented behaviour.
- A sandboxA test environment that mirrors production.
- Idempotency keysRetries never double up.
- Signed webhooksVerify every delivery is really from us.
- Your own AI modelPoint Relayd at your provider.
- Your own storage & BIEvents stream out to your tools.
- Your own front endHeadless, if you want to build the UI.
Give your customers a faster answer.
Give your auditors nothing to worry about.
See Relayd handle a real conversation end to end, routed, resolved, and sealed, in a 30-minute walkthrough built around your team.