Entity Resolve

Resolve a polymorphic identifier to ranked entity candidates.

The entity resolve endpoint lets you look up entities by any combination of identifiers - phone number, email, canonical ID (MRN), external system ID, or entity UUID. It returns ranked candidates with confidence scores and match provenance, so callers know which identifiers actually matched each row.

This powers inbound caller identification, webhook entity matching, and any workflow where you know one or more identifiers and need to find the corresponding entity.

Endpoint

Method
Path
Description

POST

/v1/{workspace_id}/entities/resolve

Resolve entity by identifier

Request Body

Field
Type
Required
Description

entity_type

string

Yes

Entity type filter (e.g. person). Scopes the lookup to the correct partition.

phone

string

No

E.164 phone number. Format-tolerant: 10-digit, 11-digit with country code, and E.164 with plus prefix are all accepted.

email

string

No

Email address. Matched case-insensitively.

canonical_id

string

No

Canonical or MRN identifier.

external_id

object

No

External system identifier reference. See below.

entity_id

string (UUID)

No

Direct entity UUID lookup.

limit

integer

No

Maximum candidates to return. Range: 1-50, default: 25.

At least one identifier (phone, email, canonical_id, external_id, or entity_id) must be provided. Requests with no identifiers return HTTP 400.

External ID Object

Field
Type
Required
Description

system

string

Yes

External system label (lowercase, e.g. epic, hubspot, charm).

value

string

Yes

System-issued identifier value.

The system field is informational for scoring. The lookup matches the value against all keys in the entity's external identifiers, regardless of key naming conventions used by different adapters.

Response

Field
Type
Description

matches

array

Ranked list of candidate matches.

total

integer

Number of candidates returned.

Match Object

Field
Type
Description

entity_id

string (UUID)

Matched entity ID.

entity_type

string

Entity type.

confidence

float

Match confidence (0-1).

matched_on

string[]

Identifier kinds that actually matched this row. Possible values: entity_id, phone, email, canonical_id, external_id.

summary

object

Compact identity card.

Summary Object

Field
Type
Description

display_name

string or null

Display name.

name

string or null

Full name.

phone

string or null

Phone number.

email

string or null

Email address.

birth_date

string or null

Date of birth.

mrn

string or null

Medical record number.

canonical_id

string or null

Canonical identifier.

external_ids

object

External system identifiers.

last_event_at

string (datetime) or null

Last event timestamp.

event_count

integer

Total event count.

tags

string[]

Entity tags.

Ranking

Candidates are ranked by confidence (highest first), with ties broken by the number of identifiers that matched. A row matching both phone and email outranks a row matching only phone.

Direct UUID lookup (entity_id) returns confidence 1.0. Phone, canonical ID, and external ID matches use the same confidence tier as the platform's entity merge resolver. Email matches use a slightly lower confidence tier.

Example

Request:

Response:

Error Responses

Status
Description

400

No identifier provided or invalid input.

401

Missing or invalid API key.

422

Validation error (e.g. limit out of range, malformed email).

Last updated

Was this helpful?