Remove a queued message
remove_queued_message
Takes a message out of a site's queue so the site agent never runs it.
It cannot be undone. Unlike an edit, it is not limited to messages you queued yourself, and the queue belongs to the whole workspace, so an entry you did not write may be one somebody queued and is waiting on. The tool tells the client to read list_queued_messages first and to confirm with you before removing anything that is not yours.
Only a message that is still queued can be removed. One the agent has already started is refused with That message already left the queue and is running!, and cancel_job is the tool for that. See Message queue.
Request
Call it with a POST to https://api.modulify.ai/v1/remove_queued_message, sending the inputs below as a JSON object. The token needs the sites:delete scope.
This method is marked destructive: it deletes or overwrites data. Check the inputs before you call it, and send an Idempotency-Key header whenever you might retry it.
curl -X POST https://api.modulify.ai/v1/remove_queued_message \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"projectId":"PROJECT_ID","itemId":"ITEM_ID"}'Over MCP, the same method is the remove_queued_message tool.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
projectId |
string | Yes | The site id, from list_sites or get_site. |
itemId |
string | Yes | The Id of the queued message, exactly as list_queued_messages reported it. |
Response
Every call answers with the JSON envelope of success, message, data, code and version. data holds the result described above, and on a method that returns a total, count carries it. The response headers carry the call's X-Request-Id and what is left of your per-minute budget in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Errors explains every status code a call can answer with.