Skip to content
Inkbox

Inkbox

BlogContactDocs
GuidesAPI Reference

Ctrl K

GuidesAPI Reference

Jump to

Conversations

A conversation is one thread between a connected human and an agent identity. Conversations are created automatically when a human connects through the router and messages the agent, and they persist as history even if the human later disconnects.

Every conversation read carries an assignment_status field reflecting the current connection: "active" means the recipient is connected right now, "released" means they disconnected. Sends, tapbacks, read receipts, and typing indicators into a released conversation return 409 until the recipient reconnects through the router.


List conversations GET

GET /conversations

List conversation summaries ordered by most recent message, with latest-message preview and unread count.

Query parameters

ParameterTypeDefaultDescription
agent_identity_idUUID-Narrow to one identity. Ignored for identity-scoped API keys, which always see their own identity
limitinteger50Number of results (1-200)
offsetinteger0Pagination offset
is_blockedboolean-Filter by blocked state of the underlying messages. true summarizes blocked rows only, false non-blocked rows only, and omitting it applies the caller's default visibility

Identity-scoped API keys never see blocked rows in conversation summaries. With is_blocked=false, previews, ordering, unread counts, and totals are computed from non-blocked rows only.

Response (200)

JSONJSON

Error responses

StatusDescription
400agent_identity_id names an identity that is not enabled for iMessage
403Identity-scoped key passed an agent_identity_id other than its own
404agent_identity_id not found, or not visible to the caller

Get conversation GET

GET /conversations/{conversation_id}

Get a single conversation by ID. To read the messages in it, use GET /messages?conversation_id=....

Path parameters

ParameterTypeDescription
conversation_idUUIDUnique identifier of the conversation

Query parameters

ParameterTypeDescription
agent_identity_idUUIDOptional identity assertion — returns 404 if the conversation belongs to a different identity

Response (200)

JSONJSON

Error responses

StatusDescription
404Conversation not found, belongs to another organization, or belongs to a different identity than asserted

List connections GET

GET /assignments

List active iMessage connections, newest first — one row per recipient currently connected to an agent identity through the router. Released connections are not returned; use assignment_status on conversation reads to detect a disconnect after the fact.

Query parameters

ParameterTypeDefaultDescription
agent_identity_idUUID-Narrow to one identity. Ignored for identity-scoped API keys, which always see their own identity
limitinteger50Number of results (1-200)
offsetinteger0Pagination offset

Response (200)

JSONJSON

Error responses

StatusDescription
403Identity-scoped key passed an agent_identity_id other than its own
404agent_identity_id not found, or not visible to the caller

Mark conversation read POST

POST /mark-read

Send a read receipt to the human — they see "Read" under their latest message — and mark the conversation's inbound messages as read.

Request body

FieldTypeRequiredDescription
conversation_idUUIDYesThe conversation to mark read

Request example

JSONJSON

Response (200)

JSONJSON

updated_count: 0 means no inbound messages needed updating; the read receipt is still sent.

Error responses

StatusDescription
400The conversation's identity is not enabled for iMessage
403The conversation's recipient is blocked by a contact rule
404Conversation not found, or not visible to the caller
409The recipient has disconnected from this agent and must reconnect through the router
502Upstream delivery failure — safe to retry

Send typing indicator POST

POST /typing

Show the typing bubble to the conversation's recipient — useful while your agent prepares a longer reply. The indicator clears on its own or when the next message arrives.

Request body

FieldTypeRequiredDescription
conversation_idUUIDYesThe conversation whose recipient should see the typing bubble

Response (200)

JSONJSON

Error responses

StatusDescription
400The conversation's identity is not enabled for iMessage
403The conversation's recipient is blocked by a contact rule
404Conversation not found, or not visible to the caller
409The recipient has disconnected from this agent and must reconnect through the router
502Upstream delivery failure — safe to retry

Conversation object

FieldTypeDescription
idstring (UUID)Conversation ID — the stable key for reads, replies, mark-read, and typing
assignment_idstring (UUID)The connection (one human ↔ one agent) carrying this conversation
assignment_statusstring"active" while the recipient is connected, "released" after they disconnect
remote_numberstringThe human's phone number (E.164)
created_atstring (ISO 8601)Creation timestamp
updated_atstring (ISO 8601)Last update timestamp

Conversation summary object

Returned by List conversations; adds latest-message preview fields:

FieldTypeDescription
latest_textstring | nullLatest message body preview
latest_message_atstring (ISO 8601) | nullLatest message timestamp
latest_directionstring | nullDirection of the latest message
latest_has_mediabooleanWhether the latest message carries media
unread_countintegerUnread inbound message count in the summarized view
total_countintegerTotal message count in the summarized view

Connection object

Returned by List connections. The pool line carrying the connection is managed by Inkbox and never appears in API responses.

FieldTypeDescription
idstring (UUID)Connection ID — matches assignment_id on conversations
remote_numberstringThe connected human's phone number (E.164)
agent_identity_idstring (UUID)The agent identity the human is connected to
organization_idstringOwning organization
statusstringAlways "active" on returned rows — released connections are not listed
released_atstring (ISO 8601) | nullWhen the connection was released; null while active
created_atstring (ISO 8601)When the human connected
updated_atstring (ISO 8601)Last update timestamp

Inkbox

Copyright © 2026 Inkbox

This site is protected by reCAPTCHA.

Google Privacy Policy and Terms of Service apply.

Website

Inkbox

Copyright © 2026 Inkbox

This site is protected by reCAPTCHA.

Google Privacy Policy and Terms of Service apply.

Website

Y CombinatorBacked by Y Combinator
Conversations