# List a publication's runs

`GET /v1/publications/{id}/runs`

Runs newest first, with their step log (requests, commits, deliveries, errors).

Scope: `docs:read`.

## Request

```bash
curl "https://api.lydie.co/v1/publications/01JCQ3V5MZ8G4ZK2X7T9R6N1PB/runs" \
  -H "Authorization: Bearer $LYDIE_TOKEN"
```

## Path parameters

- `id` (ULID, required)

## Query parameters

- `runId` (ULID, optional)
- `limit` (integer, optional): Default: `20`. (1–100)

## Response

- `runs` (PublicationRun[], required)
  - `id` (ULID, required)
  - `publicationId` (ULID, required)
  - `action` (string, required): One of: `publish`, `unpublish`, `resolve`.
  - `trigger` (string, required): One of: `manual`, `auto`, `poll`.
  - `options` (object, required)
  - `status` (string, required): One of: `queued`, `running`, `succeeded`, `partial`, `failed`, `cancelled`.
  - `attempt` (integer, required)
  - `runAt` (timestamp, required)
  - `steps` (object[], required)
    - `at` (timestamp, required)
    - `step` (string, required)
    - `status` (string, required): One of: `ok`, `skipped`, `error`, `info`.
    - `documentId` (string, optional)
    - `ms` (number, optional)
    - `detail` (object, optional)
  - `summary` (object, required, nullable)
  - `error` (object, required, nullable)
  - `requestedBy` (string, required)
  - `createdAt` (timestamp, required)
  - `startedAt` (timestamp, required, nullable)
  - `finishedAt` (timestamp, required, nullable)

```json
{
  "runs": [
    {
      "id": "01JCQ3V5MZ8G4ZK2X7T9R6N1PB",
      "publicationId": "01JCQ3V5MZ8G4ZK2X7T9R6N1PB",
      "action": "publish",
      "trigger": "manual",
      "options": {},
      "status": "queued",
      "attempt": -9007199254740991,
      "runAt": "2026-11-12T09:30:00.000Z",
      "steps": [
        {
          "at": "2026-11-12T09:30:00.000Z",
          "step": null,
          "status": "ok",
          "documentId": null,
          "ms": null,
          "detail": null
        }
      ],
      "summary": null,
      "error": null,
      "requestedBy": "string",
      "createdAt": "2026-11-12T09:30:00.000Z",
      "startedAt": null,
      "finishedAt": null
    }
  ]
}
```

Errors use the envelope described at https://developers.lydie.co/errors.md.
