agentlyleads docs
Custom Fields API

The Custom Field object

A custom field definition adds a field to one record type: CONTACT, LEAD, DEAL or COMPANY. The value itself lives on each record, in its customFields object, under the definition's key.

FieldTypeNotes
idstringThe definition ID
entitystringCONTACT, LEAD, DEAL or COMPANY
keystringMachine key derived from the label, e.g. Deal size becomes deal_size. Fixed once created
labelstringShown on forms, up to 100 characters
typestringTEXT, TEXTAREA, NUMBER, DATE, CHECKBOX, SELECT, MULTISELECT, URL, EMAIL or PHONE. Fixed once created
optionsarray of stringAllowed values for SELECT and MULTISELECT. Empty for other types
requiredbooleanWhen true, any create or update that sends custom fields for that record type must include a value
orderintegerPosition on the form
createdAt, updatedAtstring (ISO 8601)Timestamps

Example

{
  "id": "cmq5cfd00alk34567890",
  "entity": "DEAL",
  "key": "deal_size",
  "label": "Deal size",
  "type": "SELECT",
  "options": ["Small", "Large"],
  "required": false,
  "order": 0,
  "createdAt": "2026-09-27T14:02:00.000Z",
  "updatedAt": "2026-09-27T14:02:00.000Z"
}

On a deal, the value then reads "customFields": { "deal_size": "Large" }.

Scopes

ScopeAllows
read:custom-fieldsGET /api/v1/custom-fields and GET /api/v1/custom-fields/{id}
write:custom-fieldsCreate, update and delete definitions

On this page