Learn how to update record details and custom fields using the Blue API.
Update Record Details
To update a record's core properties, use the editTodo
mutation:
mutation UpdateRecordDetails {
editTodo(
input: {
todoId: "YOUR RECORD ID"
todoListId: "RECORD LIST ID TO MOVE THE RECORD TO"
position: "NEW RECORD POSITION IN NUMBER"
title: "NEW RECORD TITLE"
html: "NEW RECORD DESCRIPTION IN HTML (MUST MATCH TEXT)"
text: "NEW RECORD DESCRIPTION IN TEXT (MUST MATCH HTML)"
startedAt: "NEW RECORD DUE DATE (START)"
duedAt: "NEW RECORD DUE DATE (END)"
color: "RECORD COLOR CODE"
}
) {
id
title
position
html
text
color
}
}
Input Field Reference
Field | Type | Description |
---|---|---|
todoId | String | (Required) The ID of the record to update |
todoListId | String | New list ID if moving the record |
position | Float | New position in the list |
title | String | Updated record title |
html/text | String | Updated description (must match in both fields) |
startedAt/duedAt | DateTime | Updated start/end dates in ISO 8601 format |
color | String | Color code from available options |
Color Options
// Light theme colors
["#ffc2d4", "#ed8285", "#ffb55e", "#ffe885", "#ccf07d",
"#91e38c", "#a1f7fa", "#91cfff", "#c29ee0", "#e8bd91"]
// Dark theme colors
["#ff8ebe", "#ff4b4b", "#ff9e4b", "#ffdc6b", "#b4e051",
"#66d37e", "#4fd2ff", "#4a9fff", "#a17ee8", "#e89e64"]
Update Custom Fields
To update custom field values, use the setTodoCustomField
mutation with field-specific parameters:
Text-based Fields
mutation {
setTodoCustomField(
input: {
customFieldId: "YOUR CUSTOM FIELD ID"
todoId: "YOUR RECORD ID"
text: "VALUE"
}
)
}
Applies to: TEXT_SINGLE
, TEXT_MULTI
, URL
, EMAIL
Numeric Fields
mutation {
setTodoCustomField(
input: {
customFieldId: "YOUR CUSTOM FIELD ID"
todoId: "YOUR RECORD ID"
number: "NUMERIC_VALUE"
}
)
}
Applies to: NUMBER
, PERCENT
, RATING
Selection Fields
mutation {
setTodoCustomField(
input: {
customFieldId: "YOUR CUSTOM FIELD ID"
todoId: "YOUR RECORD ID"
customFieldOptionIds: ["OPTION_ID_1", "OPTION_ID_2"]
}
)
}
Applies to: SELECT_SINGLE
, SELECT_MULTI
Specialized Fields
Phone Numbers:
mutation {
setTodoCustomField(
input: {
customFieldId: "YOUR CUSTOM FIELD ID"
todoId: "YOUR RECORD ID"
text: "+33642526644"
regionCode: "FR"
}
)
}
Countries:
mutation {
setTodoCustomField(
input: {
customFieldId: "YOUR CUSTOM FIELD ID"
todoId: "YOUR RECORD ID"
countryCodes: ["AF", "AL", "DZ"]
text: "Afghanistan, Albania, Algeria"
}
)
}
Location:
mutation {
setTodoCustomField(
input: {
customFieldId: "YOUR CUSTOM FIELD ID"
todoId: "YOUR RECORD ID"
latitude: 42.2923323
longitude: 12.126621199999999
text: "Via Cassia, Querce d'Orlando, Capranica, Italy"
}
)
}
Checkbox:
mutation {
setTodoCustomField(
input: {
customFieldId: "YOUR CUSTOM FIELD ID"
todoId: "YOUR RECORD ID"
checked: true
}
)
}
Required Permissions
Users must have appropriate project access to update records:
Access Level | Can Update Records |
---|---|
OWNER |
✅ Yes |
ADMIN |
✅ Yes |
MEMBER |
✅ Yes |
CLIENT |
✅ Yes |
COMMENT_ONLY |
❌ No |
VIEW_ONLY |
❌ No |
Additional custom field permissions may apply for setTodoCustomField
based on role configuration.
Return Values
editTodo
returns the complete updatedTodo
objectsetTodoCustomField
returnsBoolean!
indicating success
Notes
- Custom field IDs can be found using the list custom fields query
- Phone numbers must be in E.164 format when using the API directly
- Location fields are best managed through the Blue app interface
- The
html
andtext
fields are automatically synchronized whenhtml
is provided - All update operations trigger activity logging and webhook notifications