API reference

Inbox

Mailboxes, threads, drafts, rules, the contact centre and the message log for every channel.

Scopes for this area: inbox:read, inbox:write and inbox:admin.

157 operations

desk

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/threadsConversations in a folder, with search in plain words (from:, label:, has:attachment, is:unread, status:, assignee:, before:, after:), newest first, paged by cursor.readrivier inbox desk threads
GET/workspace/inbox/threads/{id}One conversation with every message, note and draft; read=1 marks it read for the caller.readrivier inbox desk thread
GET/workspace/inbox/foldersCounts for the rail: each folder with its unread count, mailboxes, labels, assigned to me, overdue.readrivier inbox desk folders
GET/workspace/inbox/search/explainA search written back in words, with the parts that were not understood.readrivier inbox desk explain
POST/workspace/inbox/threads/readMark conversations read or unread for the caller.writerivier inbox desk mark read
POST/workspace/inbox/threads/read-allMark everything in a folder read for the caller.writerivier inbox desk mark folder read
POST/workspace/inbox/threads/starStar or unstar conversations for the caller.writerivier inbox desk star
POST/workspace/inbox/threads/actDo one thing to many conversations at once (archive, done, reopen, status, trash, restore, junk, snooze, assign, read, star, label), listed or found by a search (at most 1000). Answers a batch id to undo it.writerivier inbox desk act
POST/workspace/inbox/undoTake back a batch of changes the caller made within the last hour.writerivier inbox desk undo
PATCH/workspace/inbox/threads/{id}Change one conversation: status, assignee, snooze, archive.writerivier inbox desk update
GET/workspace/inbox/assigneesThe people and agents a conversation can be assigned to.readrivier inbox desk assignees
POST/workspace/inbox/threads/mergePut conversations into one; the others are hidden and can be pulled back out.writerivier inbox desk merge
POST/workspace/inbox/threads/{id}/unmergePull a merged conversation back out.writerivier inbox desk unmerge
POST/workspace/inbox/threads/{id}/splitSplit a conversation at a message: that message and the ones after it become a new conversation.writerivier inbox desk split

note

MethodRouteWhat it doesLevelCommand
POST/workspace/inbox/threads/{id}/notesWrite an internal note on a conversation; @mentions notify the people named. Never sent to the customer.writerivier inbox note add
PATCH/workspace/inbox/threads/{id}/notes/{turnId}Edit a note (its author or a manager).writerivier inbox note update
DELETE/workspace/inbox/threads/{id}/notes/{turnId}Delete a note (its author or a manager).writerivier inbox note delete

mention

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/mentionsConversations that name the caller in a note.readrivier inbox mention list
POST/workspace/inbox/mentions/seenMark mentions seen, all or for one conversation.writerivier inbox mention seen

presence

MethodRouteWhat it doesLevelCommand
POST/workspace/inbox/threads/{id}/presenceSay the caller is viewing or replying to a conversation (repeat every 15 seconds); answers who else is.writerivier inbox presence heartbeat
GET/workspace/inbox/threads/{id}/presenceWho else is viewing or replying to a conversation right now.readrivier inbox presence list

draft

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/draftsThe caller's drafts and scheduled sends, and the replies agents drafted on conversations the caller can reach.readrivier inbox draft list
POST/workspace/inbox/draftsStart a reply, a reply to all, a forward or a new message, with recipients, subject and quoted text filled in and the person's signature on. Returns the live draft if there already is one.writerivier inbox draft create
GET/workspace/inbox/drafts/{id}One draft.readrivier inbox draft get
PUT/workspace/inbox/drafts/{id}Save a draft as it is written; the version guards against two tabs overwriting each other.writerivier inbox draft save
DELETE/workspace/inbox/drafts/{id}Throw a draft away.writerivier inbox draft discard
POST/workspace/inbox/drafts/{id}/sendSend a draft after an undo window of up to 30 seconds. Warns when someone else is replying or has answered since; force sends anyway. In test mode only the project's test addresses receive it.writerivier inbox draft send
POST/workspace/inbox/drafts/{id}/request-sendPut a draft forward for a person to check and send. Nothing is sent; the conversation waits and says who asked and why.writerivier inbox draft request send
POST/workspace/inbox/drafts/{id}/scheduleSend a draft later (a minute to a year ahead).writerivier inbox draft schedule
POST/workspace/inbox/drafts/{id}/cancel-scheduleBring a scheduled message back as a draft.writerivier inbox draft cancel schedule

