Skip to documentation

Brief delivery

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.

2 endpoints

GET

Read workspace Brief defaults

GET /external/v1/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.

Requirements

API scopes required:
brief:read

Responses

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 Request

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

Example Response

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

Read member delivery status

GET /external/v1/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.

Requirements

API scopes required:
brief:read

Request

Parameters

NameTypeDescription
q stringCase-insensitive name/email substring; trimmed, at most 120 characters. Default: empty.
limit integerPage size, 1–50. Default: 25.
offset integerMatching members to skip, at least zero. Default: 0. Concurrent membership changes can shift pages.

Responses

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 Request

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

Example Response

200 OK
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
  }
}