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_idStringRequiredUnique identifier of the business connection on behalf of which the message will be sent
chat_idIntegerRequiredUnique identifier for the target chat
message_idIntegerRequiredUnique identifier for the target message
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
| Code | Error | Cause |
|---|---|---|
| 400 | Bad Request: chat not found | Invalid or inaccessible chat_id |
| 400 | Bad Request: message not found | message_id doesn't exist in the target chat |
| 400 | Bad Request: BUSINESS_CONNECTION_NOT_FOUND | business_connection_id is invalid or the connection was revoked |
| 400 | Bad Request: message is not modified | The new checklist content is identical to the current one |
| 400 | Bad Request: message can't be edited | Message was not sent by this bot's business connection or is too old |
| 400 | Bad Request: not enough rights | The bot's business connection doesn't have permission to edit this message |
| 429 | Too Many Requests: retry after N | Rate 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_ididentifies that connection. chat_idis an integer only. Unlike most methods, subscription-based business chats don't support@usernamestrings here — use the numeric chat ID.- The entire checklist is replaced. Editing sends a completely new
InputChecklistobject; any previously checked tasks lose their completion state unless you re-send them as completed. - Tasks support 1–30 items. The
tasksarray inInputChecklistmust contain between 1 and 30InputChecklistTaskentries. checklist.titleallows formatting entities. Usetitle_entities(notparse_mode) alongside GramIO'sformathelper for styled titles.others_can_add_tasksandothers_can_mark_tasks_as_doneare independent flags. You can allow participants to mark tasks done without letting them add new ones, or vice versa.
See Also
sendChecklist— Send a new checklist via a business accountInputChecklist— The checklist input type with title, tasks, and permission flags- keyboards overview — Guide to building inline keyboards for
reply_markup