About
Look up and search contacts, create and update them, add notes and tags, assign teammates, find duplicate groups, manage saved filters, and skip-trace (enrich) contacts for phone numbers and emails. All operations go through the developer API gateway — one endpoint, called byoperationId. If you haven’t set up a key yet, start with the
Developer API Overview.
Operations
Reading contacts (READ scope)
Use
getFilter to read a saved criteria tree before editing it, and
saveFilter(type: CONTACT) to create one. Filter authoring and vocabulary
discovery are documented in the
Properties API.
filterContacts and filtered countContacts calls check the resolved
criteria against your organization’s plan. A field the plan excludes causes
an operation error with code PLAN_ENTITLEMENT_REQUIRED, rather than an
empty result. This applies to saved filters as well as inline trees; a saved
filter does not preserve access to a feature your plan no longer includes.
For filterContacts.sort, direction is ASC or DESC and field is
SELLER_INTENT_SCORE, LAST_COMMUNICATION, LAST_ACTIVITY, DIAL_ATTEMPTS
(organization-wide outbound dials), MY_LAST_CALL, MY_LAST_TEXT,
LAST_UPDATED, CREATED_AT, TASK_HIGHLIGHT, or AUCTION_DATE (earliest
upcoming auction or sale day, with contacts having none last). Unknown fields
are silently ignored and use the default order; a successful response does not prove a
guessed sort field worked.
Writing contacts (WRITE scope)
Who may edit or delete a noteA non-admin key may only edit or delete notes the key owner authored;
anyone else’s are refused. A note whose
author.kind is AI counts as
someone else’s, so a non-admin key is refused on one — check the author before
offering to correct a note. A team-admin key can edit or delete any note.Custom fields (READ + WRITE scopes)
Custom fields are organization-wide definitions. These operations manage the
definitions themselves; you write per-contact values through the
addCustomFieldValues input on createContact and updateCustomFieldValues on
updateContact, using the customFieldId from here.
Enrichment (ADMIN scope)
Organization guardContact operations declare which ids are pre-checked. These include the
contact itself on by-id writes, and tag/list or teammate ids on bulk
operations that declare those guards. An inaccessible guarded id returns
403 forbidden. Secondary ids nested in updateContact are validated by
the operation as it executes and can return an operation error such as
NOT_FOUND. See
Authorization for the model.Example
Find a contact, then add a note to it:Contacts also flow out of Goliath — workflow webhook steps POST a contact
payload to your URLs. See the
Contact Webhook Payload reference.