Skip to main content
These endpoints turn an identifier - an email or HEM (hashed email), a LinkedIn slug - and turn them into enriched profiles and attributes to make them more actionable and valuable. For every identifier you put in; get a rich set of attributes back

Core Identity — start with Identity

The three Identity endpoints are Core Identity: one input, three shapes of person data behind it. Each takes the same input — an MD5 (or plaintext email) — and differs only by what slice of data it returns.

Universal

POST /api/v1/identity/person — everything we have, in one call.

Personal Identity

POST /api/v1/identity/consumer — consumer attributes, location, recency.

Professional Identity

POST /api/v1/identity/business — firmographic and professional context, plus MAIDs.
The Identity endpoints are not one API orchestrating calls to the others. Each reads the same underlying tables the standalone lookups read — it reproduces those fields, it doesn’t proxy their calls. The route you call decides what comes back; the hash you send never changes.

Authentication

Every endpoint requires an account API key, sent in a request header. Any of these are accepted:
A missing or malformed key returns 401. A key whose plan doesn’t include the service returns 403. Check your balance any time with Credits.

Shared behavior

  • Input: Most endpoints take a HEM (md5) — a 32-character hashed email — or a plaintext email, which is normalized and hashed for you. IP and LinkedIn endpoints take an ip_address or linkedin_slug/linkedin_url instead.
  • Hit: 200 with the data, wrapped in result (single) or results.
  • Miss: 404 (HEM/identity endpoints) or 200 with an empty payload (LinkedIn/IP endpoints), and zero credits charged.
  • Batch: Identity endpoints and email_to_activity accept arrays (max 1,000) and return match_count, credits_charged, and credits_exhausted alongside results. Order is preserved after de-dup; misses are omitted.
  • Anonymization: When you look up by HEM, email fields come back MD5-hashed by default. Pass skip_anonymize=true (where supported) for plaintext.
  • Validation: Every 4xx is a no-op — no lookups, no charge.