# Retry a Message Now

> Skip the retry delay and deliver a retrying QStash message immediately, from the console or the REST API.

When a delivery fails, QStash schedules the next attempt according to the message's
[retry delay](/qstash/features/retry). If you've already fixed the issue on your endpoint,
you don't need to wait for the next attempt. You can trigger it right away.

Retrying now does not add an extra attempt. It moves the already scheduled retry forward,
so the retry count and the remaining retries stay the same. If the delivery fails again,
QStash schedules the next retry as usual.

<Note>
Only messages waiting for a retry (in `RETRY` state) can be retried now. Messages published
to a [queue](/qstash/features/queues) are not supported.
</Note>

## Retrying via console

Head over to the [Upstash Console](https://console.upstash.com/qstash) and go to the `Logs` tab.
Find the message in `RETRY` state and press the `Retry Now` button:

<Frame>
  <img src="/img/qstash/retry-now.png" alt="Retry a message now from the Logs tab in the Upstash Console" />
</Frame>

## Retrying programmatically

You can retry a message now using the [REST API](/qstash/api-reference/messages/retry-a-message-now).

```shell cURL
curl -XPOST \
    -H 'Authorization: Bearer XXX' \
    'https://qstash.upstash.io/v2/messages/<message_id>/retry'
```

The request returns `200` when the message is scheduled for immediate delivery, and `404`
when the message is not found or is not waiting for a retry.

## Message ID

If you don't know the message ID, you can list the messages waiting for a retry
using the [logs API](/qstash/api-reference/logs/list-logs) with the `RETRY` state filter.

<CodeGroup>
```shell cURL
curl \
    -H 'Authorization: Bearer XXX' \
    'https://qstash.upstash.io/v2/logs?state=RETRY'
```

```typescript Typescript
import { Client } from "@upstash/qstash";

const client = new Client({ token: "<QSTASH_TOKEN>" });
const { logs } = await client.logs({
  filter: { state: "RETRY" },
});
```

```python Python
from qstash import QStash

client = QStash("<QSTASH_TOKEN>")
res = client.log.list(filter={"state": "RETRY"})
```
</CodeGroup>
