Set one custom field value on a card
const url = 'https://projects.work.optidata.cloud/api/boards/1/cards/1/custom-fields/1';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"value":"opt-1"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://projects.work.optidata.cloud/api/boards/1/cards/1/custom-fields/1 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "value": "opt-1" }'Upserts the value of a single custom field. The value type must match the definition’s field type; mismatches return 422.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”Board id.
Card id (must belong to the board).
Custom field definition id.
Request Bodyrequired
Section titled “Request Bodyrequired”object
New value; type depends on the definition’s field type. Null clears the value.
Example
{ "value": "opt-1"}Responses
Section titled “ Responses ”The stored value.
A stored custom field value. Exactly one value_* column is populated, matching the definition’s type.
object
Definition of a custom field. board_id null (and is_global true) means tenant-wide.
object
Type-specific configuration. Examples — text: {multiline, max_length, placeholder, default_value};
select: {options: [{id, label, color}]}; checkbox: {default_value}.
Required fields block card interactions (comments, files, timers) until filled.
Example
{ "definition": { "type": "text" }}Missing, invalid or expired bearer passport.
object
Example
{ "error": "JWT passport exception: Missing bearer token in request"}The authenticated user lacks the required board permission.
object
Example
{ "message": "This action is unauthorized."}Resource not found, or a nested resource does not belong to its parent in the path.
object
Example
{ "message": "Not found."}Validation failed.
object
First validation error message.
Map of field name → list of error messages.
object
Example
{ "message": "The name field is required.", "errors": { "name": [ "The name field is required." ] }}