# remove_queued_message

Source: https://modulify.ai/docs/api/chat/remove-queued-message

Takes a message out of a site's queue so the site agent never runs it.

- Title: Remove a queued message
- Scope: `sites:delete`
- Access: Destructive
- Endpoint: `POST /v1/remove_queued_message`

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](https://modulify.ai/docs/build/message-queue#the-row-menu).

## 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.

> **Warning**
>
> This method is marked destructive: it deletes or overwrites data. Check the inputs before you call it, and send an [Idempotency-Key](https://modulify.ai/docs/api/idempotency) header whenever you might retry it.

```bash
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](https://modulify.ai/docs/mcp/chat/remove-queued-message).

## 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](https://modulify.ai/docs/api/requests-and-responses#the-response) 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](https://modulify.ai/docs/api/requests-and-responses#headers-on-every-method-call) 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](https://modulify.ai/docs/api/errors) explains every status code a call can answer with.