Docs·Visitors and people

GET/api/v1/spreelytics/people/:contactIdentityId

Get a person

Returns one identified person: their email addresses, the identifiers tied to them, when they were first and last seen, the channel of their first visit and their lifetime totals. What they did before they were identified counts too, because the anonymous visits that led up to their identify() call are linked to them.

It answers 404 for an id that is not a person in this audience. Anonymous visitors have no person id; read them with the visitor endpoints on this page. Every role can call it, Viewer included.

Keys: an account key or an audience key. Getting started explains both kinds.

Parameters

PropInTypeNotes
contactIdentityIdpathstringThe person id, a UUID, from GET /people/search or a member list.
contactListIdquerystringThe audience id, a UUID. With an audience key it must be that key's own audience.

Response

PropTypeNotes
contactIdentityIdstringThe person id.
emailsstring[]Every email address on the person.
aliasesPersonAliasDto[]The identifiers tied to this person. Each has idType (such as email), value (normalised, so email addresses are lower case) and source, such as sdk_identify for an address an identify() call recorded.
firstSeenstringTheir earliest recorded activity as an ISO 8601 timestamp, or null when there is none.
lastSeenstringTheir latest recorded activity, or null.
firstTouchChannelstringThe channel of their earliest visit, such as Organic Search. Empty when they have no visits.
totalsPersonSourceTotalsDtoLifetime counts: sessions, webEvents (page views and custom events, not counting payments) and revenue (net of refunds, in your reporting currency).

Request

curl 'https://app.spreelytics.com/api/v1/spreelytics/people/:contactIdentityId?contactListId=…' \
  -H 'Authorization: Bearer YOUR_API_KEY'
const url = new URL('https://app.spreelytics.com/api/v1/spreelytics/people/:contactIdentityId');
url.searchParams.set('contactListId', '…');

const res = await fetch(url, {
  headers: { Authorization: 'Bearer YOUR_API_KEY' },
});
const data = await res.json();
import requests

res = requests.get(
    "https://app.spreelytics.com/api/v1/spreelytics/people/:contactIdentityId",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    params={"contactListId": "…"},
)
data = res.json()

Response

{
  "contactIdentityId": "string",
  "emails": [
    "string"
  ],
  "aliases": [
    {
      "idType": "string",
      "value": "string",
      "source": "string"
    }
  ],
  "firstSeen": "string",
  "lastSeen": "string",
  "firstTouchChannel": "string",
  "totals": {
    "sessions": 0,
    "webEvents": 0,
    "revenue": 0
  }
}

See your own numbers today.

Free up to 100k events a month · no credit card

Contact

Tell us what you need.

A real person reads these. We usually reply within one working day.

Or email us directly at contact@spreelytics.com.