Skip to content

Update a contact

PATCH
/v1/contacts/{contact_id}
curl --request PATCH \
--url https://api.vocapable.com/v1/contacts/example \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "phone_e164": "example", "first_name": "example", "last_name": "example", "company": "example", "title": "example", "email": "example", "timezone": "example", "jurisdictions": [ "example" ], "attributes": {}, "lead_status": "new", "owner_user_id": "example", "tags": [ "example" ] }'
contact_id
required
Contact Id
string
Media typeapplication/json
ContactUpdateRequest

PATCH: only the fields present are written, and an explicit null clears one.

object
phone_e164
Any of:
string
/^\+[1-9]\d{6,14}$/
first_name
Any of:
string
last_name
Any of:
string
company
Any of:
string
title
Any of:
string
email
Any of:
string
timezone
Any of:
string
jurisdictions
Any of:
Array<string>
attributes
Any of:
object
key
additional properties
any
lead_status
Any of:
LeadStatus

Where the tenant’s own pipeline holds a contact (migration 0035).

Durable per-contact intent, deliberately separate from Disposition, which is pinned (CANON fact 28) and answers “what happened to the dial” rather than “is this person interested”. A contact is dialed many times and disposed once per attempt; the lead status is the one value that survives across those attempts.

It carries NO compliance meaning whatsoever: LOST is not a suppression, and marking a contact WON neither grants nor implies consent. Suppression is dnc_entries and consent is consent_records - both have their own writers, and neither reads this column.

string
Allowed values: new working qualified unqualified won lost
owner_user_id
Any of:
string
tags
Any of:
Array<string>
<= 32 items

Successful Response

Media typeapplication/json
Contact
object
id
required
Id
string
phone_e164
required
Phone E164
string
first_name
Any of:
string
last_name
Any of:
string
company
Any of:
string
title
Any of:
string
email
Any of:
string
timezone
Any of:
string
best_consent_class
Any of:
ConsentBasis

CANON fact 18 - the four consent classes (docs/07-compliance.md §consent).

string
Allowed values: pewc pec ebr transactional
do_not_call
Do Not Call
boolean
lead_status
Any of:
LeadStatus

Where the tenant’s own pipeline holds a contact (migration 0035).

Durable per-contact intent, deliberately separate from Disposition, which is pinned (CANON fact 28) and answers “what happened to the dial” rather than “is this person interested”. A contact is dialed many times and disposed once per attempt; the lead status is the one value that survives across those attempts.

It carries NO compliance meaning whatsoever: LOST is not a suppression, and marking a contact WON neither grants nor implies consent. Suppression is dnc_entries and consent is consent_records - both have their own writers, and neither reads this column.

string
Allowed values: new working qualified unqualified won lost
owner_user_id
Any of:
string
tags
Tags
Array<string>
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
jurisdictions
Jurisdictions
Array<string>
attributes
Attributes
object
key
additional properties
any
Example
{
"best_consent_class": "pewc",
"do_not_call": false,
"lead_status": "new"
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}