Skip to main content
PATCH
/
contacts
/
{id}
Update a contact by ID
curl --request PATCH \
  --url https://api.privy.com/v1/contacts/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "first_name": "Janet",
  "tags": [
    "vip",
    "wholesale"
  ]
}
'
{
  "data": {
    "id": "cus_a1b2c3d4e5f6g7h8",
    "first_name": "Janet",
    "last_name": "Doe",
    "email": "jane@example.com",
    "email_permission": "subscribed",
    "phone_number": "+15551234567",
    "phone_permission": "subscribed",
    "tags": [
      "vip",
      "wholesale"
    ],
    "custom_fields": {
      "loyalty_tier": "gold"
    },
    "created_at": "2025-01-15T10:30:00Z",
    "updated_at": "2025-04-01T12:15:00Z"
  }
}

Documentation Index

Fetch the complete documentation index at: https://help.privy.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Send either an API token or an OAuth access token as Authorization: Bearer <token>. See the Authentication page for details.

Path Parameters

id
string
required

The contact's unique identifier (returned as id in contact responses).

Body

application/json

Include one or more mutable fields to update. The contact is identified by the id path parameter.

Mutable fields: first_name, last_name, email, phone_number, tags, custom_fields.

email and phone_number can only be set when the existing value is null. Once populated, they cannot be changed or cleared.

first_name
string

Updated first name.

Example:

"Janet"

last_name
string

Updated last name.

Example:

"Smith"

email
string<email>

Sets the contact's email address. Only allowed when the contact's current email is null; once populated, email is immutable.

Example:

"janet@example.com"

phone_number
string

Sets the contact's phone number in E.164 format. Only allowed when the contact's current phone_number is null; once populated, phone_number is immutable.

Example:

"+15551234567"

tags
string[]

Replaces all existing tags.

Example:
["vip", "wholesale"]
custom_fields
object

Replaces all existing custom fields. Must be a flat key-value object.

Example:
{ "loyalty_tier": "platinum" }

Response

Contact updated successfully.

data
object