Skip to content

Create a field

Request

Create a new custom field. Body: name (required), inputType (required), type (required), and optional identifier, description, configuration, options (array of option objects).

Security
oauth2(Required scopes: fields:write) or bearerAuth(Required scopes: fields:write)
Bodyapplication/jsonrequired
namestring, [ 1 .. 50 ] charactersrequired

Custom field display name.

Example:"Lead source"
identifierstring, <= 1000 characters

Optional unique identifier for API-based lookup.

Example:"lead-source"
descriptionstring, <= 150 characters

Optional field description text.

Example:"Where the lead originated"
inputTypestringrequired

Input type for value capture and validation.

Enum:"NUMBER""TEXT""TEXT_AREA""DATE""CHECK_BOX""RADIO_BUTTON""USER""USERS_MULTIPLE""URL""SINGLE_SELECT"
Example:"SINGLE_SELECT"
typestringrequired

Object type this field is attached to.

Enum:"CONTACT""CALL""EVENT""DEAL""USER""ISCORE"
Example:"CONTACT"
configuration(object or null)
Example:
{ "isColorCodeOptions": true }
Any of:

Date field configuration when time is selected.

optionsArray of objects

Selectable options for select-like input types (name, color enum, displayIndex only).

Example:
[ { "name": "Inbound", "color": "blue", "displayIndex": 0 }, { "name": "Outbound", "color": "gray", "displayIndex": 1 } ]
isSecondaryQuestionboolean

Marks field as a secondary question in invitee flow i.e. Invitee Question. If true and type is CALL then the field will be created as invitee question else the type will be the type in payload i.e. CONTACT or CALL

curl -i -X POST \
  https://api-docs-iclosed.redocly.app/_mock/openapi/v1/openapi/v1/fields \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Lead source",
    "identifier": "lead-source",
    "description": "Where the lead originated",
    "inputType": "SINGLE_SELECT",
    "type": "CONTACT",
    "configuration": {
      "isColorCodeOptions": true
    },
    "options": [
      {
        "name": "Inbound",
        "color": "blue",
        "displayIndex": 0
      },
      {
        "name": "Outbound",
        "color": "gray",
        "displayIndex": 1
      }
    ]
  }'

Responses

Custom field created successfully

Bodyapplication/json
messagestring

Operation result message.

statusnumber

HTTP-like status code from API layer.

dataobjectrequired

Created custom field payload.

Response
{ "message": "Custom Fields created successfully", "status": 201, "data": { "id": 20660, "associationCount": 0, "name": "mult select", "identifier": "mult-select", "description": "", "inputType": "MULTIPLE_SELECT", "type": "CONTACT", "subType": null, "isSecondaryQuestion": false, "isSystemField": false, "hidden": false, "configuration": { "isColorCodeOptions": true }, "createdAt": "2026-03-05T10:00:17.711Z", "updatedAt": "2026-03-05T10:00:17.711Z", "CustomFieldOptions": [ { "id": 90157, "color": "blue", "name": "1", "displayIndex": 0, "isArchived": false, "createdAt": "2026-03-05T10:00:17.792Z", "updatedAt": "2026-03-05T10:00:17.792Z" }, { "id": 90158, "color": "blue", "name": "2", "displayIndex": 1, "isArchived": false, "createdAt": "2026-03-05T10:00:17.830Z", "updatedAt": "2026-03-05T10:00:17.830Z" } ] } }