Replace a client
A full replacement, not a patch: any field you omit is CLEARED. Read the client first and send it back with your changes applied.
Any active key, sent as a bearer token. Keys are owner-equivalent, so there are no scopes to grant and nothing to configure per endpoint. See Authentication.
Client id
6 fields
2 fields
cpf (Brazilian, checksum-validated) or other (freeform foreign id or passport)
For cpf, punctuation is optional and the stored value is 11 digits.
Locations this client belongs to. Omit it when the organization has a single location and it will be used; with more than one, name them (see GET /v1/locations).
Edit any field above and the request updates as you type. Empty fields are left out.
6 fields
The address the organization has on file, which is not necessarily a portal login
2 fields
cpf (Brazilian, checksum-validated) or other (freeform foreign id or passport)
For cpf, punctuation is optional and the stored value is 11 digits.
Locations this client belongs to. Omitted when listing; read one client to get it.
These apply to every endpoint on the API, not just this one. Errors covers the body shape.
No bearer token, or a token that is unknown, revoked or expired. All four answer identically on purpose, so a caller probing tokens learns nothing about which is which.
The organization’s plan does not include the public API. It is available on Pro and above, and the check runs on every request, so a downgrade stops keys that were minted earlier.
The organization is not active.
The key is over its rate limit. Back off and retry.
Something failed on our side. The body carries a short sentence and never an internal error string, so quote your own request timestamp when reporting one.
curl -X PUT "https://api.zenly.app.br/v1/clients/019f9a89-62bf-750a-bdc0-375919dea60a" \
-H "Authorization: Bearer $ZENLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contactName": "string"
}'{
"address": {
"city": "string",
"country": "string",
"line1": "string",
"line2": "string",
"postalCode": "string",
"state": "string"
},
"birthdate": "2026-01-31",
"contactEmail": "string",
"contactName": "string",
"contactPhone": "string",
"createdAt": "2026-01-31T09:00:00Z",
"id": "string",
"idDocument": {
"type": "cpf",
"value": "string"
},
"locationIds": [
"string"
],
"notes": "string",
"status": "active",
"updatedAt": "2026-01-31T09:00:00Z"
}