MobiariDocs
Admin APIConversations

List conversations

GET
/stores/{store_id}/conversations

The inbox, one page at a time. With the default activity sort the newest activity comes first and pages are cursor-based, so a conversation that gets a new message while you page moves to the head instead of shifting the pages; keep the list fresh with the conversation:new and conversation:updated events of the agent WebSocket (/ws/conversations). For badge counts use GET /stores/{store_id}/conversations/counts.

Authorization

bearer_auth
AuthorizationBearer <token>

Authorization: Bearer <token>. Either a session access token from POST /auth/login (refresh it with POST /auth/refresh) or a store API token (mobi_st_…). A store API token works only for the store it was issued in, and can do at most what its issuing user can there, narrowed to the scopes it was issued with.

In: header

Path Parameters

store_id*string

Store id

Formatuuid

Query Parameters

status?string

Only conversations in this status. Omit for every status.

Value in"open" | "pending" | "snoozed" | "resolved"
assignee?string

me (the caller), unassigned, or a user id.

channel_kind?string

Only conversations on this kind of channel.

Value in"web" | "whatsapp" | "email"
channel_id?string

Only conversations on this channel.

Formatuuid
tag?string

Only conversations with this label.

priority?string
Value in"low" | "normal" | "high" | "urgent"
customer_id?string

Only conversations with this customer.

Formatuuid
unread?boolean

Only conversations with contact messages the team has not read.

search?string

Free text over the contact's name, e-mail, phone, WhatsApp number and the messages.

sort?string

Defaults to activity. activity and newest page by cursor; waiting and priority by offset.

Value in"activity" | "waiting" | "priority" | "newest"
limit?integer

Page size, 1 to 200. Defaults to 50.

Formatint64
Range1 <= value <= 200
cursor?string

next_cursor from the previous page. Omit for the first page.

offset?integer

Rows to skip, for UIs that jump to a page number. Ignored when cursor is set. Prefer cursor for walking a whole list.

Formatint64
Range0 <= value
include_total?boolean

Also return total, the count of all matching rows. Costs an extra query; leave off when you only walk pages.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/stores/497f6eca-6276-4993-bfeb-53cbbbba6f08/conversations?limit=50"
{
  "data": [
    {
      "assignee_user_id": "e942d24d-8cee-4fa2-bf68-164509e32e2f",
      "attributes": {},
      "bot_active": true,
      "channel_id": "bbe8aa76-a4bb-46f6-a785-df8e831cc459",
      "channel_kind": "web",
      "contact_email": "string",
      "contact_name": "string",
      "contact_phone": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "csat_comment": "string",
      "csat_score": 0,
      "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",
      "external_id": "string",
      "handed_over_at": "2019-08-24T14:15:22Z",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "last_message_at": "2019-08-24T14:15:22Z",
      "last_message_preview": "string",
      "last_message_sender": null,
      "priority": "low",
      "resolved_at": "2019-08-24T14:15:22Z",
      "snoozed_until": "2019-08-24T14:15:22Z",
      "status": "open",
      "store_id": "7fe87115-950c-4ae8-bd7e-970406bc9ac0",
      "tags": [
        "string"
      ],
      "unread_for_agents": 0,
      "unread_for_visitor": 0,
      "updated_at": "2019-08-24T14:15:22Z",
      "visitor_id": "string",
      "assignee_name": "string",
      "customer_name": "string",
      "display_name": "string",
      "waiting_since": "2019-08-24T14:15:22Z"
    }
  ],
  "has_more": true,
  "next_cursor": "string",
  "total": 0
}
{
  "code": "not_found",
  "details": {},
  "error": "Order not found"
}
{
  "code": "not_found",
  "details": {},
  "error": "Order not found"
}
{
  "code": "not_found",
  "details": {},
  "error": "Order not found"
}
{
  "code": "not_found",
  "details": {},
  "error": "Order not found"
}
{
  "code": "not_found",
  "details": {},
  "error": "Order not found"
}