outbox

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/outboxMessages waiting to leave, held (test mode, sending off) or failed, with the reason.readrivier inbox outbox list
POST/workspace/inbox/outbox/{id}/undoTake back a message still inside its undo window; it returns as a draft.writerivier inbox outbox undo
POST/workspace/inbox/outbox/{id}/retryQueue a held message again (after sending is turned on or the project goes live).writerivier inbox outbox retry

signature

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/signaturesSignatures: the workspace's and the caller's own.readrivier inbox signature list
POST/workspace/inbox/signaturesMake a signature, personal or (owner or manager) shared, optionally for one mailbox and as the default.writerivier inbox signature create
PATCH/workspace/inbox/signatures/{id}Change a signature.writerivier inbox signature update
DELETE/workspace/inbox/signatures/{id}Remove a signature.writerivier inbox signature delete

template

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/templatesCanned replies, most used first.readrivier inbox template list
POST/workspace/inbox/templatesMake a canned reply with {{customer.first_name}}-style variables.writerivier inbox template create
PATCH/workspace/inbox/templates/{id}Change a canned reply.writerivier inbox template update
DELETE/workspace/inbox/templates/{id}Remove a canned reply.writerivier inbox template delete
POST/workspace/inbox/templates/{id}/renderFill a canned reply for a conversation; variables with no value stay visible and are listed as missing.readrivier inbox template render

mailbox

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/mailbox-settingsWhether the desk may send from a mailbox, its daily ceiling and what it has used today, and whether the project is live.readrivier inbox mailbox settings
PUT/workspace/inbox/mailbox-settingsChange a mailbox's sending switch, daily ceiling or undo window (owner or manager; turning sending on for a linked mailbox is the owner's).writerivier inbox mailbox configure
GET/workspace/inbox/mailbox-readinessWhether a mailbox is ready to send for real: SPF, DKIM and DMARC in plain words, sending on or off, the sender name, the project's live state, and the steps left.readrivier inbox mailbox readiness
POST/workspace/inbox/syncRead new mail from the project's mailboxes into the inbox. Read only: nothing is marked, moved or deleted at the source.writerivier inbox mailbox sync
GET/workspace/mailboxesThe mailboxes, the plan allowance, how many are used and remain, and the split by kind.readrivier inbox mailbox list
GET/workspace/mailboxes/offersThe standard shared mailboxes the edition offers and which are already made.readrivier inbox mailbox offers
GET/workspace/mailboxes/availableWhether an address can be made now.readrivier inbox mailbox available
POST/workspace/mailboxesMake a mailbox inside the plan: shared, a team member’s, an agent’s or send-only.writerivier inbox mailbox create
PATCH/workspace/mailboxes/{id}Rename a mailbox, or change who reads a shared one and where it routes.writerivier inbox mailbox update
GET/workspace/mailboxes/{id}/exportThe mail of a mailbox as a file, to keep before it is released.readrivier inbox mailbox export
DELETE/workspace/mailboxes/{id}Release a mailbox and free its slot; one with mail is exported first and kept for the retention period.writerivier inbox mailbox delete

prefs

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/prefsThe caller's own desk settings: undo window, density, default signature.readrivier inbox prefs get
PUT/workspace/inbox/prefsChange the caller's own desk settings.writerivier inbox prefs update

attachment

MethodRouteWhat it doesLevelCommand
POST/workspace/inbox/drafts/{id}/attachmentsAttach a file (base64, at most 20 MB, 25 MB and 20 files per message) to a draft. Programs are refused whatever they are called; a scanner, when connected, can refuse more. The file is stored in the Library.writerivier inbox attachment add
DELETE/workspace/inbox/drafts/{id}/attachments/{attId}Take a file off a draft.writerivier inbox attachment remove
GET/workspace/inbox/attachments/{id}/downloadThe bytes of an attachment, as a download (a picture can be shown inline). A held-back file needs a manager and release=1.readrivier inbox attachment download

rule

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/rulesRules that run on every message that arrives, in order.readrivier inbox rule list
POST/workspace/inbox/rulesMake a rule (owner or manager): when conditions on the sender, subject, text, mailbox, attachment or language hold, label, assign, route to an agent, set a status, archive or mark as junk.writerivier inbox rule create
PATCH/workspace/inbox/rules/{id}Change a rule.writerivier inbox rule update
DELETE/workspace/inbox/rules/{id}Remove a rule.writerivier inbox rule delete
POST/workspace/inbox/rules/previewWhich rules would fire on a conversation, and what they would do; a rule not yet saved can be tried. Changes nothing.writerivier inbox rule preview
POST/workspace/inbox/rules/runRun the rules again over chosen conversations (owner or manager).writerivier inbox rule run

