# Create Custom Field

- **URL:** https://marketplace.gohighlevel.com/docs/ghl/custom-fields/create-custom-field
- **Summary:** https://services.leadconnectorhq.com/custom-fields/ Description of the field Placeholder text for the field **showInForms**booleanrequired Whether the field should be shown in forms **options** object\[\] Options for the field (Optional, valid only for SINGLE_OPTIONS, MULTIPLE_OPTIONS, RADIO,...

[Skip to main content](https://marketplace.gohighlevel.com/docs/ghl/custom-fields/create-custom-field#__docusaurus_skipToContent_fallback)

Version: v3

Create Custom Field
===================

POST 

https://services.leadconnectorhq.com/custom-fields/

Copy for LLMView as MarkdownOpen in ClaudeOpen in ChatGPTOpen in Cursor

Create Custom Field

info

Only supports Custom Objects and Company (Business) today. Will be extended to other Standard Objects in the future.

### Requirements

#### Scope(s)

`locations/customFields.write`

#### Auth Method(s)

`OAuth Access Token``Private Integration Token`

#### Token Type(s)

`Sub-Account Token`

Request[​](https://marketplace.gohighlevel.com/docs/ghl/custom-fields/create-custom-field#request "Direct link to request")

### Header Parameters

**Version** stringrequired

**Possible values:** \[`v3`\]

API Version

*   application/json

*   Body
*   Example (auto)

### Body**required**

**locationId**stringrequired

Location Id

**Example:** `ve9EPM428h8vShlRW1KT`

**name**string

Field name

**Example:** `Name`

**description**string

Description of the field

**placeholder**string

Placeholder text for the field

**showInForms**booleanrequired

Whether the field should be shown in forms

**options** object\[\]

Options for the field (Optional, valid only for SINGLE_OPTIONS, MULTIPLE_OPTIONS, RADIO, CHECKBOX, TEXTBOX_LIST type)

*   Array \[\
    \
\
**key**stringrequired\
\
Key of the option (Included in Create and Response, excluded in Update)\
\
**label**stringrequired\
\
Value of the option\
\
**url**string\
\
URL associated with the option (Optional, valid only for RADIO type)\
\
*   \]
    

**acceptedFormats**string

Allowed file formats for uploads. Options include: .pdf, .docx, .doc, .jpg, .jpeg, .png, .gif, .csv, .xlsx, .xls, all

**Possible values:** \[`.pdf`, `.docx`, `.doc`, `.jpg`, `.jpeg`, `.png`, `.gif`, `.csv`, `.xlsx`, `.xls`, `all`\]

**dataType**stringrequired

Type of field that you are trying to create

**Possible values:** \[`TEXT`, `LARGE_TEXT`, `NUMERICAL`, `PHONE`, `MONETORY`, `CHECKBOX`, `SINGLE_OPTIONS`, `MULTIPLE_OPTIONS`, `DATE`, `TEXTBOX_LIST`, `FILE_UPLOAD`, `RADIO`, `EMAIL`\]

**fieldKey**stringrequired

Field key. For Custom Object it's formatted as "custom_object.{objectKey}.{fieldKey}". "custom_object" is a fixed prefix, "{objectKey}" is your custom object's identifier, and "{fieldKey}" is the unique field name within that object. Example: "custom_object.pet.name" for a "name" field in a "pet" custom object.

**Example:** `custom_object.pet.name`

**objectKey**stringrequired

The key for your custom object. This key uniquely identifies the custom object. Example: "custom_object.pet" for a custom object related to pets.

**Example:** `custom_object.pet`

**maxFileLimit**number

Maximum file limit for uploads. Applicable only for fields with a data type of FILE_UPLOAD.

**Example:** `2`

**allowCustomOption**boolean

Determines if users can add a custom option value different from the predefined options in records for RADIO type fields. A custom value added in one record does not automatically become an option and will not appear as an option for other records.

**Example:** `true`

**parentId**stringrequired

ID of the parent folder

    {  "locationId": "ve9EPM428h8vShlRW1KT",  "name": "Name",  "description": "string",  "placeholder": "string",  "showInForms": true,  "options": [    {      "key": "string",      "label": "string",      "url": "string"    }  ],  "acceptedFormats": ".pdf",  "dataType": "TEXT",  "fieldKey": "custom_object.pet.name",  "objectKey": "custom_object.pet",  "maxFileLimit": 2,  "allowCustomOption": true,  "parentId": "string"}

Responses[​](https://marketplace.gohighlevel.com/docs/ghl/custom-fields/create-custom-field#responses "Direct link to Responses")

*   201
*   400
*   401

Successful response

*   application/json

*   Schema
*   Example (auto)

**Schema**

**field** object

**locationId**stringrequired

Location Id

**Example:** `ve9EPM428h8vShlRW1KT`

**name**string

Field name

**Example:** `Name`

**description**string

Description of the field

**placeholder**string

Placeholder text for the field

**showInForms**booleanrequired

Whether the field should be shown in forms

**options** object\[\]

Options for the field (Optional, valid only for SINGLE_OPTIONS, MULTIPLE_OPTIONS, RADIO, CHECKBOX, TEXTBOX_LIST type)

*   Array \[\
    \
\
**key**stringrequired\
\
Key of the option (Included in Create and Response, excluded in Update)\
\
**label**stringrequired\
\
Value of the option\
\
**url**string\
\
URL associated with the option (Optional, valid only for RADIO type)\
\
*   \]
    

**acceptedFormats**string

Allowed file formats for uploads. Options include: .pdf, .docx, .doc, .jpg, .jpeg, .png, .gif, .csv, .xlsx, .xls, all

**Possible values:** \[`.pdf`, `.docx`, `.doc`, `.jpg`, `.jpeg`, `.png`, `.gif`, `.csv`, `.xlsx`, `.xls`, `all`\]

**id**stringrequired

Unique identifier of the object

**objectKey**stringrequired

The key for your custom / standard object. This key uniquely identifies the custom object. Example: "custom_object.pet" for a custom object related to pets.

**Example:** `custom_object.pet`

**dataType**stringrequired

Type of field that you are trying to create

**Possible values:** \[`TEXT`, `LARGE_TEXT`, `NUMERICAL`, `PHONE`, `MONETORY`, `CHECKBOX`, `SINGLE_OPTIONS`, `MULTIPLE_OPTIONS`, `DATE`, `TEXTBOX_LIST`, `FILE_UPLOAD`, `RADIO`\]

**parentId**stringrequired

ID of the parent folder

**Example:** `3v34PM428h8vShlRW1KT`

**fieldKey**stringrequired

Field key. For Custom Object it's formatted as "custom_object.{objectKey}.{fieldKey}". "custom_object" is a fixed prefix, "{objectKey}" is your custom object's identifier, and "{fieldName}" is the unique field name within that object. Example: "custom_object.pet.name" for a "name" field in a "pet" custom object.

**Example:** `custom_object.pet.name`

**allowCustomOption**boolean

Determines if users can add a custom option value different from the predefined options in records for RADIO type fields. A custom value added in one record does not automatically become an option and will not appear as an option for other records.

**Example:** `true`

**maxFileLimit**number

Maximum file limit for uploads

**Example:** `2`

**dateAdded**string<date-time>required

Date and time when the object was added

**dateUpdated**string<date-time>required

Date and time when the object was last updated

    {  "field": {    "locationId": "ve9EPM428h8vShlRW1KT",    "name": "Name",    "description": "string",    "placeholder": "string",    "showInForms": true,    "options": [      {        "key": "string",        "label": "string",        "url": "string"      }    ],    "acceptedFormats": ".pdf",    "id": "string",    "objectKey": "custom_object.pet",    "dataType": "TEXT",    "parentId": "3v34PM428h8vShlRW1KT",    "fieldKey": "custom_object.pet.name",    "allowCustomOption": true,    "maxFileLimit": 2,    "dateAdded": "2024-07-29T15:51:28.071Z",    "dateUpdated": "2024-07-29T15:51:28.071Z"  }}

Bad Request

*   application/json

*   Schema
*   Example (auto)

**Schema**

**statusCode**number

**Example:** `400`

**message**string

**Example:** `Bad Request`

    {  "statusCode": 400,  "message": "Bad Request"}

Unauthorized

*   application/json

*   Schema
*   Example (auto)

**Schema**

**statusCode**number

**Example:** `401`

**message**string

**Example:** `Invalid token: access token is invalid`

**error**string

**Example:** `Unauthorized`

    {  "statusCode": 401,  "message": "Invalid token: access token is invalid",  "error": "Unauthorized"}

Share your feedback
-------------------

★★★★★

#### Authorization: Authorization

**name:** [Authorization](https://marketplace.gohighlevel.com/docs/ghl/custom-fields/custom-fields-v-2-api#authentication)
**type:** http**scopes:** `locations/customFields.write`**scheme:** bearer**bearerFormat:** JWT**in:** header**description:** Use the Access Token generated with user type as Sub-Account (OR) Private Integration Token of Sub-Account.

*   curl
*   nodejs
*   python
*   php
*   java
*   go
*   ruby
*   powershell

*   CURL

    curl -L 'https://services.leadconnectorhq.com/custom-fields/' \-H 'Content-Type: application/json' \-H 'Accept: application/json' \-H 'Authorization: Bearer <Authorization>' \-d '{  "locationId": "ve9EPM428h8vShlRW1KT",  "name": "Name",  "description": "string",  "placeholder": "string",  "showInForms": true,  "options": [    {      "key": "string",      "label": "string",      "url": "string"    }  ],  "acceptedFormats": ".pdf",  "dataType": "TEXT",  "fieldKey": "custom_object.pet.name",  "objectKey": "custom_object.pet",  "maxFileLimit": 2,  "allowCustomOption": true,  "parentId": "string"}'

RequestCollapse all

Base URL

Edit

https://services.leadconnectorhq.com

Auth

Bearer Token

Parameters

Version — headerrequired\---v3

Body required

{
  "locationId": "ve9EPM428h8vShlRW1KT",  "name": "Name",  "description": "string",  "placeholder": "string",  "showInForms": true,  "options": \[    {      "key": "string",      "label": "string",      "url": "string"    }  \],  "acceptedFormats": ".pdf",  "dataType": "TEXT",  "fieldKey": "custom_object.pet.name",  "objectKey": "custom_object.pet",  "maxFileLimit": 2,  "allowCustomOption": true,  "parentId": "string"
}
Send API Request

ResponseClear

Click the `Send API Request` button above and see the response here!
