35 KiB
GHL Custom Fields API
Endpoints: 8
Base URL: https://rest.gohighlevel.com/v1
Version Header(s): 2021-07-28
Endpoints
- POST /custom-fields/ — Create Custom Field
- POST /custom-fields/folder — Create Custom Field Folder
- DELETE /custom-fields/folder/{id} — Delete Custom Field Folder
- PUT /custom-fields/folder/{id} — Update Custom Field Folder Name
- GET /custom-fields/object-key/{objectKey} — Get Custom Fields By Object Key
- DELETE /custom-fields/{id} — Delete Custom Field By Id
- GET /custom-fields/{id} — Get Custom Field / Folder By Id
- PUT /custom-fields/{id} — Update Custom Field By Id
POST /custom-fields/
Summary: Create Custom Field
Create Custom Field
Version Header: 2021-07-28
Operation ID: create-custom-field
Tags: Custom Fields V2
cURL
curl -X POST 'https://rest.gohighlevel.com/v1/custom-fields/' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0' \
-d '{}' # See request body schema below
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
payload = json.dumps({})
conn.request('POST', '/v1/custom-fields/', body=payload, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - POST custom-fields",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://rest.gohighlevel.com/v1/custom-fields/",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": []
},
"options": {}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Body Schema
- locationId (string) (required) (e.g.
ve9EPM428h8vShlRW1KT): Location Id - name (string) (e.g.
Name): Field name - description (string): Description of the field
- placeholder (string): Placeholder text for the field
- showInForms (boolean) (required): Whether the field should be shown in forms
- options (array of OptionDTO): Options for the field (Optional, valid only for SINGLE_OPTIONS, MULTIPLE_OPTIONS, RADIO, CHECKBOX, TEXTBOX_LIST type)
- acceptedFormats (string): Allowed file formats for uploads. Options include: .pdf, .docx, .doc, .jpg, .jpeg, .png, .gif, .csv, .xlsx, .xls, all
- dataType (string) (required): Type of field that you are trying to create
- fieldKey (string) (required) (e.g.
custom_object.pet.name): 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. - objectKey (string) (required) (e.g.
custom_object.pet): The key for your custom object. This key uniquely identifies the custom object. Example: "custom_object.pet" for a custom object related to pets. - maxFileLimit (number) (e.g.
2): Maximum file limit for uploads. Applicable only for fields with a data type of FILE_UPLOAD. - allowCustomOption (boolean) (e.g.
True): 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. - parentId (string) (required): ID of the parent folder
Response Codes
| Code | Description | Schema |
|---|---|---|
201 |
Successful response | - field (ICustomField) |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
📌 Field Value Format: When updating custom field values on records, use
fieldValueStringfor text/string fields andvaluefor numeric fields. Check the field type via schema discovery first.
POST /custom-fields/folder
Summary: Create Custom Field Folder
Create Custom Field Folder
Version Header: 2021-07-28
Operation ID: create-custom-field-folder
Tags: Custom Fields V2
cURL
curl -X POST 'https://rest.gohighlevel.com/v1/custom-fields/folder' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0' \
-d '{}' # See request body schema below
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
payload = json.dumps({})
conn.request('POST', '/v1/custom-fields/folder', body=payload, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - POST folder",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://rest.gohighlevel.com/v1/custom-fields/folder",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": []
},
"options": {}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Body Schema
- objectKey (string) (required) (e.g.
custom_object.pet): The key for your custom object. This key uniquely identifies the custom object. Example: "custom_object.pet" for a custom object related to pets. - name (string) (required) (e.g.
Name): Field name - locationId (string) (required) (e.g.
ve9EPM428h8vShlRW1KT): Location Id
Response Codes
| Code | Description | Schema |
|---|---|---|
201 |
Successful response | - id (string) (required): Unique identifier of the object - objectKey (string) (required) (e.g. custom_object.pet): The key for your ... |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
DELETE /custom-fields/folder/{id}
Summary: Delete Custom Field Folder
Create Custom Field Folder
Version Header: 2021-07-28
Operation ID: delete-custom-field-folder
Tags: Custom Fields V2
cURL
curl -X DELETE 'https://rest.gohighlevel.com/v1/custom-fields/folder/VALUE?locationId=ve9EPM428h8vShlRW1KT' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0'
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
conn.request('DELETE', '/v1/custom-fields/folder/VALUE?locationId=ve9EPM428h8vShlRW1KT', headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - DELETE VALUE",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "DELETE",
"url": "https://rest.gohighlevel.com/v1/custom-fields/folder/VALUE",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": false,
"bodyParameters": {
"parameters": []
},
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "locationId",
"value": "ve9EPM428h8vShlRW1KT"
}
]
}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
id |
Path | string |
✅ | |
locationId |
Query | string |
✅ | Location Id [example: ve9EPM428h8vShlRW1KT] |
Response Codes
| Code | Description | Schema |
|---|---|---|
200 |
Successful response | - succeded (boolean) (required) (e.g. True)- id (string) (required) (e.g. 3v34PM428h8vShlRW1KT)- key (string) (required) (e... |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
PUT /custom-fields/folder/{id}
Summary: Update Custom Field Folder Name
Create Custom Field Folder
Version Header: 2021-07-28
Operation ID: update-custom-field-folder
Tags: Custom Fields V2
cURL
curl -X PUT 'https://rest.gohighlevel.com/v1/custom-fields/folder/VALUE' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0' \
-d '{}' # See request body schema below
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
payload = json.dumps({})
conn.request('PUT', '/v1/custom-fields/folder/VALUE', body=payload, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - PUT VALUE",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "PUT",
"url": "https://rest.gohighlevel.com/v1/custom-fields/folder/VALUE",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": []
},
"options": {}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
id |
Path | string |
✅ |
Request Body Schema
- name (string) (required) (e.g.
Name): Field name - locationId (string) (required) (e.g.
ve9EPM428h8vShlRW1KT): Location Id
Response Codes
| Code | Description | Schema |
|---|---|---|
200 |
Successful response | - id (string) (required): Unique identifier of the object - objectKey (string) (required) (e.g. custom_object.pet): The key for your ... |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
GET /custom-fields/object-key/{objectKey}
Summary: Get Custom Fields By Object Key
Get Custom Fields By Object Key
Version Header: 2021-07-28
Operation ID: get-custom-fields-by-object-key
Tags: Custom Fields V2
cURL
curl -X GET 'https://rest.gohighlevel.com/v1/custom-fields/object-key/VALUE?locationId=VALUE' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0'
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
conn.request('GET', '/v1/custom-fields/object-key/VALUE?locationId=VALUE', headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - GET VALUE",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "GET",
"url": "https://rest.gohighlevel.com/v1/custom-fields/object-key/VALUE",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": false,
"bodyParameters": {
"parameters": []
},
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "locationId",
"value": "VALUE"
}
]
}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
objectKey |
Path | string |
✅ | key of the Object. Must include "custom_objects." prefix for custom objects. Available on the Cus... |
locationId |
Query | string |
✅ |
Response Codes
| Code | Description | Schema |
|---|---|---|
200 |
Successful response | - fields (array of ICustomField): Custom Fields for the object. - folders (array of ICustomField): Custom Fields folder for the object. |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
DELETE /custom-fields/{id}
Summary: Delete Custom Field By Id
Delete Custom Field By Id
Version Header: 2021-07-28
Operation ID: delete-custom-field
Tags: Custom Fields V2
cURL
curl -X DELETE 'https://rest.gohighlevel.com/v1/custom-fields/VALUE' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0'
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
conn.request('DELETE', '/v1/custom-fields/VALUE', headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - DELETE VALUE",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "DELETE",
"url": "https://rest.gohighlevel.com/v1/custom-fields/VALUE",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": false,
"bodyParameters": {
"parameters": []
},
"options": {}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
id |
Path | string |
✅ |
Response Codes
| Code | Description | Schema |
|---|---|---|
200 |
Successful response | - succeded (boolean) (required) (e.g. True)- id (string) (required) (e.g. 3v34PM428h8vShlRW1KT)- key (string) (required) (e... |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
GET /custom-fields/{id}
Summary: Get Custom Field / Folder By Id
Get Custom Field / Folder By Id.
Version Header: 2021-07-28
Operation ID: get-custom-field-by-id
Tags: Custom Fields V2
cURL
curl -X GET 'https://rest.gohighlevel.com/v1/custom-fields/VALUE' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0'
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
conn.request('GET', '/v1/custom-fields/VALUE', headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - GET VALUE",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "GET",
"url": "https://rest.gohighlevel.com/v1/custom-fields/VALUE",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": false,
"bodyParameters": {
"parameters": []
},
"options": {}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
id |
Path | string |
✅ |
Response Codes
| Code | Description | Schema |
|---|---|---|
200 |
Successful response | - field (ICustomField) |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
PUT /custom-fields/{id}
Summary: Update Custom Field By Id
Update Custom Field By Id
Version Header: 2021-07-28
Operation ID: update-custom-field
Tags: Custom Fields V2
cURL
curl -X PUT 'https://rest.gohighlevel.com/v1/custom-fields/VALUE' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'User-Agent: YourApp/1.0' \
-d '{}' # See request body schema below
Python (http.client)
import http.client
import json
conn = http.client.HTTPSConnection('rest.gohighlevel.com')
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Version': '2021-07-28',
'Content-Type': 'application/json',
'Accept': 'application/json',
'User-Agent': 'YourApp/1.0',
}
payload = json.dumps({})
conn.request('PUT', '/v1/custom-fields/VALUE', body=payload, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode())
print(json.dumps(data, indent=2))
conn.close()
n8n HTTP Node
{
"name": "GHL - PUT VALUE",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "PUT",
"url": "https://rest.gohighlevel.com/v1/custom-fields/VALUE",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_API_TOKEN"
},
{
"name": "Version",
"value": "2021-07-28"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "User-Agent",
"value": "YourApp/1.0"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": []
},
"options": {}
}
}
To use in n8n:
- Add an HTTP Request node
- Switch to JSON mode (Parameters → use RAW JSON)
- Paste the JSON above
- Update
YOUR_API_TOKENwith your actual GHL API key
Request Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
id |
Path | string |
✅ |
Request Body Schema
- locationId (string) (required) (e.g.
ve9EPM428h8vShlRW1KT): Location Id - name (string) (e.g.
Name): Field name - description (string): Description of the field
- placeholder (string): Placeholder text for the field
- showInForms (boolean) (required): Whether the field should be shown in forms
- options (array of OptionDTO): Options for the field. Important: Providing options will completely replace the existing options array. You must include all existing options alongside any new options you wish to add. Removal of options is not supported through this update. Applicable only for SINGLE_OPTIONS, MULTIPLE_OPTIONS, RADIO, CHECKBOX, TEXTBOX_LIST types.
- acceptedFormats (string): Allowed file formats for uploads. Options include: .pdf, .docx, .doc, .jpg, .jpeg, .png, .gif, .csv, .xlsx, .xls, all
- maxFileLimit (number) (e.g.
2): Maximum file limit for uploads. Applicable only for fields with a data type of FILE_UPLOAD.
Response Codes
| Code | Description | Schema |
|---|---|---|
200 |
Successful response | - field (ICustomField) |
400 |
Bad Request | Standard error response for bad requests (400). Contains message, statusCode fields. |
401 |
Unauthorized | Standard error response for unauthorized requests (401). Contains message, statusCode fields. |
⚠️ Special Notes & Quirks
⚠️ User-Agent Required: All GHL API requests require a
User-AgentHTTP header. Requests without it may be rejected with a 403 error.
Documentation generated from GHL OpenAPI specifications. Verify against official docs for latest changes.