Skip to content

List custom fields ​

Returns all custom field definitions in the workspace. Use this to discover the API names of fields before posting leads or actions.

Request ​

FieldValue
MethodGET
URLhttps://next.telecrm.in/autoupdate/v2/enterprise/{enterpriseId}/custom-fields
AuthBearer token (Sync-typed). See Authentication.

Path parameters ​

NameTypeRequiredDescription
enterpriseIdstringyesThe enterprise (workspace) ID.

Query parameters ​

NameTypeDefaultDescription
detailbooleanfalseWhen true, returns full field definitions including descriptions, option/tag metadata, and date formats. When false, returns a summary view with type, apiName, label, isVisible, and isLeadid. Both modes add category when the workspace has field categories enabled.

WARNING

The response is a bare JSON array, not an object with a customFields key. Its item shape also differs between detail=true and detail=false — see Pitfalls.

Example request ​

bash
curl "https://next.telecrm.in/autoupdate/v2/enterprise/{enterpriseId}/custom-fields?detail=true" \
  -H "Authorization: Bearer YOUR_SYNC_TOKEN"

Responses ​

200 OK (summary, detail=false) ​

json
[
  {
    "type": "DROPDOWN",
    "apiName": "contact_source",
    "label": "Contact Source",
    "category": "Lead Details",
    "isVisible": true,
    "isLeadid": false
  },
  {
    "type": "PHONE",
    "apiName": "phone",
    "label": "Phone",
    "category": "Primary",
    "isVisible": true,
    "isLeadid": true
  }
]

200 OK (detailed, detail=true) ​

Same keys, plus description and the type-specific metadata:

json
[
  {
    "type": "DROPDOWN",
    "apiName": "contact_source",
    "label": "Contact Source",
    "description": "How the lead was sourced",
    "isVisible": true,
    "isLeadid": false,
    "options": [
      { "id": "opt_1", "label": "Website" },
      { "id": "opt_2", "label": "Referral" }
    ],
    "category": "Lead Details"
  }
]

Type-specific keys, added only in detailed mode:

Field typeExtra keys
DROPDOWNoptions[] as { id, label }
TAGStags[] as { id, label }
DATEdateFormat, timeFormat
FILEformat, allowedExtensions[], maxSizeBytes

401 Unauthorized ​

See the universal 401 in the overview.

Notes ​

  • Neither mode returns a field's internal id, and neither returns lockAfterCreate. Use apiName as the key for everything, and isLeadid to find the identifier.
  • Field type enum: TEXT, NUMBER, EMAIL, PHONE, DATE, CHECKBOX, DROPDOWN, TAGS, MONEY, WEBSITE, MEDIALINK, ACTIVEUSERS, UNIQUE, FILE, LEAD_PROPERTY. See Field Types for input rules per type.
  • FILE fields hold an uploaded file. format is one of ANY, IMAGE, DOCUMENT, AUDIO, VIDEO, and allowedExtensions lists what that format accepts. They can only be written on a custom action — see Files.
  • The field with isLeadid: true is the workspace's lead identifier — its API name is the key every lead payload must include.
  • isVisible: false means the field is hidden from the workspace's default view. Writes to a hidden field are silently ignored, so check this flag before integrating against a field.
  • dateFormat and timeFormat (returned in detailed mode) tell you the workspace's expected date input format for date fields.

Field categories ​

Workspaces can group lead fields into named categories, which the dashboard uses to section the lead form. When the feature is enabled, every entry carries a category holding the category's human-readable label — not its ID.

WARNING

category is conditional. Workspaces without field categories enabled get responses with the key omitted entirely, not set to null or "". Read it defensively:

js
const category = field.category ?? "Others";

Two categories always exist when the feature is on:

LabelContents
PrimaryName, email, phone and other essential fields.
OthersThe default. Any field with no category assigned lands here.

Workspaces can add up to 5 more with their own labels. A field pointing at a category that no longer exists also reports Others.

Categories are presentational — they group fields in the dashboard. They do not affect validation, writability, or the API names you send in a payload. Custom action fields have no categories at all: GET /custom-actions?detail=true never returns a category key on fieldSchema.customFieldDefinitions[].