API Docs

Update Record

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

FieldTypeDescription
todoIdString(Required) The ID of the record to update
todoListIdStringNew list ID if moving the record
positionIntegerNew position in the list
titleStringUpdated record title
html/textStringUpdated description (must match in both fields)
startedAt/duedAtDateTimeUpdated start/end dates in ISO 8601 format
colorStringColor 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"
    }
  ) {
    success
  }
}

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"
    }
  ) {
    success
  }
}

Applies to: NUMBER, CURRENCY, PERCENT, RATING

Selection Fields

mutation {
  setTodoCustomField(
    input: {
      customFieldId: "YOUR CUSTOM FIELD ID"
      todoId: "YOUR RECORD ID"
      customFieldOptionIds: ["OPTION_ID_1", "OPTION_ID_2"]
    }
  ) {
    success
  }
}

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
    }
  )
}

Notes

  1. Custom field IDs can be found using the list custom fields query
  2. Phone numbers must be in E.164 format when using the API directly
  3. Location fields are best managed through the Blue app interface
  4. Always use the same values for html and text fields when updating descriptions