# Custom Fields
The Custom Fields API allows you to define additional data fields for tasks on a board. These endpoints are available in Fluent Boards Pro.
# Base Endpoint
/fluent-boards/v2/projects/{board_id}/custom-fields
 1
# Custom Field Object
Custom fields extend task data with additional structured information:
{
  "id": 110,
  "board_id": "3",
  "title": "Loerm ipsum",
  "slug": "loerm-ipsum",
  "type": "custom-field",
  "position": "1.00",
  "color": null,
  "bg_color": null,
  "settings": {
    "custom_field_type": "text"
  },
  "archived_at": null,
  "created_at": "2025-08-08T10:56:47+00:00",
  "updated_at": "2025-08-08T10:56:47+00:00"
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Key Properties
| Property | Type | Description | 
|---|---|---|
id |  integer | Unique identifier for the custom field | 
board_id |  string | ID of the board this field belongs to | 
title |  string | Display label for the custom field | 
slug |  string | URL-friendly identifier | 
type |  string | Always "custom-field" | 
position |  string | Position for ordering fields | 
settings.custom_field_type |  string | Field type (text, select, checkbox, date, etc.) | 
archived_at |  string or null | Archive timestamp (null if active) | 
# List Board Custom Fields
Retrieve all custom fields defined for a specific board.
HTTP Request
GET /wp-json/fluent-boards/v2/projects/{board_id}/custom-fields
 1
# Example Request
curl "https://yourdomain.com/wp-json/fluent-boards/v2/projects/{board_id}/custom-fields" \
  -H "Authorization: Basic API_USERNAME:API_PASSWORD"
 1
2
2
# Example Response
{
  "customFields": [
    {
      "id": 110,
      "board_id": "3",
      "title": "Loerm ipsum",
      "slug": "loerm-ipsum",
      "type": "custom-field",
      "position": "1.00",
      "color": null,
      "bg_color": null,
      "settings": {
        "custom_field_type": "text"
      },
      "archived_at": null,
      "created_at": "2025-08-08T10:56:47+00:00",
      "updated_at": "2025-08-08T10:56:47+00:00"
    }
  ]
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Create a Custom Field
Create a new custom field for a board.
HTTP Request
POST /wp-json/fluent-boards/v2/projects/{board_id}/custom-field
 1
# Example Request
curl -X POST "https://yourdomain.com/wp-json/fluent-boards/v2/projects/{board_id}/custom-field" \
  -H "Authorization: Basic API_USERNAME:API_PASSWORD" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "customField[title]=My custom filed&customField[type]=text"
 1
2
3
4
2
3
4
# Request Body
| Field | Type | Required | Description | 
|---|---|---|---|
customField.title |  string | Yes | Field label | 
customField.type |  string | Yes | One of supported types (stored as settings.custom_field_type) | 
customField.options |  array[string] | No | Options for select type | 
# Example Response
{
  "customField": {
    "board_id": "3",
    "title": "My custom filed",
    "slug": "my-custom-filed",
    "settings": {
      "custom_field_type": "text"
    },
    "position": 2,
    "type": "custom-field",
    "updated_at": "2025-08-08T10:59:17+00:00",
    "created_at": "2025-08-08T10:59:17+00:00",
    "id": 111
  },
  "message": "Custom field has been successfully created"
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Update a Custom Field
Update an existing custom field.
HTTP Request
PUT /wp-json/fluent-boards/v2/projects/{board_id}/custom-field/{custom_field_id}
 1
# Example Request
curl -X PUT "https://yourdomain.com/wp-json/fluent-boards/v2/projects/{board_id}/custom-field/{custom_field_id}" \
  -H "Authorization: Basic API_USERNAME:API_PASSWORD" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "customField[title]=Custom text field&customField[type]=text"
 1
2
3
4
2
3
4
# Request Body
| Field | Type | Required | Description | 
|---|---|---|---|
customField.title |  string | Yes | Field label | 
customField.type |  string | Yes | One of supported types (stored as settings.custom_field_type) | 
customField.options |  array[string] | No | Options for select type | 
# Example Response
{
  "customField": {
    "id": 111,
    "board_id": "3",
    "title": "Custom text field",
    "slug": "my-custom-filed",
    "type": "custom-field",
    "position": "2.00",
    "color": null,
    "bg_color": null,
    "settings": {
      "custom_field_type": "text"
    },
    "archived_at": null,
    "created_at": "2025-08-08T10:59:17+00:00",
    "updated_at": "2025-08-08T11:02:38+00:00"
  },
  "message": "Custom field has been updated successfully"
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Update Custom Field Position
Change the position/order of a custom field within the board.
HTTP Request
PUT /wp-json/fluent-boards/v2/projects/{board_id}/custom-field/{custom_field_id}/update-position
 1
# Example Request
curl -X PUT "https://yourdomain.com/wp-json/fluent-boards/v2/projects/{board_id}/custom-field/{custom_field_id}/update-position" \
  -H "Authorization: Basic API_USERNAME:API_PASSWORD" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "newIndex=1"
 1
2
3
4
2
3
4
# Request Body
| Field | Type | Required | Description | 
|---|---|---|---|
newIndex |  integer | Yes | 1-based new position index | 
# Example Response
{
  "message": "Custom field position has been updated successfully"
}
 1
2
3
2
3
# Delete a Custom Field
Remove a custom field from a board.
HTTP Request
DELETE /wp-json/fluent-boards/v2/projects/{board_id}/custom-field/{custom_field_id}
 1
# Example Request
curl -X DELETE "https://yourdomain.com/wp-json/fluent-boards/v2/projects/{board_id}/custom-field/{custom_field_id}" \
  -H "Authorization: Basic API_USERNAME:API_PASSWORD"
 1
2
2
# Example Response
{
  "message": "Custom field has been deleted successfully"
}
 1
2
3
2
3
# Get Custom Fields for a Task
Retrieve custom field values for a specific task.
HTTP Request
GET /wp-json/fluent-boards/v2/projects/{board_id}/tasks/{task_id}/custom-fields
 1
# Example Request
curl "https://yourdomain.com/wp-json/fluent-boards/v2/projects/{board_id}/tasks/{task_id}/custom-fields" \
  -H "Authorization: Basic API_USERNAME:API_PASSWORD"
 1
2
2
# Example Response
{
  "customFields": [
    {
      "id": 99,
      "object_id": "85",
      "object_type": "task_custom_field",
      "foreign_id": "111",
      "settings": {
        "value": "Hello world"
      },
      "preferences": null
    }
  ]
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Save Custom Field Value for a Task
Set or update a custom field value for a specific task.
HTTP Request
POST /wp-json/fluent-boards/v2/projects/{board_id}/tasks/{task_id}/custom-fields
 1
# Example Request
curl -X POST "https://yourdomain.com/wp-json/fluent-boards/v2/projects/{board_id}/tasks/{task_id}/custom-fields" \
  -H "Authorization: Basic API_USERNAME:API_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{
    "custom_field_id": 111,
    "value": "Lorem ipsum"
  }'
 1
2
3
4
5
6
7
2
3
4
5
6
7
# Request Body
| Field | Type | Required | Description | 
|---|---|---|---|
custom_field_id |  integer | Yes | The custom field ID | 
value |  string | Yes | Value to save; for checkbox send true/false; for date send a parseable date | 
# Example Response
{
  "customField": {
    "id": 111,
    "board_id": "3",
    "title": "Custom text field",
    "slug": "my-custom-filed",
    "type": "custom-field",
    "position": "0.50",
    "color": null,
    "bg_color": null,
    "settings": {
      "custom_field_type": "text"
    },
    "archived_at": null,
    "created_at": "2025-08-08T10:59:17+00:00",
    "updated_at": "2025-08-08T11:06:58+00:00"
  }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Error Responses
See Common Error Responses for standard error formats.
# Common Custom Field-Specific Errors
- 404 Not Found - Custom field or board not found
 - 403 Forbidden - You don't have permission to manage custom fields
 - 400 Bad Request - Invalid custom field data or missing required fields