Skip to main content
Restricted access. Public API v2 is currently available only to allowlisted organizations. Requests from workspaces that have not been enabled are rejected. Contact your Reevo representative to have your organization added to the allowlist.

Manage Contact and Account Sub-resources

Sub-resource endpoints let you edit specific array-like fields without replacing the whole parent record.

Contact emails

Add an email:
curl -X POST "https://api.reevo.ai/api/v2/public/contact/<contact_id>/attribute/contact_emails" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "sarah.chen@acme.com",
    "is_primary": true,
    "labels": ["WORK"]
  }'
Update an email item:
curl -X PATCH "https://api.reevo.ai/api/v2/public/contact/<contact_id>/attribute/contact_emails/<item_id>" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "is_primary": true
  }'
Remove an email item:
curl -X DELETE "https://api.reevo.ai/api/v2/public/contact/<contact_id>/attribute/contact_emails/<item_id>" \
  -H "Authorization: Bearer <your-api-key>"

Contact phone numbers

{
  "phone_number": "+14155551234",
  "is_primary": true,
  "labels": ["WORK"]
}
Use:
POST   /api/v2/public/contact/{contact_id}/attribute/contact_phone_numbers
PATCH  /api/v2/public/contact/{contact_id}/attribute/contact_phone_numbers/{item_id}
DELETE /api/v2/public/contact/{contact_id}/attribute/contact_phone_numbers/{item_id}

Account domains

Add a domain:
curl -X POST "https://api.reevo.ai/api/v2/public/account/<account_id>/attribute/domains" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "domain_name": "acme.com"
  }'
Set primary or update an item:
curl -X PATCH "https://api.reevo.ai/api/v2/public/account/<account_id>/attribute/domains/acme.com" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "is_primary": true
  }'
Remove a domain:
curl -X DELETE "https://api.reevo.ai/api/v2/public/account/<account_id>/attribute/domains/acme.com" \
  -H "Authorization: Bearer <your-api-key>"

Behavior notes

  • Item identity. Email and phone items are addressed by a server-minted UUID item_id (returned when you add the item); pass that item_id in the PATCH/DELETE path. Account domains have no separate item id — address them by the domain_name path segment directly.
  • Default labels. When you omit labels, the stored default is ["PERSONAL"] for both emails and phone numbers, regardless of is_primary — a primary email defaults to ["PERSONAL"] just like a non-primary one.
  • Unset-primary semantics. PATCH with {"is_primary": true} promotes an item to primary (demoting the previous one). Sending {"is_primary": false} behaves differently by family: account domains accept it and can leave the account with no primary domain, while contact emails reject demoting any primary — even when a non-primary sibling email exists.
  • DELETE success and idempotency. A successful DELETE returns 204 No Content. Whether a repeat DELETE of an already-removed item is idempotent (also 204) differs by family, so do not rely on it — confirm state with a read if it matters.
  • Domains do not re-derive websites. Editing account domains through this sub-resource does not refresh the account’s websites or official_website fields. (The reverse derivation — writing websites populates domains/official_website — does apply; see Accounts.)

Unsupported sub-resources

Not every record type exposes generic attribute sub-resources.
RequestExpected outcome
Unsupported contact/opportunity/task/note/meeting attribute sub-resource400 sub_resource_not_supported
Unsupported account attribute name other than domainsMethod/path is not routed
Custom object attribute sub-resourceNot available
When in doubt, check Supported Resources before using an attribute sub-resource.