Skip to main content
GET
List Contacts
New to contacts? See the Contacts guide for the funnel model and how contacts relate to accounts and deals. This page (and every other page in this section) is the field-level technical reference.
Returns one page of contacts, newest first, with the exact total match count (ignoring limit/offset) in the X-Total-Count response header — see Errors & Pagination. stage accepts a comma-list precisely so one endpoint can serve both a “leads” listing (target,lead) and a “contacts” listing (contact) without two near-duplicate endpoints.

Auth

Requires a CRM read scope and an active organization on the token. Any of contacts:read, deals:read, companies:read, or activities:read qualifies, as does any *:manage scope — manage implies read.

Response

An array of contact objects, each also carrying an embedded accounts object (this endpoint always requests select=*,accounts(id,name)):

Authorizations

Authorization
string
header
required

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

Query Parameters

stage
string | null

Funnel stage filter: a single value ('contact') or a comma list ('target,lead').

owner_id
string | null

Filter to contacts owned by this Logto user id.

source
string | null

Filter by origin tag; exact match. Values written by the backend: 'manual', 'import' (CSV import), 'customer_intel', 'scan_badge', 'scan_card', 'share_back'.

account_id
string | null

Filter to contacts linked to this account.

disqualified
boolean | null

Filter by disqualification: true for disqualified only, false for active only.

q
string | null

Free-text search across first/last name, email, title, company, and company domain.

limit
integer
default:100

Max rows per page; capped at 500 server-side.

offset
integer
default:0

Row offset for pagination.

Response

Successful Response