curl --request PATCH \
--url https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"label": "Industry Segment",
"type": "dropdown",
"options": {
"choices": [
"Retail",
"Wholesale"
],
"minLength": 1,
"maxLength": 2,
"helpText": "<string>"
},
"category": "Merchandising",
"object_types": [
"companies",
"products"
]
}
'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}"
payload = {
"label": "Industry Segment",
"type": "dropdown",
"options": {
"choices": ["Retail", "Wholesale"],
"minLength": 1,
"maxLength": 2,
"helpText": "<string>"
},
"category": "Merchandising",
"object_types": ["companies", "products"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
label: 'Industry Segment',
type: 'dropdown',
options: {
choices: ['Retail', 'Wholesale'],
minLength: 1,
maxLength: 2,
helpText: '<string>'
},
category: 'Merchandising',
object_types: ['companies', 'products']
})
};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'label' => 'Industry Segment',
'type' => 'dropdown',
'options' => [
'choices' => [
'Retail',
'Wholesale'
],
'minLength' => 1,
'maxLength' => 2,
'helpText' => '<string>'
],
'category' => 'Merchandising',
'object_types' => [
'companies',
'products'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}"
payload := strings.NewReader("{\n \"label\": \"Industry Segment\",\n \"type\": \"dropdown\",\n \"options\": {\n \"choices\": [\n \"Retail\",\n \"Wholesale\"\n ],\n \"minLength\": 1,\n \"maxLength\": 2,\n \"helpText\": \"<string>\"\n },\n \"category\": \"Merchandising\",\n \"object_types\": [\n \"companies\",\n \"products\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"label\": \"Industry Segment\",\n \"type\": \"dropdown\",\n \"options\": {\n \"choices\": [\n \"Retail\",\n \"Wholesale\"\n ],\n \"minLength\": 1,\n \"maxLength\": 2,\n \"helpText\": \"<string>\"\n },\n \"category\": \"Merchandising\",\n \"object_types\": [\n \"companies\",\n \"products\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"label\": \"Industry Segment\",\n \"type\": \"dropdown\",\n \"options\": {\n \"choices\": [\n \"Retail\",\n \"Wholesale\"\n ],\n \"minLength\": 1,\n \"maxLength\": 2,\n \"helpText\": \"<string>\"\n },\n \"category\": \"Merchandising\",\n \"object_types\": [\n \"companies\",\n \"products\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"label": "Industry",
"type": "dropdown",
"object_types": [
"companies",
"products"
],
"options": {
"choices": [
"Retail",
"Wholesale",
"DTC"
],
"minLength": 0,
"maxLength": 255,
"helpText": "Choose the primary sales channel"
},
"category": "Merchandising",
"created_at": "2026-04-20T14:30:00Z",
"updated_at": "2026-04-20T14:30:00Z"
}
}{
"error": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"status_code": 401
}{
"error": "Forbidden",
"message": "You do not have permission to access this resource",
"status_code": 403
}{
"error": "Not Found",
"message": "The requested resource could not be found",
"status_code": 404
}{
"message": "<string>",
"errors": {}
}Partially update a custom field definition
Patch one or more attributes of a custom field definition without resending
the full record. Only the keys you include are touched; omitted keys keep
their current value. To clear options, send "options": null.
Useful for renaming a label, adjusting options.helpText, or relinking
object_types without resubmitting the entire definition.
To add or remove dropdown choices on a dropdown field, prefer
PATCH /custom-fields/{customFieldId}/choices — it performs a safe
additive/subtractive update against the existing choice list.
curl --request PATCH \
--url https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"label": "Industry Segment",
"type": "dropdown",
"options": {
"choices": [
"Retail",
"Wholesale"
],
"minLength": 1,
"maxLength": 2,
"helpText": "<string>"
},
"category": "Merchandising",
"object_types": [
"companies",
"products"
]
}
'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}"
payload = {
"label": "Industry Segment",
"type": "dropdown",
"options": {
"choices": ["Retail", "Wholesale"],
"minLength": 1,
"maxLength": 2,
"helpText": "<string>"
},
"category": "Merchandising",
"object_types": ["companies", "products"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
label: 'Industry Segment',
type: 'dropdown',
options: {
choices: ['Retail', 'Wholesale'],
minLength: 1,
maxLength: 2,
helpText: '<string>'
},
category: 'Merchandising',
object_types: ['companies', 'products']
})
};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'label' => 'Industry Segment',
'type' => 'dropdown',
'options' => [
'choices' => [
'Retail',
'Wholesale'
],
'minLength' => 1,
'maxLength' => 2,
'helpText' => '<string>'
],
'category' => 'Merchandising',
'object_types' => [
'companies',
'products'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}"
payload := strings.NewReader("{\n \"label\": \"Industry Segment\",\n \"type\": \"dropdown\",\n \"options\": {\n \"choices\": [\n \"Retail\",\n \"Wholesale\"\n ],\n \"minLength\": 1,\n \"maxLength\": 2,\n \"helpText\": \"<string>\"\n },\n \"category\": \"Merchandising\",\n \"object_types\": [\n \"companies\",\n \"products\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"label\": \"Industry Segment\",\n \"type\": \"dropdown\",\n \"options\": {\n \"choices\": [\n \"Retail\",\n \"Wholesale\"\n ],\n \"minLength\": 1,\n \"maxLength\": 2,\n \"helpText\": \"<string>\"\n },\n \"category\": \"Merchandising\",\n \"object_types\": [\n \"companies\",\n \"products\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"label\": \"Industry Segment\",\n \"type\": \"dropdown\",\n \"options\": {\n \"choices\": [\n \"Retail\",\n \"Wholesale\"\n ],\n \"minLength\": 1,\n \"maxLength\": 2,\n \"helpText\": \"<string>\"\n },\n \"category\": \"Merchandising\",\n \"object_types\": [\n \"companies\",\n \"products\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"label": "Industry",
"type": "dropdown",
"object_types": [
"companies",
"products"
],
"options": {
"choices": [
"Retail",
"Wholesale",
"DTC"
],
"minLength": 0,
"maxLength": 255,
"helpText": "Choose the primary sales channel"
},
"category": "Merchandising",
"created_at": "2026-04-20T14:30:00Z",
"updated_at": "2026-04-20T14:30:00Z"
}
}{
"error": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"status_code": 401
}{
"error": "Forbidden",
"message": "You do not have permission to access this resource",
"status_code": 403
}{
"error": "Not Found",
"message": "The requested resource could not be found",
"status_code": 404
}{
"message": "<string>",
"errors": {}
}Authorizations
Authenticate using a bearer token. To create a token, navigate to /settings/api-tokens and click Create API Token.
Path Parameters
The unique identifier of the custom field definition
Body
Any subset of the writable custom field fields. All keys are optional; include only what you want to change.
New display label (must remain unique across definitions).
255"Industry Segment"
Data type of the custom field. Changing type may require also
sending options (e.g. switching to dropdown or multi_dropdown
requires a non-empty choices array).
number, date, string, dropdown, multi_dropdown "dropdown"
Replace the options blob. Send null to clear. For dropdown
fields, prefer the /choices PATCH endpoint to add/remove
individual choices without resending the whole list.
Show child attributes
Show child attributes
Optional free-text category label used to group custom field
definitions. Send null to clear.
255"Merchandising"
Replace the list of linked entity types. Pass an empty array to unlink from all entity types. Omit the key entirely to leave the current linkage untouched.
["companies", "products"]
Response
Custom field definition successfully patched
Show child attributes
Show child attributes