Update a contact
Requires read_write. Limited to 600 updates/hour/user. Supports partial updates, null clears for email, company, avatarUrl, notes and customFields, and [] to clear tags. customFields replaces the entire object. profileId and channel fields cannot be changed. Unknown or out-of-scope ids return 404 contactNotFound.
Authorization
bearerAuth PostZen API key.
In: header
Path Parameters
Contact owning this channel.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Partial update. profileId cannot be changed; channel fields and unknown keys are rejected with 400 validation. Tags replace the array and customFields replaces the whole object.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/contacts/jd7contact123" \ -H "Content-Type: application/json" \ -d '{}'{ "message": "Contact updated successfully", "contact": { "id": "jd7contact123", "profileId": "jd7profile123", "name": "Jane Doe", "email": "jane@example.com", "company": "Acme", "avatarUrl": "https://images.example.com/jane.jpg", "tags": [ "VIP", "Lead" ], "isSubscribed": true, "isBlocked": false, "notes": "Interested in the launch.", "customFields": { "leadScore": 42, "customer": true }, "messagesSentCount": 3, "messagesReceivedCount": 5, "lastMessageSentAt": "2026-09-19T12:00:00.000Z", "lastMessageReceivedAt": "2026-09-19T12:00:00.000Z", "source": "api", "createdAt": "2026-09-19T12:00:00.000Z", "updatedAt": "2026-09-19T12:00:00.000Z" }}{ "error": "JSON body is required"}{ "error": "Unauthorized"}{ "error": "API key requires read_write permission"}{ "error": "Not found"}{ "error": "string", "type": "string", "code": "string", "param": "string"}{ "error": "rate_limited", "retryAfter": 30}{ "error": "Failed to create post"}Get a contact GET
Requires read_only. Returns the contact with distinct conversationIds and channels, oldest first. Unknown or out-of-scope ids return 404 contactNotFound. Counters start when Contacts ships; history is not backfilled.
Delete a contact DELETE
Requires read_write. Limited to 300 deletes/hour/user. Atomically deletes the contact and all its channels (maximum 20). Unknown or out-of-scope ids return 404 contactNotFound.