Find before creating
Search Contacts withGET /api/v2/contact using exact identifiers or q, and follow the returned pagination. Reuse the existing Contact when one represents the same person.
Create or update with the documented Contact routes, then read the persisted Contact before continuing.
Contact fields
Writable Contact fields are:name,title,email,phone,cnam,mobile,birthday,gender, andimageaddresswithstreet,city,state,zip, andcountrycompanywithname,industry,position,website, andaddresspreferredContactMethod,marketingOptIn,contactSource,leadSource, andstatussocialMediawithlinkedin,twitter,facebook, andinstagramtags,notes,agentContext,customFields,lastTask,lists, andappointments
cnam is Contact display data and does not change outbound caller ID. customFields accepts at
most 20 top-level keys and 8,192 UTF-8 JSON bytes after the update.
POST /api/v2/contact creates or updates a Contact. Supply id or target to resolve an existing
person, or phone or email to create one. Provided top-level fields replace their current values.
Use PATCH /api/v2/contact/{contactId} when nested values should merge or a field should be removed:
objects merge recursively, arrays and scalar values replace, and explicit null removes a field.
Represent one ongoing objective
Use one stable Contact List name for each ongoing objective. Before creating a new list, inspect existing names and reuse an exact match instead of creating a synonym. Enroll a Contact and merge compact state with:PATCH /api/v2/contact/{contactId}/list/{listName}/state
Useful state can include the current phase, a next action, a not-before time, the last outcome, and small objective-specific data. These are workflow vocabulary, not a required universal state machine.
Continue work from evidence
Before taking the next action:- Read the Contact and its matching objective state.
- Inspect related active Tasks and recent Contact communication logs.
- Read current source-system data when it affects the decision.
- Respect the recorded not-before time unless new information requires reevaluation.
- Perform and verify the action.
- Patch the outcome and next action.
Keep state compact
Do not store transcripts, complete API responses, credentials, cookies, or copied source records in Contact custom fields. Store only the facts required for the next decision and remain within the documented size limit. Remove a Contact from the objective only when the objective is truly complete or abandoned. Waiting, paused, cooling-down, and blocked Contacts should stay enrolled and record that state.For recommended state shapes and request templates, use the Vida API Skill.