Contacts are the core records in Driftwood — the people your team interacts with. Contacts can be associated with companies, tagged, and have custom fields.
Field Type Description iduuid Unique identifier of the contact (UUID). account_iduuid ID of the account that owns this contact (UUID). created_byuuid ID of the user who created this contact (UUID). first_namestring Contact’s first name. last_namestring Contact’s last name. emailstring Contact’s email address. phonestring Contact’s phone number. company_iduuid? ID of the company this contact belongs to (UUID), or null if unassigned. company_namestring Name of the associated company, joined from the companies table (read-only). job_titlestring Contact’s job title. addressstring Street address. citystring City. statestring State or province. zip_codestring Postal or ZIP code. countrystring Country. notesstring Free-form notes about the contact. tagsstring[] Tags associated with the contact; normalized to lowercase, trimmed, and deduplicated. source_iduuid? ID of the source this contact came from (UUID), or null if unassigned. source_namestring Name of the associated source, joined from the sources table (read-only). custom_fieldsobject Custom field values as a JSON object, validated against the account’s contact custom field definitions. created_atdatetime Timestamp when the contact was created (ISO 8601). updated_atdatetime Timestamp when the contact was last updated (ISO 8601).
Endpoint: contacts-create
Field Type Required Description first_namestring Yes Contact’s first name. Required and must be non-empty. last_namestring No Contact’s last name. emailstring No Contact’s email address. phonestring No Contact’s phone number. company_idstring? No ID of the company to associate (UUID). job_titlestring No Contact’s job title. addressstring No Street address. citystring No City. statestring No State or province. zip_codestring No Postal or ZIP code. countrystring No Country. notesstring No Free-form notes about the contact. tagsstring[] No Tags to assign; normalized to lowercase, trimmed, and deduplicated. source_idstring? No ID of the source to associate (UUID). custom_fieldsobject? No Custom field values as a JSON object, validated against the account’s contact custom field definitions.
curl -X POST https://api.driftwoodapp.com/api/contacts-create \
-H " Authorization: Bearer YOUR_TOKEN " \
-H " Content-Type: application/json " \
-d ' {"first_name": "..."} '
Endpoint: contacts-delete
Field Type Required Description idstring Yes ID of the contact to delete (UUID).
curl -X POST https://api.driftwoodapp.com/api/contacts-delete \
-H " Authorization: Bearer YOUR_TOKEN " \
-H " Content-Type: application/json " \
Endpoint: contacts-get
Field Type Required Description idstring Yes ID of the contact to retrieve (UUID).
curl -X POST https://api.driftwoodapp.com/api/contacts-get \
-H " Authorization: Bearer YOUR_TOKEN " \
-H " Content-Type: application/json " \
Endpoint: contacts-list
Field Type Required Description searchstring No Full-text search query matched against contact fields. tagsstring[] No Filter to contacts that have all of these tags; normalized to lowercase, trimmed, and deduplicated. company_idstring? No Filter to contacts belonging to this company (UUID). company_idsstring[] No Filter to contacts belonging to any of these companies (UUIDs). source_idsstring[] No Filter to contacts from any of these sources (UUIDs). cursorstring No Opaque pagination cursor from a previous response’s next_cursor. limitint No Maximum number of contacts to return per page.
curl -X POST https://api.driftwoodapp.com/api/contacts-list \
-H " Authorization: Bearer YOUR_TOKEN " \
-H " Content-Type: application/json " \
Endpoint: contacts-update
Field Type Required Description idstring Yes ID of the contact to update (UUID). Required. first_namestring? No New first name. Omit to leave unchanged. last_namestring? No New last name. Omit to leave unchanged. emailstring? No New email address. Omit to leave unchanged. phonestring? No New phone number. Omit to leave unchanged. company_idstring? No New associated company ID (UUID). Omit to leave unchanged. job_titlestring? No New job title. Omit to leave unchanged. addressstring? No New street address. Omit to leave unchanged. citystring? No New city. Omit to leave unchanged. statestring? No New state or province. Omit to leave unchanged. zip_codestring? No New postal or ZIP code. Omit to leave unchanged. countrystring? No New country. Omit to leave unchanged. notesstring? No New notes. Omit to leave unchanged. tagsstring[] No Replacement set of tags; normalized to lowercase, trimmed, and deduplicated. Omit to leave unchanged. source_idstring? No New associated source ID (UUID); pass an empty string to clear. Omit to leave unchanged. custom_fieldsobject? No Custom field values to merge onto existing values, validated against the account’s contact custom field definitions. Omit to leave unchanged.
curl -X POST https://api.driftwoodapp.com/api/contacts-update \
-H " Authorization: Bearer YOUR_TOKEN " \
-H " Content-Type: application/json " \
Code Description contacts.invalid_requestinvalid request body contacts.first_name_requiredfirst name is required contacts.invalid_company_idinvalid company ID contacts.invalid_source_idinvalid source ID contacts.invalid_custom_fieldscustom field validation failed contacts.invalid_idinvalid contact ID contacts.not_foundcontact not found