sla

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/slaResponse targets and how the desk is doing against them over thirty days.readrivier inbox sla get
PUT/workspace/inbox/slaSet first-response and resolution times for an inbox or the project, optionally counting business hours only (owner or manager).writerivier inbox sla set
DELETE/workspace/inbox/slaRemove a response target.writerivier inbox sla remove

reminder

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/remindersThe caller's reminders.readrivier inbox reminder list
POST/workspace/inbox/threads/{id}/remindBring a conversation back at a time, or only if the customer has not answered by then.writerivier inbox reminder set
DELETE/workspace/inbox/reminders/{id}Cancel a reminder.writerivier inbox reminder cancel

sender

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/sendersSenders let in or kept out by address or domain.readrivier inbox sender list
PUT/workspace/inbox/sendersAllow or block a sender or domain, or clear the rule (owner or manager).writerivier inbox sender set

ai

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/ai/statusWhether an AI model is connected for the inbox.readrivier inbox ai status
GET/workspace/inbox/threads/{id}/aiWhat AI has proposed for a conversation (summary, category with sentiment and language), each marked as AI with its model, and whether new messages have made it stale; and the inbox's autonomy mode.readrivier inbox ai get
POST/workspace/inbox/threads/{id}/ai/summarizeSummarise a conversation. A proposal, marked as AI.writerivier inbox ai summarize
POST/workspace/inbox/threads/{id}/ai/classifyPropose a category, sentiment and language. Applied when a person accepts it, or at once in an inbox on auto.writerivier inbox ai classify
POST/workspace/inbox/threads/{id}/ai/suggest-replyDraft a reply from what the project's memory knows, citing the passages it used. A draft marked as AI for a person to edit and send; the model never sends.writerivier inbox ai suggest reply
POST/workspace/inbox/ai/items/{id}Accept or dismiss an AI proposal.writerivier inbox ai decide
POST/workspace/inbox/threads/{id}/messages/{turnId}/translateTranslate a received message; the original stays and both are shown, marked as AI.writerivier inbox ai translate message
POST/workspace/inbox/drafts/{id}/translateTranslate what is being written; the translation is sent only if kept, and the original is stored on the message.writerivier inbox ai translate draft
DELETE/workspace/inbox/drafts/{id}/translateSend the original instead of the translation.writerivier inbox ai keep original

delivery

