Add or remove dropdown choices
curl --request PATCH \
--url https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"add": [
"Enterprise"
],
"remove": [
"Legacy"
]
}
'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices"
payload = {
"add": ["Enterprise"],
"remove": ["Legacy"]
}
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({add: ['Enterprise'], remove: ['Legacy']})
};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices', 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}/choices",
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([
'add' => [
'Enterprise'
],
'remove' => [
'Legacy'
]
]),
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}/choices"
payload := strings.NewReader("{\n \"add\": [\n \"Enterprise\"\n ],\n \"remove\": [\n \"Legacy\"\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}/choices")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"add\": [\n \"Enterprise\"\n ],\n \"remove\": [\n \"Legacy\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices")
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 \"add\": [\n \"Enterprise\"\n ],\n \"remove\": [\n \"Legacy\"\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"
},
"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": {}
}Custom Fields
Add or remove dropdown choices
Safely add and/or remove dropdown choices on a dropdown custom field
without resending the entire choice list. Only applies to fields whose
type is dropdown.
At least one of add or remove must be provided with at least one value.
Strings in add that already exist are ignored; strings in remove that
are not present are ignored.
PATCH
/
custom-fields
/
{customFieldId}
/
choices
Add or remove dropdown choices
curl --request PATCH \
--url https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"add": [
"Enterprise"
],
"remove": [
"Legacy"
]
}
'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices"
payload = {
"add": ["Enterprise"],
"remove": ["Legacy"]
}
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({add: ['Enterprise'], remove: ['Legacy']})
};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices', 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}/choices",
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([
'add' => [
'Enterprise'
],
'remove' => [
'Legacy'
]
]),
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}/choices"
payload := strings.NewReader("{\n \"add\": [\n \"Enterprise\"\n ],\n \"remove\": [\n \"Legacy\"\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}/choices")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"add\": [\n \"Enterprise\"\n ],\n \"remove\": [\n \"Legacy\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/custom-fields/{customFieldId}/choices")
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 \"add\": [\n \"Enterprise\"\n ],\n \"remove\": [\n \"Legacy\"\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"
},
"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
application/json
Response
Choices successfully updated; returns the full field definition
Show child attributes
Show child attributes
⌘I