Contacts

Update contact

Update the fields you send; omitted fields are unchanged. The email address cannot be changed.

PATCHhttps://api.sndr.sh/api/cranl/v1/contacts/{id}
Update contact
curl -X PATCH 'https://api.sndr.sh/api/cranl/v1/contacts/con_0e6b7f21-c58' \
  -H 'Authorization: Bearer sndr_your_access_token' \
  -H 'Content-Type: application/json' \
  -d '{"status": "unsubscribed"}'
200OK
{
  "id":              "con_0e6b7f21-c58",
  "organization_id": "org_8d41c7a2-3f6",
  "email":           "jane@example.com",
  "first_name":      "Jane",
  "last_name":       "Doe",
  "attributes":      { "plan": "pro", "city": "Berlin" },
  "status":          "unsubscribed",
  "source":          "checkout",
  "created_at":      "2026-03-01T10:00:00Z",
  "updated_at":      "2026-06-01T12:00:00Z"
}

Authorization

Authorizationstringheaderrequired

Bearer followed by an access token. Needs the send scope.

Path parameters

idstringrequired

Contact ID (con_...).

Body

application/json
first_namestring

New first name, max 100 characters.

last_namestring

New last name, max 100 characters.

statusstring

subscribed, unsubscribed, bounced or complained.

attributesobject

Replaces the whole attributes object (keys are not merged).

Errors

401unauthenticatedMissing or invalid Bearer token.
401token_expiredAccess token expired — exchange the refresh token for a new pair.
401token_revokedToken was explicitly revoked.
400invalid_requestBody is not valid JSON, has an unknown field, or a field has the wrong type.
403insufficient_scopeToken is missing the send scope.
404not_foundResource does not exist or belongs to a different account.
422validation_failedstatus is not one of the allowed values, or a name is over 100 characters.