Docs
Contacts

List contacts

GEThttps://api.norreach.app/v1/contacts

The workspace's contacts, newest first, a page at a time. Filter by text (q searches names, email, company and phone), tag, list, source, status, stage, owner or dates.

contacts:readOperation id: list_contacts
GET/contacts
curl -X GET "https://api.norreach.app/v1/contacts" \
  -H "Authorization: Bearer $NORREACH_API_KEY"
List contacts
{
  "object": "list",
  "data": [
    {
      "id": "7d1c3b2a-5e4f-4a1b-9c8d-0e1f2a3b4c5d",
      "object": "contact",
      "first_name": "Maja",
      "last_name": "Lind",
      "email": "maja.lind@example.com",
      "phone": "+46701234567",
      "company": "Example Care AB",
      "title": "Head of Staffing",
      "status": "new",
      "stage": "new",
      "tags": [
        "webinar"
      ],
      "source": "api",
      "assigned_to": null,
      "timezone": "Europe/Stockholm",
      "linkedin_url": null,
      "fit_score": null,
      "consent": {
        "basis": "consent",
        "source": "webinar_signup",
        "recorded_at": "2026-11-04T09:12:33.120Z"
      },
      "attrs": {
        "crm_id": "C-1042"
      },
      "created_at": "2026-11-04T09:12:33.120Z",
      "updated_at": "2026-11-04T09:12:33.120Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Authorizations

Authorizationstringheaderrequired

Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope contacts:read. API keys and scopes

Query parameters

limitintegerquery

Page size (1–200, default 50).

cursorstringquery

The next_cursor of the previous page.

qstringquery

Text search.

tagstringquery
list_idstring (uuid)query

An id (UUID).

sourcestringquery
statusenumquery
One of:newcontactedinterestednot_interestedconvertedmeeting_bookedbad_databad_timingneutralunresponsiveunqualifieddnc
stageenumquery
One of:newcontactedmeetingqualifiedwonlost
assigned_tostring (uuid)query

An id (UUID).

created_afterstring (date-time)query
created_beforestring (date-time)query
updated_afterstring (date-time)query
sortenumquery
One of:created_at-created_atupdated_at-updated_at

Response

200application/json— List contacts

object"list"required
dataobject[]required
Show child attributes
data[].idstring (uuid)required

An id (UUID).

data[].object"contact"required
data[].first_namestringrequired
data[].last_namestringrequired
data[].emailstring | nullrequired
data[].phonestring | nullrequired

E.164, e.g. +46701234567.

data[].companystring | nullrequired
data[].titlestring | nullrequired
data[].statusstringrequired

One of: new, contacted, interested, not_interested, converted, meeting_booked, bad_data, bad_timing, neutral, unresponsive, unqualified, dnc.

data[].stagestring | nullrequired

Pipeline stage — one of: new, contacted, meeting, qualified, won, lost.

data[].tagsstring[]required
data[].sourcestring | nullrequired

Where the contact came from (api for contacts created through the API).

data[].assigned_tostring (uuid) | nullrequired

The member who owns this contact.

data[].timezonestring | nullrequired

IANA time zone — quiet hours follow it.

data[].linkedin_urlstring | nullrequired
data[].fit_scorenumber | nullrequired
data[].consentobject | nullrequired
data[].attrsobjectrequired

Your own fields (free-form JSON, at most 16 KB).

data[].created_atstringrequired

RFC 3339 UTC timestamp with milliseconds.

data[].updated_atstringrequired

RFC 3339 UTC timestamp with milliseconds.

has_morebooleanrequired
next_cursorstring | nullrequired

Errors

Errors are application/problem+json with a stable code.

StatusCodeMeaning
400bad_requestThe request couldn't be read.
400unknown_fieldThe request has a field this operation doesn't know.
400invalid_cursorThat cursor doesn't belong to this list.
401unauthorizedA valid API key is required.
403insufficient_scopeThis API key doesn't have the scope this operation needs.
403feature_not_enabledThe API isn't switched on for this workspace.
404not_foundThat doesn't exist.
429rate_limitedToo many requests. Slow down and try again.
500server_errorSomething went wrong on our side.
503unavailableThe API isn't available right now. Try again shortly.