Skip to main content

Worked request and response samples

Copy a request as written, substitute your own ids, and compare the response envelope. Errors follow Devotel Orbit’s { error, meta } envelope, shown under Error envelope.

Inbound message flow

An inbound message arrives on one of your channels (an SMS carrier webhook, a WhatsApp callback, an email ingest, the web-chat widget, and so on) and is folded onto one normalized shape. Every message you list or reply to below is the same object — the carrier differences are already folded out. For the webhook side of that flow — the data.normalized block stamped on inbound message and opt-out envelopes, one kind discriminator, and the single normalized.inbound subscription that covers the whole inbound family — see Normalized inbound event envelope.

1. List conversations

GET /api/v1/conversations/
Request

2. Open one conversation

GET /api/v1/conversations/{id}
Request
The message transcript is a separate read: GET /api/v1/conversations/{id}/messages. Each element of its data array looks like:
For exports, GET /api/v1/conversations/export?format=json&include_messages=true inlines each conversation’s full transcript in one response.

3. Post a reply

POST /api/v1/conversations/{id}/reply
Request
body and from are the usual pair; media_url works on its own when you are sending an attachment. channel optionally overrides the reply channel, and email replies can carry subject, cc, and bcc top-level. A successful reply answers 202 Accepted with the message status set to queued — the message is accepted onto the conversation and delivery continues asynchronously, so poll GET /:id/messages or your message.delivered webhook for the final status:

4. Reply to a closed conversation

closed, archived, and snoozed conversations reject replies so a scripted caller cannot bill a send or disturb a deferred thread — reopen first with POST /api/v1/conversations/{id}/reopen. The message names the status so your client can point the operator at the next action:
422

Error envelope

Malformed input returns the standard validation envelope:
422