Contacts
Create or update a contact
POST
/contactsScope contacts:writeCreates the contact, or updates it when one with this phone number already exists. Phone is the key, so you can call this every time something changes on your side without checking first.
Body
phonestringrequiredPhone number with country code.
countryCodestringCountry calling code, if you keep it separately from
phone.namestringFull name. When left out on create, built from
firstNameandlastName.firstNamestringFirst name.
lastNamestringLast name.
companystringCompany.
languagestringLanguage code, for example
enorhi.emailstringEmail address.
tagsstring[]Up to 30 tags. Replaces the existing tags.
consentStatusstringMarketing consent.
One of:
unverified,opted_in,opted_outcustomFieldsobjectYour custom contact attributes by key, as set up under Settings, Contact attributes.
Good to know
createdistruewith status 201 for a new contact, andfalsewith status 200 for an update.
Errors
| Status | Code | When |
|---|---|---|
| 403 | CAPACITY_LIMIT_REACHED | Creating it would go over your plan's contact limit. Updates still work. |
Plus the errors any endpoint can return, such as a missing key or scope. See Errors.
Request
# macOS, Linux or Git Bash, with WAMAFY_API_KEY set. The quoting does not work in Windows cmd or PowerShell.
curl -X POST "https://api.wamafy.com/api/v1/public/contacts" \
-H "Authorization: Bearer $WAMAFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone": "+919876543210",
"firstName": "Priya",
"lastName": "Sharma",
"tags": [
"vip"
],
"customFields": {
"city": "Mumbai"
}
}'Response 201
{
"success": true,
"data": {
"id": "9d3f6b2a-4e1c-4a8b-9f0d-2c7e5a1b3d64",
"phone": "919876543210",
"name": "Priya Sharma",
"firstName": "Priya",
"lastName": "Sharma",
"company": "Acme Retail",
"language": "en",
"email": "priya@example.com",
"tags": [
"vip"
],
"status": "active",
"consentStatus": "opted_in",
"source": "api",
"customFields": {
"city": "Mumbai"
},
"createdAt": "2026-09-02T08:15:00.000Z",
"updatedAt": "2026-10-07T10:00:00.000Z",
"created": true
}
}Base URL https://api.wamafy.com/api/v1/public