Skip to main content
POST

Authorizations

Authorization
string
header
required

API key passed as a Bearer token in the Authorization header.

Headers

x-api-version
enum<string>
default:2025-11-01
required

API version to use. 2025-11-01 is the only accepted value. Send it on every call: it is enforced today on POST /watch/{dataset}/search, where a missing or unrecognized value returns 400, and the other watch routes accept a request without it rather than relying on that.

Available options:
2025-11-01
Example:

"2025-11-01"

Path Parameters

dataset
enum<string>
required

The dataset the watch is built on. Entity watches support person and company; there is no job entity watch, and job returns 404 here. Use /watch/job/search for jobs.

Available options:
person,
company
Example:

"person"

Body

application/json

Body for creating an entity watch. The dataset comes from the path.

entities
object
required

The records to watch, as a map of identifier type to values. The accepted keys are exactly the ones the dataset's enrich endpoint accepts, and they are resolved to canonical ids when the watch runs. One watch holds up to 50,000 subjects across all keys.

People accept professional_network_profile_urls and business_emails. Companies accept domains, names, professional_network_profile_urls, and crustdata_company_ids. Company ids must be positive integers; every other identifier is a non-empty string.

track
object
required

The change that fires a notification. A single leaf or a nested AND/OR group.

config
object
required

Schedule, per-run caps, and data freshness for an entity watch.

notifications
object[]
required

Delivery channels. The key is required on an entity create, but the list may be empty for a pull-only watch, which pushes nothing and whose results you read from the run-history endpoints instead.

One delivery channel. Every channel on a watch receives every notification.

fields
string[]

Field groups to include in each delivered record, using the same names and nesting as the dataset's enrich endpoint. There is no wildcard: list every group you want. Omit it and the record falls back to a minimal projection, which for a person is basic_profile plus social_handles.

The tracked field is not added to the payload automatically. fields does not affect the price, so request whatever your workflow needs, and note that some groups need a field-level entitlement on your key.

Example:

Response

The watch was created and its baseline run was scheduled.

An entity watch, as returned by create, get, list, and update.

id
integer
Example:

46936

kind
enum<string>
Available options:
entity
Example:

"entity"

dataset
enum<string>
Available options:
person,
company
Example:

"person"

api_version
string
Example:

"2025-11-01"

config_version
string
Example:

"2025-11-01"

status
enum<string>
Available options:
active,
paused,
suspended,
expired,
cancelled
Example:

"active"

entities
object

The records to watch, as a map of identifier type to values. The accepted keys are exactly the ones the dataset's enrich endpoint accepts, and they are resolved to canonical ids when the watch runs. One watch holds up to 50,000 subjects across all keys.

People accept professional_network_profile_urls and business_emails. Companies accept domains, names, professional_network_profile_urls, and crustdata_company_ids. Company ids must be positive integers; every other identifier is a non-empty string.

track
object

The saved track tree.

fields
string[] | null
config
object

Schedule, per-run caps, and data freshness for an entity watch.

notifications
object[]

One delivery channel. Every channel on a watch receives every notification.

created_at
string<date-time>
Example:

"2026-07-16T03:16:38.351849Z"

last_run_at
string<date-time> | null
Example:

"2026-07-16T13:39:18.598964Z"

notifications_count
integer
Example:

12

credits_consumed
number
Example:

60

last_notified_at
string<date-time> | null
Example:

"2026-07-16T13:39:18.598964Z"