Update contact
PUT
https://app.sendapp.ai/api/contacts/{id}
Update one or more fields of a contact. Only the keys you send are changed;
tags REPLACES the whole set (use the tag endpoints to add or remove single tags). Every change is written to the contact timeline. PATCH is accepted too. You find the names of the custom fields, with their type and allowed choices, with GET /api/contact-fields.
Values by type: yes/no
true or false (also 1/0, "yes"/"no"), saved as 1/0 as on the Contacts page; number a number (also "12,5"); date YYYY-MM-DD (from an ISO 8601 date and time the date is kept); single choice one of the choices; multiple choice an array of choices or a text with the choices separated by commas. For choices upper and lower case do not matter: the value is saved with the official spelling. An invalid value returns 422 with invalid_fields, the reason for each field, and nothing is changed.AI fields are filled in by SendApp's AI: they cannot be written (
422, in invalid_fields), but you can read them on the contact, in custom_fields.Parameters
12 · 2 required
apikey
required
Your API Key (the
X-API-Key header also works).
id
required
Contact ID (integer, in the path). Use
GET /api/contacts to find it.
name
optional
Contact name.
first_name
optional
First name: the full name is rebuilt (it takes precedence over
name). If the contact's name was not split yet, the other half is taken from the current name.
last_name
optional
Last name: the full name is rebuilt.
phone
optional
Phone number in international format. 409 if it already belongs to another contact.
email
optional
Email address. 409 if it already belongs to another contact.
birthday
optional
Date in
YYYY-MM-DD format (null to clear).
tags
optional
Array or comma-separated string — replaces all tags.
custom_fields
optional
Object keyed by custom field NAME, e.g.
{"City": "Rome"}. Each value is checked against the field's type (see the notes): unknown names or invalid values return 422. Send null or "" to clear a value.
opted_out
optional
true = exclude from campaigns, false = re-subscribe.
lifecycle_stage
optional
One of
lead, qualified, customer, inactive, lost (null to clear).
Need help with the integration? info@sendapp.live