Unified messaging
One send API, one contact list, one conversation model, one event stream — Samva is a single messaging platform that adds channels without changing your integration.
Samva is one messaging platform, not a bundle of separate channel products. Every channel — email today; SMS, WhatsApp, and voice as they launch — sends through the same API and shares the same primitives: contacts, conversations, delivery events, and templates. The integration you build for email is most of the integration you will ever build.
Email first. Email is live today. SMS, WhatsApp, and voice are staged — they slot into the same API and primitives below as they ship, with no migration on your side.
One send API
Every send is a message: a piece of content, a recipient, and the channel that carries it.
POST /v1/messages names those parts explicitly — a channel discriminator, a to array, and
channel content nested under a matching key — so a new channel is a new channel value, not a new
endpoint.
{
"to": [{ "contactId": "contact_123" }],
"channel": "email",
"email": { "subject": "Welcome", "html": "<h1>Welcome!</h1>" }
}The email-first email.send() SDK facade is that same call wearing email-shaped clothes. For the full
model — why both shapes exist and when to reach for each — see
Email and the unified API.
Shared primitives
Because a channel is just a field on a message, everything around the send is channel-agnostic. Build against these once and each new channel reuses them:
- Contacts — address a
{ contactId }once; the same contact is reachable on any channel you have an identifier for, without re-supplying addresses per send. - Conversations — inbound replies thread into one conversation model regardless of channel, so a customer's email today and SMS later sit in the same thread.
- Events & webhooks — delivery, status, and inbound events arrive in one signed stream; subscribe once. See Webhooks.
- Templates — versioned content rendered at send time, referenced by
templateIdon any channel that supports it.
What's live, what's staged
| Channel | Status | Notes |
|---|---|---|
| ✅ Live | Send, domains, threading, templates, analytics | |
| SMS | 🔜 Staged | Same API + primitives; guide and endpoints soon |
| 🔜 Staged | Business accounts, templates, service window | |
| Voice | 🔜 Staged | Agents and calls over WebRTC and PSTN |
Staged channels share the API and primitives above; their guides and endpoints appear as each one launches. Code written against email today keeps working unchanged as the channel set grows — the unified shape absorbs new channels, so adding them is a feature on our side, not a migration on yours.