# resume_queue

Source: https://modulify.ai/docs/api/chat/resume-queue

Releases a site's parked message queue and runs the message at the front of it.

- Title: Resume a parked queue
- Scope: `chat:write`
- Access: Makes changes
- Endpoint: `POST /v1/resume_queue`

A queue parks when the last generation was stopped, ended in an error or ended part way through, and this is the only way past that hold. The platform deliberately stops working through the queue after a failure until a person or an agent has looked at it, so a message queued with `queueResumable:true` waits forever otherwise.

Read the failure with `get_job` first, and remove or rewrite anything queued that the failure made pointless, because everything still in the queue runs in order once you resume. The response carries whatever is still queued afterwards, and you poll `get_job` to follow the message it started.

Calling it on a site that is simply busy does nothing, and the running generation is never interrupted. It is refused, with the same message `send_message` would give, while the GitHub repository that holds the site blocks editing, and the queue then stays parked until that is resolved. See [When the queue pauses](https://modulify.ai/docs/build/message-queue#when-the-queue-pauses).

## Request

Call it with a `POST` to `https://api.modulify.ai/v1/resume_queue`, sending the inputs below as a JSON object. The token needs the `chat:write` scope.

It makes changes, so send an [Idempotency-Key](https://modulify.ai/docs/api/idempotency) header whenever you might retry it. A retry with the same key gets the first answer back instead of running again.

```bash
curl -X POST https://api.modulify.ai/v1/resume_queue \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"PROJECT_ID"}'
```

Over MCP, the same method is the [resume_queue tool](https://modulify.ai/docs/mcp/chat/resume-queue).

## Inputs

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `projectId` | string | Yes | The site id, from `list_sites` or `get_site`. |

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