Skip to main content
POST
/
api
/
contacts
List contacts by pipeline status buckets
curl --request POST \
  --url https://your-instance.example.com/api/contacts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "page": {
    "New Lead": 1,
    "Qualified": 1
  },
  "size": 25,
  "search": "jane",
  "ownerFilter": "my",
  "pipelineType": "Contact",
  "pipelineId": "64f0a1b2c3d4e5f6a7b8c9d1"
}
'
{
  "data": {
    "New Lead": {
      "contacts": [],
      "total": 12
    },
    "Qualified": {
      "contacts": [],
      "total": 4
    }
  },
  "stageIdByName": {
    "New Lead": "64f0a1b2c3d4e5f6a7b8c9d2"
  }
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
page
object

Per-stage page numbers keyed by stage id or stage name (e.g. { "New Lead": 2 }).

size
integer

Page size applied to every stage query.

Case-insensitive substring match across first/last name, full name, and phone-number value.

source
string

Filter to contacts whose source equals this value (Contacts pipeline only).

ownerFilter
string

Quick-tab owner scope: my, all, team, unassigned, or a specific user _id.

owner
string[]

Specific-tab owner ids — matches contacts where any listed user is creator, owner, or assignee. Overrides ownerFilter.

assignee
string[]

Restrict to contacts whose conversations have any of these users as assignees.

pipelineType
enum<string>

Which model to query; defaults to Contact.

Available options:
Contact,
Application
pipelineId
string

Specific pipeline _id to query; falls back to the org's active pipeline of pipelineType.

status
string

When set, restrict the result to this single stage (by name or id) instead of returning all stages.

dateRange
object

Legacy { start, end } createdAt window; kept for backward compatibility — prefer createdDateRange.

createdDateRange
object

{ start, end } ISO range filtering on createdAt.

customFilters
object

Map of custom-field key to value; string values use case-insensitive regex match.

stages
string[]

Client-provided stage names to avoid a pipeline lookup; ordering controls which stages get queried.

stageIdByName
object

Optional stage-name to stage-id map enabling indexed pipelineStage queries instead of legacy status-name filters.

bulkOnly
boolean

Restrict to contacts created via bulk import (isBulkSms: true).

messageStatus
string

Message engagement filter: all, answered (has any message), or unanswered.

lastMessageTimeRange
object

{ value, unit } (hours/days) — returns contacts with NO messages within that recent window.

lastMessageDateRange
object

{ start, end } window — returns contacts whose messages fall within this absolute date range.

Response

Contacts grouped by status

data
object
dataByStatus
object
stageIdByName
object
stageNameById
object