Skip to documentation

Team Huddles

Read daily Team Huddle history with a workspace API key granted huddles:read or initiatives:read. Existing initiative-read keys work without replacement or scope updates. Both grants cover all teams in the workspace; huddles:read lets new keys request only huddle access. Initiative Huddle note sessions are a separate workflow. Each daily record retains its latest saved state, up to ten conversation sources, and up to 100,000 characters per pasted source.

3 endpoints

GET

List Team Huddle history

GET /external/v1/huddles

List saved daily huddles across the API key’s workspace, newest date first, with ID descending as the tie-breaker. Returns identity, timestamps and version metadata only. The body is an array; X-Total-Count, X-Limit, X-Offset and X-Has-More headers describe pagination. Concurrent creation or deletion can shift offset pages. Reads never create or refresh huddles. Existing keys with initiatives:read also authorize this endpoint; either scope is sufficient.

Requirements

API scopes required:
huddles:read

Request

Parameters

NameTypeDescription
teamId UUIDFilter to one team. Omit to include all teams in the API key’s workspace.
from stringInclusive huddle date, YYYY-MM-DD. Filters the saved calendar date, not generatedAt.
to stringInclusive huddle date, YYYY-MM-DD; must be on or after from. Set from and to to the same date for one day.
limit integerPage size, 1–100. Default: 20.
offset integerMatching records to skip. Default: 0.

Responses

200
Success

Shallow records and pagination headers. No matches or an exhausted page returns an empty array.

400
Invalid query

Invalid UUID, date, date range, pagination or unsupported parameter.

Example Request

GET
/external/v1/huddles
curl
curl 'https://zentrik.ai/api/external/v1/huddles?from=2026-09-03&to=2026-09-03&limit=20&offset=0' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
[
  {
    "id": "11111111-1111-4111-8111-111111111111",
    "workspaceId": "22222222-2222-4222-8222-222222222222",
    "teamId": "33333333-3333-4333-8333-333333333333",
    "huddleDate": "2026-09-03",
    "schemaVersion": 4,
    "refreshRevision": 1,
    "generatedAt": "2026-09-03T09:00:00.000Z",
    "generatedByUserId": null,
    "createdAt": "2026-09-03T09:00:00.000Z",
    "updatedAt": "2026-09-03T09:15:00.000Z"
  }
]
GET

Get a Team Huddle

GET /external/v1/huddles/:id

Retrieve metadata and all six stored snapshots: goals, customer changes, execution, pending actions, comparisons and conversations. The conversation snapshot includes retained sources, the summary, outstanding items, action candidates and analysis status/error/time. Snapshot fields follow schemaVersion and can be absent in older records. This is the latest saved state, not an end-of-day snapshot or revision archive. Refresh overwrites the daily record; conversation and action edits can update sections without increasing refreshRevision. Pasted text is in sources[].notes. Connected sources retain references with notes: null; fetch their text through the transcript route. This detail route makes no provider requests. Existing keys with initiatives:read also authorize this endpoint; either scope is sufficient.

Requirements

API scopes required:
huddles:read

Request

Parameters

NameTypeDescription
id *UUIDHuddle ID returned by the list endpoint (path parameter).

Responses

200
Success

Metadata and complete saved snapshots. Snapshot objects in this example are abbreviated; the response returns complete stored JSON.

400
Invalid ID

The huddle ID must be a UUID.

404
Not found

The huddle does not exist in the API key’s workspace.

Example Request

GET
/external/v1/huddles/:id
curl
curl 'https://zentrik.ai/api/external/v1/huddles/11111111-1111-4111-8111-111111111111' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
{
  "id": "11111111-1111-4111-8111-111111111111",
  "workspaceId": "22222222-2222-4222-8222-222222222222",
  "teamId": "33333333-3333-4333-8333-333333333333",
  "huddleDate": "2026-09-03",
  "schemaVersion": 4,
  "refreshRevision": 1,
  "generatedAt": "2026-09-03T09:00:00.000Z",
  "generatedByUserId": null,
  "createdAt": "2026-09-03T09:00:00.000Z",
  "updatedAt": "2026-09-03T09:15:00.000Z",
  "goalSnapshot": {
    "globalProgress": 0,
    "progressMethod": "equal_average",
    "goalCount": 0,
    "goals": []
  },
  "customerSnapshot": {},
  "executionSnapshot": {},
  "pendingActionSnapshot": [],
  "comparisonSnapshot": {
    "hasBaseline": false,
    "comparedWithDate": null,
    "requestedPreviousDay": "2026-09-02",
    "usedPreviousDay": false
  },
  "conversationSnapshot": {
    "sources": [
      {
        "id": "44444444-4444-4444-8444-444444444444",
        "provider": "Pasted notes",
        "title": "Daily huddle",
        "type": "transcript",
        "externalId": null,
        "url": null,
        "occurredAt": null,
        "integrationId": null,
        "metadata": {},
        "retention": "stored",
        "notes": "Review the scheduling feedback tomorrow.",
        "addedByUserId": null,
        "createdAt": "2026-09-03T09:15:00.000Z"
      }
    ],
    "analysisStatus": "queued",
    "aggregate": null,
    "analysisError": null,
    "analyzedAt": null
  }
}
GET

Get a huddle transcript

GET /external/v1/huddles/:huddleId/conversations/:conversationId

Retrieve one attached conversation’s transcript text. Pasted notes come from the saved huddle. Connected transcripts are fetched on demand using the stored provider reference and connected account, without persisting the text. Retrieval depends on source availability and provider permissions. All huddle reads use Cache-Control: private, no-store. Existing keys with initiatives:read also authorize this endpoint; either scope is sufficient.

Requirements

API scopes required:
huddles:read

Request

Parameters

NameTypeDescription
huddleId *UUIDHuddle ID (path parameter).
conversationId *UUIDZentrik conversation entry ID from conversationSnapshot.sources[].id (path parameter), not the provider’s meeting ID.

Responses

200
Success

Source identity, provider, title, occurrence date, URL and transcript text.

400
Unavailable content

Invalid UUID, empty transcript, incomplete reference or integration requiring reconnection. Provider errors may also be returned.

404
Not found

Huddle, source or connected integration was not found.

Example Request

GET
/external/v1/huddles/:huddleId/conversations/:conversationId
curl
curl 'https://zentrik.ai/api/external/v1/huddles/11111111-1111-4111-8111-111111111111/conversations/44444444-4444-4444-8444-444444444444' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
{
  "id": "44444444-4444-4444-8444-444444444444",
  "provider": "Pasted notes",
  "title": "Daily huddle",
  "occurredAt": null,
  "url": null,
  "text": "Review the scheduling feedback tomorrow."
}