Skip to content

editMessageChecklist

Use this method to edit a checklist on behalf of a connected business account. On success, the edited Message is returned.

Parameters

business_connection_idStringRequired
Unique identifier of the business connection on behalf of which the message will be sent
chat_idIntegerRequired
Unique identifier for the target chat
message_idIntegerRequired
Unique identifier for the target message
checklistInputChecklistRequired
A JSON-serialized object for the new checklist
A JSON-serialized object for the new inline keyboard for the message

Returns

On success, the Message object is returned.

GramIO Usage

ts
// Replace a checklist with an updated task list
const 
message
= await
bot
.
api
.
editMessageChecklist
({
business_connection_id
: "biz-conn-id",
chat_id
: 123456789,
message_id
: 100,
checklist
: {
title
: "Sprint Tasks",
tasks
: [
{
id
: 1,
text
: "Review pull requests" },
{
id
: 2,
text
: "Deploy to staging" },
{
id
: 3,
text
: "Update documentation" },
], }, });
ts
// Edit a checklist and attach an inline keyboard
const 
message
= await
bot
.
api
.
editMessageChecklist
({
business_connection_id
: "biz-conn-id",
chat_id
: 123456789,
message_id
: 100,
checklist
: {
title
: "Shopping List",
tasks
: [
{
id
: 1,
text
: "Milk" },
{
id
: 2,
text
: "Eggs" },
{
id
: 3,
text
: "Bread" },
],
others_can_mark_tasks_as_done
: true,
},
reply_markup
: new
InlineKeyboard
().
text
("Mark all done", "checklist_done"),
});
ts
// Allow other users to add and complete tasks
const 
message
= await
bot
.
api
.
editMessageChecklist
({
business_connection_id
: "biz-conn-id",
chat_id
: 123456789,
message_id
: 100,
checklist
: {
title
: "Team Tasks",
tasks
: [{
id
: 1,
text
: "Assign tickets" }, {
id
: 2,
text
: "Set deadline" }],
others_can_add_tasks
: true,
others_can_mark_tasks_as_done
: true,
}, });

Errors

CodeErrorCause
400Bad Request: chat not foundInvalid or inaccessible chat_id
400Bad Request: message not foundmessage_id doesn't exist in the target chat
400Bad Request: BUSINESS_CONNECTION_NOT_FOUNDbusiness_connection_id is invalid or the connection was revoked
400Bad Request: message is not modifiedThe new checklist content is identical to the current one
400Bad Request: message can't be editedMessage was not sent by this bot's business connection or is too old
400Bad Request: not enough rightsThe bot's business connection doesn't have permission to edit this message
429Too Many Requests: retry after NRate limit hit — check retry_after, use auto-retry plugin

TIP

Use GramIO's auto-retry plugin to handle 429 errors automatically.

Tips & Gotchas

  • Requires an active business connection. This method only works for bots connected to a Telegram Business account — the business_connection_id identifies that connection.
  • chat_id is an integer only. Unlike most methods, subscription-based business chats don't support @username strings here — use the numeric chat ID.
  • The entire checklist is replaced. Editing sends a completely new InputChecklist object; any previously checked tasks lose their completion state unless you re-send them as completed.
  • Tasks support 1–30 items. The tasks array in InputChecklist must contain between 1 and 30 InputChecklistTask entries.
  • checklist.title allows formatting entities. Use title_entities (not parse_mode) alongside GramIO's format helper for styled titles.
  • others_can_add_tasks and others_can_mark_tasks_as_done are independent flags. You can allow participants to mark tasks done without letting them add new ones, or vice versa.

See Also