# Retry a publication

> Re-run only the accounts that failed.

Canonical: <https://www.tryadeli.com/docs/api/posts/retry-publication>

`POST https://app.tryadeli.com/api/v1/publications/{publicationId}/retry`

Authorization: `Bearer <API key>` — see [Authentication](https://www.tryadeli.com/docs/authentication)

Re-run only the accounts of a finished publication that `failed`, with their
original inputs. Accounts that published are left alone, and an account whose
outcome is `outcome_unknown` is never retried, because its post may already be
live.

**Path parameters**

| Name            | Type   | Required | Description                      |
| --------------- | ------ | -------- | -------------------------------- |
| `publicationId` | `uuid` | Yes      | The id from the create response. |

A retry is a real new attempt on each failed platform: it counts against TikTok's
daily post limit and X bills it like any other post. The response is the
publication with the retried targets back to `queued`, and `status` back to
`processing`; poll [Publication status](https://www.tryadeli.com/docs/api/posts/get-publication) as
before.

While the publication is still running, or when no account failed, the
request answers `409`.

## Request examples

**cURL**

```bash
curl -X POST "https://app.tryadeli.com/api/v1/publications/00000000-0000-4000-8000-000000000020/retry" \
  -H "Authorization: Bearer $ADELI_API_KEY"
```

**JavaScript**

```javascript
const response = await fetch("https://app.tryadeli.com/api/v1/publications/00000000-0000-4000-8000-000000000020/retry", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ADELI_API_KEY}`,
  },
});
console.log(await response.json());
```

**Python**

```python
import os

import requests

response = requests.post(
    "https://app.tryadeli.com/api/v1/publications/00000000-0000-4000-8000-000000000020/retry",
    headers={"Authorization": f"Bearer {os.environ['ADELI_API_KEY']}"},
)
print(response.json())
```

## Responses

### 202

```json
{
  "id": "00000000-0000-4000-8000-000000000020",
  "profileId": "00000000-0000-4000-8000-000000000001",
  "status": "processing",
  "progress": 0.5,
  "statusUrl": "/api/v1/publications/00000000-0000-4000-8000-000000000020",
  "createdAt": "2026-11-03T12:00:00.000Z",
  "updatedAt": "2026-11-03T12:05:00.000Z",
  "completedAt": null,
  "targets": [
    { "id": "00000000-0000-4000-8000-000000000021", "platform": "tiktok", "accountId": "00000000-0000-0000-0000-000000000011", "status": "published", "attempts": 1, "result": { "status": "SEND_TO_USER_INBOX" }, "error": null },
    { "id": "00000000-0000-4000-8000-000000000022", "platform": "x", "accountId": "00000000-0000-0000-0000-000000000013", "status": "queued", "attempts": 1, "result": null, "error": null }
  ]
}
```

### 409

```json
{
  "error": {
    "code": "nothing_to_retry",
    "message": "No target failed, so there is nothing to retry"
  }
}
```
