---
title: "Brief delivery API reference"
canonical_url: https://zentrik.ai/docs/api/brief-delivery
markdown_url: https://zentrik.ai/docs/api/brief-delivery.md
last_reviewed: 2026-10-19
---

# Brief delivery API reference

Read-only Brief configuration and recipient delivery status. Both routes require brief:read and the key creator’s current owner/admin membership in this workspace. Responses use Cache-Control: no-store. Configure defaults in Settings → Brief → Workspace delivery; these API routes do not change preferences or send email.

- Human reference: https://zentrik.ai/docs/api/brief-delivery
- Complete Markdown index: https://zentrik.ai/docs/api/index.md
- Base URL: `https://zentrik.ai/api`
- Authentication: `Authorization: Bearer YOUR_API_KEY`
- Shared pagination and rate limits: https://zentrik.ai/docs/api/index.md#shared-conventions

## GET /external/v1/brief-delivery — Read workspace Brief defaults

Operation ID: `get-brief-delivery`

Read the workspace defaults, revision, email availability and active human member counts. defaults is null until an admin saves a policy; otherwise it contains enabled, productIds, cadence, dayOfWeek, timeOfDay, timezone, emailTitles and firstEdition (now or scheduled). Counts separate unconfigured members, members using workspace defaults, and personal settings. This read does not apply defaults or change preferences.

Required API key scopes: `brief:read`

### Example request

```curl
curl 'https://zentrik.ai/api/external/v1/brief-delivery' -H 'Authorization: Bearer YOUR_API_KEY'
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | Success | Saved configuration or operational metadata. No email is generated or sent. | — |
| 403 | Access required | Requires brief:read and the key creator’s current active owner/admin membership. Keys without a creator are refused. | — |

### Example response

```json
{
  "defaults": null,
  "revision": 0,
  "deliveryAvailable": true,
  "counts": {
    "members": 2,
    "unconfigured": 1,
    "managed": 0,
    "personal": 1
  }
}
```

---

## GET /external/v1/brief-delivery/members — Read member delivery status

Operation ID: `list-brief-delivery-members`

Find active human members by name or email. The body contains items and pagination, ordered by email then user ID. Each item includes identity, preferenceSource (unconfigured, workspace or member; null when no subscription exists), followed Product IDs/names, followsAllProducts, scopeCount, enabled, emailTitles, schedule, nextRunAt, generation blockers and latest non-test delivery metadata. Private filter text, email bodies and unsubscribe tokens are excluded. status distinguishes not_configured, defaults_pending, email_off, workspace_paused, email_suppressed, scope_missing, generation_blocked, confirming_send, send_failed, due, overdue, queued, scheduled and not_scheduled. A scheduled check may not produce email. acceptedAt records provider acceptance, not inbox delivery or reading. Future content is unknown until an edition is generated; editionId does not grant access to another member’s email.

Required API key scopes: `brief:read`

### Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `q` | string | No | Case-insensitive name/email substring; trimmed, at most 120 characters. Default: empty. |
| `limit` | integer | No | Page size, 1–50. Default: 25. |
| `offset` | integer | No | Matching members to skip, at least zero. Default: 0. Concurrent membership changes can shift pages. |

### Example request

```curl
curl 'https://zentrik.ai/api/external/v1/brief-delivery/members?q=reader&limit=25&offset=0' -H 'Authorization: Bearer YOUR_API_KEY'
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | Success | Saved configuration or operational metadata. No email is generated or sent. | — |
| 403 | Access required | Requires brief:read and the key creator’s current active owner/admin membership. Keys without a creator are refused. | — |
| 400 | Invalid query | Unsupported fields, excessive search text or invalid pagination. | — |

### Example response

```json
{
  "items": [
    {
      "userId": "11111111-1111-4111-8111-111111111111",
      "name": "Research lead",
      "email": "reader@example.test",
      "preferenceSource": "member",
      "enabled": false,
      "productIds": [],
      "products": [],
      "followsAllProducts": false,
      "scopeCount": 0,
      "emailTitles": false,
      "cadence": "weekly",
      "dayOfWeek": 1,
      "timeOfDay": "09:00",
      "timezone": "UTC",
      "nextRunAt": null,
      "status": "email_off",
      "acceptedAt": null,
      "editionId": null
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 25,
    "offset": 0,
    "hasMore": false
  }
}
```
