Skip to main content
PATCH
Update a contact

Authorizations

Authorization
string
header
required

A workspace API token. Create one in Settings → API. Send it as Authorization: Bearer sk_live_....

Path Parameters

contact_id
string
required

Unique identifier for a contact.

Pattern: ^con_[0-9a-f]{32}$
Example:

"con_9f2ac41d8b7e4a51b0d3e6f7a1c2d3e4"

Query Parameters

expand
string | null

Comma-separated relationships to inline in the response. Unexpanded relations are still identified by their *_id field.

Example:

"organization,owner"

Body

application/json

Body for PATCH /v1/contacts/{contact_id}.

Only the fields you send change. Send null to clear one; omit it to leave it alone. custom_fields merges the same way.

address
string | null
city
string | null
company_name
string | null
custom_fields
Custom Fields · object | null
email
string | null
first_name
string | null
job_title
string | null
last_name
string | null
organization_id
string | null

Unique identifier for an organization.

Pattern: ^org_[0-9a-f]{32}$
Example:

"org_9f2ac41d8b7e4a51b0d3e6f7a1c2d3e4"

owner_id
string | null

Unique identifier for an user.

Pattern: ^usr_[0-9a-f]{32}$
Example:

"usr_9f2ac41d8b7e4a51b0d3e6f7a1c2d3e4"

score
enum<string> | null
Available options:
cold,
warm,
hot
state
string | null
status
enum<string> | null
Available options:
open,
on_hold,
won,
lost
visibility
enum<string> | null

CRM record visibility levels; resolved live against the owner's current teams.

Available options:
private,
team,
team_and_subteams,
company

Response

Successful Response

A person in your CRM.

created_at
string<date-time>
required
id
string
required

Unique identifier for a contact.

Pattern: ^con_[0-9a-f]{32}$
Example:

"con_9f2ac41d8b7e4a51b0d3e6f7a1c2d3e4"

status
enum<string>
required

Where the contact stands.

Available options:
open,
on_hold,
won,
lost
updated_at
string<date-time>
required
visibility
enum<string>
required

Governs who sees this record in the Sailer UI. API tokens are workspace-scoped and are not filtered by it.

Available options:
private,
team,
team_and_subteams,
company
address
string | null
avatar_url
string | null

Short-lived signed URL; do not store it.

channels
ContactChannel · object[]
city
string | null
company_name
string | null

Free-text employer name. Unrelated to your workspace and to organization, which is a CRM record.

custom_fields
Custom Fields · object

Every custom field defined on contacts in this workspace, keyed by field key and typed from its definition. Unset fields are null, so reading any contact shows the full set of keys in use.

email
string | null
first_name
string | null
job_title
string | null
last_name
string | null
lost_reason
string | null

Name of the reason, when status is lost.

name
string | null

Display name. Derived from first_name and last_name.

object
string
default:contact
Allowed value: "contact"
organization
Organization · object | null

Populated only when organization is in expand.

organization_id
string | null

Unique identifier for an organization.

Pattern: ^org_[0-9a-f]{32}$
Example:

"org_9f2ac41d8b7e4a51b0d3e6f7a1c2d3e4"

owner
User · object | null

Populated only when owner is in expand.

owner_id
string | null

Unique identifier for an user.

Pattern: ^usr_[0-9a-f]{32}$
Example:

"usr_9f2ac41d8b7e4a51b0d3e6f7a1c2d3e4"

phone
string | null

E.164. Normalized on write.

score
enum<string> | null
Available options:
cold,
warm,
hot
state
string | null
tags
Tag · object[]