v1
latestOpenAPI 3.1.02026-07-2671538.5 KBUpdate a contact by ID
Update an existing contact identified by its unique id. Include one or more fields to change. Field updates and consent changes can be combined in a single request.
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.
Consent fields: email_consent, sms_consent. Use these to subscribe, unsubscribe, or otherwise manage a contact's marketing consent.
When sms_consent is set to subscribed and the contact transitions to a confirmed opt-in state, Privy automatically sends a TCPA-required welcome SMS. Pass send_welcome_sms: false to suppress this message if you have already collected consent outside of Privy.
Required scope: contacts_write
Path parameters
The contact's unique identifier (returned as id in contact responses).
Request body
Example request
{
"first_name": "Janet",
"last_name": "Smith",
"email": "janet@example.com",
"phone_number": "+15551234567",
"tags": [
"vip",
"wholesale"
],
"custom_fields": {
"loyalty_tier": "platinum"
},
"email_consent": "unsubscribed",
"sms_consent": "unsubscribed"
}Response
Contact updated successfully.
Example response
{
"data": {
"id": "cus_a1b2c3d4e5f6g7h8",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@example.com",
"email_consent": "subscribed",
"phone_number": "+15551234567",
"sms_consent": "subscribed",
"tags": [
"vip",
"repeat-buyer"
],
"custom_fields": {
"loyalty_tier": "gold",
"referral_code": "JANE2024"
},
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-03-20T14:22:00Z"
}
}