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
| Field | Value |
|---|---|
| Method | GET |
| URL | https://next.telecrm.in/autoupdate/v2/enterprise/{enterpriseId}/custom-fields |
| Auth | Bearer token (Sync-typed). See Authentication. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
enterpriseId | string | yes | The enterprise (workspace) ID. |
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
detail | boolean | false | When 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 type | Extra keys |
|---|---|
DROPDOWN | options[] as { id, label } |
TAGS | tags[] as { id, label } |
DATE | dateFormat, timeFormat |
FILE | format, allowedExtensions[], maxSizeBytes |
401 Unauthorized
See the universal 401 in the overview.
Notes
- Neither mode returns a field's internal
id, and neither returnslockAfterCreate. UseapiNameas the key for everything, andisLeadidto 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. FILEfields hold an uploaded file.formatis one ofANY,IMAGE,DOCUMENT,AUDIO,VIDEO, andallowedExtensionslists what that format accepts. They can only be written on a custom action — see Files.- The field with
isLeadid: trueis the workspace's lead identifier — its API name is the key every lead payload must include. isVisible: falsemeans 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.dateFormatandtimeFormat(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:
| Label | Contents |
|---|---|
Primary | Name, email, phone and other essential fields. |
Others | The 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[].