https://inkbox.ai/api/v1/whatsapp. Use the selected agent_identity_id query parameter where required. History remains tied to the original agent, not whoever later receives a phone number.
List conversations
limit defaults to 50 and accepts 1–200; offset defaults to 0. The optional is_blocked filter is available only within the caller’s authorized visibility.
Python
TypeScript
CLI
Find conversations with a person
Use either optional filter:422; an unknown or inaccessible contact returns 404. Filters do not expand access to messages or group members.
Conversation fields
Every conversation containsid, agent_identity_id, local_number, nullable remote_number, participants, is_group, nullable group_name, unresolved_participant_count, created_at, and updated_at. For direct messages, remote_number is the remote E.164 number and participants remains a singleton array. For groups, remote_number is null and participants contains known remote E.164 numbers; the local number is separate. unresolved_participant_count counts members whose phone number is unavailable.
group_name is a display label, not an address or unique identifier. Use the returned id as conversation_id when replying. Groups are joined outside Inkbox and require an incoming message before outbound communication. Names do not grant access; current contact permissions still apply.
Groups are included in authorized lists without a separate opt-in. Older strict clients that require non-null phone numbers cannot parse group responses, including an entire list containing even one group; update them to SDK 0.7.29 or later before processing groups.
List entries also contain:
Get a conversation
GET /messages?conversation_id=.... An inaccessible or unknown conversation returns 404.
Use its ID to send another message in the same conversation. Reading a conversation does not enable a disabled channel or transfer its history to another identity.
Mark local history read
{ "conversation_id": "...", "updated_count": 1 }. This updates local history only; it does not send a remote read receipt.
Python
TypeScript
CLI
Date filters
Both message and conversation lists acceptstart_datetime, end_datetime, and tz. Bounds filter created_at; start and end instants are inclusive. A bare end date includes the entire calendar day. Zone-less values use the supplied IANA timezone, or UTC by default. Explicit-offset timestamps retain their own timezone. Filtering happens before pagination.
