# Publication status

> Follow a publication's overall progress and each account's outcome.

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

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

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

Check a publication that [Publish to several accounts](https://www.tryadeli.com/docs/api/posts/create-publication)
accepted. The response has the same shape as the create response.

**Path parameters**

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

`status` is `queued` or `processing` while any account is still running, then
`published` (every account), `partial` (some), or `failed` (none). `progress`
is every account's progress together, from 0 to 1: one number for one progress
bar.

Each target's `status` is `queued`, `submitting`, `processing` (accepted, and
still processing on the platform), `published`, `failed`, or `outcome_unknown`.
`result` is the body the single-platform endpoint returns for that platform,
such as Instagram's job or X's permalink. `error` is a sanitized `{ code,
message }`. `outcome_unknown` means the platform may have published the post but
Adeli could not confirm it; check the platform before posting again.

A publication outside the API key's organization returns `404`.

## Request examples

**cURL**

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

**JavaScript**

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

**Python**

```python
import os

import requests

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

## Responses

### 200

```json
{
  "id": "00000000-0000-4000-8000-000000000020",
  "profileId": "00000000-0000-4000-8000-000000000001",
  "status": "partial",
  "progress": 1,
  "statusUrl": "/api/v1/publications/00000000-0000-4000-8000-000000000020",
  "createdAt": "2026-11-03T12:00:00.000Z",
  "updatedAt": "2026-11-03T12:02:00.000Z",
  "completedAt": "2026-11-03T12:02:00.000Z",
  "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": "failed", "attempts": 1, "result": null, "error": { "code": "duplicate_post", "message": "X refused a duplicate post" } }
  ]
}
```

### 404

```json
{
  "error": {
    "code": "not_found",
    "message": "Publication not found"
  }
}
```
