Contact Endpoints
The public API covers the contact flows most integrations need before a sequence starts.Try It: List Contacts
Query contacts with filters such as
email, firstName, lastName, phone, socialUrl, campaignId, tagIds, and roleTitle.Try It: List Contact Tags
Download workgroup tags and use their
tagId values when filtering contacts.Try It: Get Contact
Retrieve one contact by
contactId, including sequence and profile fields used by automations.Try It: Import Contact
Import one contact with notes, tags, duplicate overwrite mode, and optional automatic update behavior.
Try It: Update Contact
Patch an existing record while keeping the same persistence behavior used by the main app.
Try It: Create Contact Note
Add one recruiter note to a contact without reimporting the whole record.
Try It: Update Contact Note
Upsert one existing note by note id when your integration owns the note lifecycle.
Try It: List Contact Documents
Download the contact CV plus all uploaded attachments in one response.
Try It: Upload Contact Document
Upload a CV or attachment through the same document storage path used by the legacy API.
Try It: Download Contact Events
Download the contact timeline across email, SMS, social interactions, sequence activity, and system events.
Try It: Trigger Enrichment
Request email, phone, social, or career enrichment when required fields are missing.
Coverage Notes
- Use
GET /contactsto search or page through records. - Use
firstNameandlastNamefor structured name lookup; values must be at least 2 characters and the current API intentionally does not expose free-form full-name search because structured fields keep large workgroup searches more selective. - Use
phonewhen your integration only knows a candidate phone identity hint from a legacy workflow; this filter uses the indexed contact search path and requires at least 6 digits. - Use
GET /contacts/tagsto download tag ids before filtering contacts bytagIds; tag discovery is capped by thelimitquery parameter. - Add
includeTotal=trueonly when your integration actually uses the count; those requests are slower and limited to60 requests/minute. - Use
GET /contacts/{contactId}when your system already stores the contact identifier. - Use
POST /contacts/importto create or upsert one contact through the same normalization path used by Jobin imports. - Use
POST /contacts/{contactId}/noteandPOST /contacts/{contactId}/note/{noteId}when your integration needs to add or maintain recruiter-facing notes separately from core contact fields. - Use
GET /contacts/{contactId}/documentsandPOST /contacts/{contactId}/documentsto manage CVs and supporting attachments without falling back to the legacy/v1/contactssurface. - Use
GET /contacts/{contactId}/eventsto download the contact timeline in small batches. - Use
PATCH /contacts/{contactId}for thin updates that should follow the same normalization path as the app. - Use enrichment only when downstream sequence steps require data that is still missing.