MethodRouteWhat it doesLevelCommand
POST/workspace/inbox/delivery-eventsReport what happened to sent messages (delivered, temporary or permanent bounce, complaint); permanent bounces and complaints put the address on the do-not-send list (owner or manager, or the project's key).writerivier inbox delivery report

suppressed

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/suppressedAddresses the desk will not send to, and why.readrivier inbox suppressed list
POST/workspace/inbox/suppressedPut an address on the do-not-send list.writerivier inbox suppressed add
DELETE/workspace/inbox/suppressedTake an address off the do-not-send list.writerivier inbox suppressed remove

export

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/exportTake a mailbox's mail out as mbox, a zip of .eml files or a CSV (owner or manager). Marks the mailbox exported, which the release rules ask for. Customer-facing mail only; notes only in the CSV and only when asked.readrivier inbox export mailbox
POST/workspace/inbox/exportTake chosen conversations out as mbox, .eml files in a zip or a CSV.writerivier inbox export threads

retention

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/retentionHow long the desk keeps trash, junk, held mail and (if chosen) finished conversations.readrivier inbox retention get
PUT/workspace/inbox/retentionChange how long the desk keeps them (owner or manager).writerivier inbox retention set

thread

MethodRouteWhat it doesLevelCommand
POST/workspace/inbox/threads/delete-foreverEmpty the trash: delete conversations already in it, with their messages and files, for good.writerivier inbox thread delete forever
GET/workspace/inboxes/{id}/threadsThe threads of an inbox.readrivier inbox thread list
GET/workspace/threads/{id}One thread with its messages.readrivier inbox thread get
POST/workspace/threads/{id}/sayAnswer a thread, or keep the answer as a draft.writerivier inbox thread say
POST/workspace/threads/{id}/closeClose a thread.writerivier inbox thread close

label

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/labelsLabels the caller can use: the workspace's and their own.readrivier inbox label list
POST/workspace/inbox/labelsMake a label, shared or personal.writerivier inbox label create
PATCH/workspace/inbox/labels/{id}Rename or recolour a label.writerivier inbox label update
DELETE/workspace/inbox/labels/{id}Delete a label; conversations keep their messages.writerivier inbox label delete
POST/workspace/inbox/threads/labelsPut labels on and take labels off a set of conversations.writerivier inbox label apply

view

MethodRouteWhat it doesLevelCommand
GET/workspace/inbox/viewsSaved views: searches kept by name, shared or personal.readrivier inbox view list
POST/workspace/inbox/viewsSave a search as a view. Sharing it with the workspace is for an owner or manager.writerivier inbox view create
PATCH/workspace/inbox/views/{id}Rename a view or change its search.writerivier inbox view update
DELETE/workspace/inbox/views/{id}Remove a view.writerivier inbox view delete
GET/workspace/inbox/views/{id}/threadsRun a saved view.readrivier inbox view threads

conversation

MethodRouteWhat it doesLevelCommand
GET/conversations/{id}/timelineEverything said in a conversation across channels.readrivier inbox conversation timeline

inbox

MethodRouteWhat it doesLevelCommand
GET/workspace/inboxesThe messaging inboxes.readrivier inbox inbox list
POST/workspace/inboxesMake an inbox for the website widget.writerivier inbox inbox create
PATCH/workspace/inboxes/{id}Change an inbox or its autonomy mode.writerivier inbox inbox update
DELETE/workspace/inboxes/{id}Delete an inbox.writerivier inbox inbox delete

overview

MethodRouteWhat it doesLevelCommand
GET/workspace/inboxMail, messages and calls in one list.readrivier inbox overview inbox

domain

MethodRouteWhat it doesLevelCommand
GET/workspace/mailboxes/domainsMail domains and their verification.readrivier inbox domain list
POST/workspace/mailboxes/domainsAdd a mail domain.writerivier inbox domain add
POST/workspace/mailboxes/domains/{domain}/verifyCheck a domain's DNS records.writerivier inbox domain verify

message

MethodRouteWhat it doesLevelCommand
GET/messagesSearch the message log across email, SMS, WhatsApp and voice: by address, message id or provider id, channel, state, error code and time. Newest first, a cursor for more.readrivier inbox message list
GET/messages/{id}One message with its timeline of provider events, the plain cause of any error and what to do about it. The body of the message is never part of the log.readrivier inbox message get
POST/messages/{id}/replaySend a message's announcements to the project's webhook subscribers again (every endpoint, or one).writerivier inbox message replay
GET/messages/dead-lettersWebhook deliveries about messages that ran out of attempts. Replay one with keys.delivery.replay.readrivier inbox message dead letters
GET/messages/usageMessages and billable units this period by channel and direction, for plan metering. Defaults to the current calendar month.readrivier inbox message usage
POST/messages/test-eventSend the project's subscribers a signed test announcement, to check an endpoint receives it and verifies the signature.writerivier inbox message test event

message error

MethodRouteWhat it doesLevelCommand
GET/messages/errorsThe error catalogue: every provider or mail-server code with its plain cause and fix.readrivier inbox message error list
GET/messages/errors/{code}The plain cause and fix for one code (a mail status such as 5.1.1 or a phone-network code).readrivier inbox message error explain

message retention

MethodRouteWhat it doesLevelCommand
GET/messages/retentionHow long the log keeps messages for this project.readrivier inbox message retention get
PUT/messages/retentionSet how many days the log keeps messages (1 to 3650), or null for the deployment default.writerivier inbox message retention set

message event

MethodRouteWhat it doesLevelCommand
GET/message-eventsThe message event stream from a cursor: every state change on every channel, oldest first.readrivier inbox message event list
GET/message-events/streamA server-sent stream of message events; reconnect with Last-Event-ID to resume.readrivier inbox message event stream

contact centre agent

MethodRouteWhat it doesLevelCommand
GET/contact-centre/agentsDesk agents: people and AI agents, with skills, presence and how many conversations each can hold.readrivier desk agents
POST/contact-centre/agentsAdd an agent to the desk (a person's seat or an AI agent).writerivier desk agent-add
PUT/contact-centre/agents/{id}Change an agent's name, skills or limit.writerivier desk agent-set
DELETE/contact-centre/agents/{id}Remove an agent with no open conversations.writerivier desk agent-remove

contact centre presence

MethodRouteWhat it doesLevelCommand
POST/contact-centre/agents/{id}/presenceSet an agent online, away or offline. Coming online takes waiting conversations in order.writerivier desk presence

contact centre agent stats

MethodRouteWhat it doesLevelCommand
GET/contact-centre/agents/{id}/statsWhat one agent has done: conversations handled, open now, average first response, replies and hand-offs. The same for people and AI agents.readrivier desk agent-stats

contact centre queue

MethodRouteWhat it doesLevelCommand
GET/contact-centre/queuesQueues with the skills they need, the channels they take and their service targets.readrivier desk queues
POST/contact-centre/queuesCreate a queue: skills needed, channels, first-response and resolution targets, and an optional AI agent that answers first.writerivier desk queue-add
PUT/contact-centre/queues/{id}Change a queue.writerivier desk queue-set
DELETE/contact-centre/queues/{id}Remove a queue with no open conversations.writerivier desk queue-remove

contact centre canned

MethodRouteWhat it doesLevelCommand
GET/contact-centre/cannedCanned replies an agent can insert, with the customer's and the agent's names filled in.readrivier desk canned
POST/contact-centre/cannedAdd a canned reply.writerivier desk canned-add
PUT/contact-centre/canned/{id}Change a canned reply.writerivier desk canned-set
DELETE/contact-centre/canned/{id}Remove a canned reply.writerivier desk canned-remove

contact centre canned text

MethodRouteWhat it doesLevelCommand
POST/contact-centre/canned/{id}/renderA canned reply filled in for one conversation and one agent, ready to send.writerivier desk canned-render

contact centre conversation

MethodRouteWhat it doesLevelCommand
GET/contact-centre/conversationsConversations, newest first: filter by status, agent, queue or customer.readrivier desk list
POST/contact-centre/conversationsOpen a conversation for a customer. It is matched to a contact by number or email, given service targets from its queue, and routed by skills and load (or to the queue's AI agent first).writerivier desk open
GET/contact-centre/conversations/{id}One conversation with its notes, replies, hand-off state and service-target state.readrivier desk get
POST/contact-centre/conversations/{id}/assignGive a conversation to an agent.writerivier desk assign
POST/contact-centre/conversations/{id}/releasePut a conversation back in its queue.writerivier desk release
PUT/contact-centre/conversations/{id}/tagsSet a conversation's tags.writerivier desk tag
POST/contact-centre/conversations/{id}/closeClose a conversation, with how it was resolved. A customer who writes again reopens it.writerivier desk close

contact centre timeline

MethodRouteWhat it doesLevelCommand
GET/contact-centre/conversations/{id}/timelineEverything with this customer in one list: messages, mail, calls, the contact's timeline, and the desk's replies and notes.readrivier desk timeline

contact centre reply

MethodRouteWhat it doesLevelCommand
POST/contact-centre/conversations/{id}/replyReply to the customer on the conversation's channel as the agent it is with: a mail, a text, a WhatsApp message (a template when the 24-hour window is closed), a requested call back, or a web chat message. Each goes through the channel's own checks, consent and plan allowance, and is refused with the reason and the next step.writerivier desk reply

contact centre composer

MethodRouteWhat it doesLevelCommand
GET/contact-centre/conversations/{id}/composerWhat a reply to this conversation needs: whether it can go now and why not, the channel's limit, the WhatsApp 24-hour window and approved templates, whether it is quiet hours where the customer is, and whether they opted out.readrivier desk composer

contact centre measure

MethodRouteWhat it doesLevelCommand
POST/contact-centre/measureHow a text is counted by the carrier: characters, encoding (GSM-7 or UCS-2) and the number of parts it becomes.writerivier desk measure

contact centre note

MethodRouteWhat it doesLevelCommand
POST/contact-centre/conversations/{id}/notesAdd an internal note the customer never sees.writerivier desk note

contact centre handoff

MethodRouteWhat it doesLevelCommand
POST/contact-centre/conversations/{id}/handoffHand a conversation over. To a person: at once, back into the queue. To an AI agent: waits until a person approves.writerivier desk handoff

contact centre handoff decision

MethodRouteWhat it doesLevelCommand
POST/contact-centre/conversations/{id}/handoff/decisionA person approves or declines a hand-off to an AI agent. An agent's own approval is refused.writerivier desk handoff-decide

contact centre history

MethodRouteWhat it doesLevelCommand
GET/contact-centre/customers/historyCalls, messages and mail with one customer, by contact id, number or email address, newest first.readrivier desk history

contact centre overview

MethodRouteWhat it doesLevelCommand
GET/contact-centre/overviewThe supervisor view: per queue, how many wait, the longest wait and how many are at risk or past their target; per agent, presence and load.readrivier desk overview

contact centre trace

MethodRouteWhat it doesLevelCommand
GET/contact-centre/tracesThe per-agent trace: what each agent did and when, for people and AI agents alike. Filter by agent or conversation.readrivier desk traces