v24

latestOpenAPI 3.0.3raw.githubusercontent.com2026-08-014382230.2 KB

List contacts with filtering and pagination

Retrieves a paginated list of contacts with optional filtering. All contact fields are always returned.

Filtering: Use filters to search for contacts. Text filters (email, external_id, first_name, last_name, full_name, phone, country, language) use case-insensitive partial matching (ILIKE).

List filtering: Use list_id and/or contact_list_status to filter contacts by list membership.

Segment filtering: Use segments[] to filter contacts that belong to specific segments.

Contact lists: By default, contact_lists is not included in the response. Set with_contact_lists=true to include the contact's list subscriptions.

Pagination: Uses cursor-based pagination. Use the next_cursor from the response to fetch the next page.

get/api/contacts.list

Query parameters

workspace_idstring required

The ID of the workspace

emailstring

Filter by email (case-insensitive partial match)

external_idstring

Filter by external ID (case-insensitive partial match)

first_namestring

Filter by first name (case-insensitive partial match)

last_namestring

Filter by last name (case-insensitive partial match)

full_namestring

Filter by full name (case-insensitive partial match)

phonestring

Filter by phone number (case-insensitive partial match)

countrystring

Filter by country (case-insensitive partial match)

languagestring

Filter by language (case-insensitive partial match)

list_idstring

Filter by list membership (contacts subscribed to this list)

contact_list_status'active' | 'pending' | 'unsubscribed' | 'bounced' | 'complained'

Filter by subscription status within the list

segments[]string[]

Filter by segment membership (contacts in any of these segments)

with_contact_listsboolean

Include contact list subscriptions in the response

limitinteger

Maximum number of contacts to return (1-100)

cursorstring

Pagination cursor from previous response

Response

Contacts retrieved successfully

next_cursorstring nullable

Cursor for fetching the next page of results. Null if no more results.

Example response

{
  "contacts": [
    {
      "email": "user@example.com",
      "external_id": "user_12345",
      "timezone": "America/New_York",
      "language": "en-US",
      "first_name": "John",
      "last_name": "Doe",
      "full_name": "John Doe",
      "phone": "+15551234567",
      "address_line_1": "123 Main St",
      "address_line_2": "Apt 4B",
      "country": "US",
      "postcode": "10001",
      "state": "NY",
      "job_title": "Software Engineer",
      "custom_string_1": "Premium tier",
      "custom_number_1": 42,
      "custom_datetime_1": "2023-06-01T09:00:00Z",
      "custom_json_1": {
        "preferences": {
          "theme": "dark",
          "notifications": true
        }
      },
      "created_at": "2023-01-15T10:30:00Z",
      "updated_at": "2023-04-22T15:45:00Z",
      "contact_lists": [
        {
          "email": "user@example.com",
          "list_id": "newsletter",
          "list_name": "Newsletter",
          "status": "active",
          "created_at": "2023-01-15T10:30:00Z",
          "updated_at": "2023-01-15T10:30:00Z",
          "deleted_at": null
        }
      ],
      "contact_segments": [
        {
          "email": "user@example.com",
          "segment_id": "premium_users",
          "version": 1,
          "matched_at": "2023-01-15T10:30:00Z",
          "computed_at": "2023-01-15T10:30:00Z"
        }
      ]
    }
  ],
  "next_cursor": "MjAyMy0wMS0xNVQxMDozMDowMFp+dXNlckBleGFtcGxlLmNvbQ=="
}