Skip to documentation

Pending actions

Automate the Huddle Pending actions widget with a workspace API key. Actions belong to a team and carry across days until resolved. Use huddle-actions:read for reads, huddle-actions:write for creation, edits and resolution, and huddle-actions:delete for deletion. These grants cover all teams in the key’s workspace. Writes require the Huddle date to sync; they update live actions even if no daily Huddle exists. Historical snapshots change only when explicitly targeted or refreshed. Unknown fields are rejected. Find team IDs through GET /external/v1/teams. Find owner user IDs through GET /external/v1/teams/:teamId/members with teams:read, then send the selected userId as ownerUserId. Omit ownership to create unassigned actions.

7 endpoints

GET

List pending actions

GET /external/v1/huddle-actions

Read the team’s live action records, including actions created in the UI or accepted from a transcript. By default only unresolved actions are returned. The response body is an array; X-Total-Count, X-Limit, X-Offset and X-Has-More headers describe the filtered result. Ordering follows the team action list: resolution time ascending, then due date ascending, then creation time descending, with null resolution times last when status=all. Concurrent changes and tied timestamps can shift offset pages. Reads use Cache-Control: private, no-store.

Requirements

API scopes required:
huddle-actions:read

Request

Parameters

NameTypeDescription
teamId *UUIDTeam in the API key’s workspace (query parameter). Use GET /external/v1/teams to find team IDs.
status stringopen (default), resolved or all.
type stringFilter by blocker, decision or follow_up.
limit integerPage size, 1–100. Default: 20.
offset integerRecords to skip, 0–1,000,000. Default: 0.

Responses

200
Success

Matching actions and pagination headers; no matches returns an empty array.

400
Invalid input

Invalid UUID or calendar date, unsupported field, empty action, invalid type, or owner outside the selected team.

401
Unauthorized

API key is missing, invalid, expired or revoked.

403
Missing scope

The API key does not have this endpoint’s scope.

404
Not found

Team is outside the key’s workspace, or action is outside the selected team.

429
Rate limited

Wait for the Retry-After interval before retrying.

Example Request

GET
/external/v1/huddle-actions
curl
curl -X GET 'https://zentrik.ai/api/external/v1/huddle-actions?teamId=33333333-3333-4333-8333-333333333333' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
[
  {
    "id": "44444444-4444-4444-8444-444444444444",
    "workspaceId": "22222222-2222-4222-8222-222222222222",
    "teamId": "33333333-3333-4333-8333-333333333333",
    "item": "Confirm the rollout owner",
    "type": "follow_up",
    "ownerUserId": null,
    "expectedResolutionDate": "2026-10-23",
    "resolvedAt": null,
    "createdInHuddleId": null,
    "createdAt": "2026-10-21T09:00:00.000Z",
    "updatedAt": "2026-10-21T09:00:00.000Z"
  }
]
GET

Get a pending action

GET /external/v1/huddle-actions/:id

Retrieve a live action in the selected team. Returns ownerUserId, not a joined user profile. createdInHuddleId is nullable and records the Huddle present at creation; it is not the last edited Huddle. Reads use Cache-Control: private, no-store.

Requirements

API scopes required:
huddle-actions:read

Request

Parameters

NameTypeDescription
id *UUIDPending action ID (path parameter).
teamId *UUIDTeam in the API key’s workspace (query parameter). Use GET /external/v1/teams to find team IDs.

Responses

200
Success

The action record.

400
Invalid input

Invalid UUID or calendar date, unsupported field, empty action, invalid type, or owner outside the selected team.

401
Unauthorized

API key is missing, invalid, expired or revoked.

403
Missing scope

The API key does not have this endpoint’s scope.

404
Not found

Team is outside the key’s workspace, or action is outside the selected team.

429
Rate limited

Wait for the Retry-After interval before retrying.

Example Request

GET
/external/v1/huddle-actions/:id
curl
curl -X GET 'https://zentrik.ai/api/external/v1/huddle-actions/44444444-4444-4444-8444-444444444444?teamId=33333333-3333-4333-8333-333333333333' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
{
  "id": "44444444-4444-4444-8444-444444444444",
  "workspaceId": "22222222-2222-4222-8222-222222222222",
  "teamId": "33333333-3333-4333-8333-333333333333",
  "item": "Confirm the rollout owner",
  "type": "follow_up",
  "ownerUserId": null,
  "expectedResolutionDate": "2026-10-23",
  "resolvedAt": null,
  "createdInHuddleId": null,
  "createdAt": "2026-10-21T09:00:00.000Z",
  "updatedAt": "2026-10-21T09:00:00.000Z"
}
POST

Create a pending action

POST /external/v1/huddle-actions

Add an unresolved action and sync the selected day’s existing Huddle. This is a direct manual action, with no transcript analysis or review step. POST is not idempotent: each successful call creates a new record. Store the returned ID. After an uncertain timeout, reconcile against the action list before retrying to avoid duplicates. Serialize writes for the same team and date to avoid overlapping snapshot updates.

Requirements

API scopes required:
huddle-actions:write

Request

Parameters

NameTypeDescription
teamId *UUIDTeam in the API key’s workspace (query parameter). Use GET /external/v1/teams to find team IDs.
date *stringYYYY-MM-DD (query parameter). Update the pending-action snapshot and comparisons in this day’s existing Huddle. Does not create a Huddle. Use the date currently displayed in the widget; older snapshots are not updated automatically.

Request body (application/json)

itemstring
Required

Action text, 1–1,000 characters after trimming.

typestring
Required

blocker, decision or follow_up.

ownerUserIdUUID | null

Use userId from GET /external/v1/teams/:teamId/members (teams:read scope). The owner must still belong to this team when saved. Omit or use null to create an unassigned action; null clears an existing owner on PATCH.

expectedResolutionDatestring | null

Due date, YYYY-MM-DD. Omit or use null for no due date on create; null clears it on PATCH.

Responses

201
Created

The new action. createdInHuddleId is null if no Huddle exists for the date.

400
Invalid input

Invalid UUID or calendar date, unsupported field, empty action, invalid type, or owner outside the selected team.

401
Unauthorized

API key is missing, invalid, expired or revoked.

403
Missing scope

The API key does not have this endpoint’s scope.

404
Not found

Team is outside the key’s workspace, or action is outside the selected team.

429
Rate limited

Wait for the Retry-After interval before retrying.

Example Request

POST
/external/v1/huddle-actions
curl
curl -X POST 'https://zentrik.ai/api/external/v1/huddle-actions?teamId=33333333-3333-4333-8333-333333333333&date=2026-10-21' -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"item":"Confirm the rollout owner","type":"follow_up","expectedResolutionDate":"2026-10-23"}'

Example Response

201 Created
json
{
  "id": "44444444-4444-4444-8444-444444444444",
  "workspaceId": "22222222-2222-4222-8222-222222222222",
  "teamId": "33333333-3333-4333-8333-333333333333",
  "item": "Confirm the rollout owner",
  "type": "follow_up",
  "ownerUserId": null,
  "expectedResolutionDate": "2026-10-23",
  "resolvedAt": null,
  "createdInHuddleId": null,
  "createdAt": "2026-10-21T09:00:00.000Z",
  "updatedAt": "2026-10-21T09:00:00.000Z"
}
PATCH

Update a pending action

PATCH /external/v1/huddle-actions/:id

Change only the supplied fields and sync the selected date’s existing Huddle. Send at least one supported field. Omitted fields remain unchanged. item and type cannot be null. Resolution is managed through the resolve and reopen routes.

Requirements

API scopes required:
huddle-actions:write

Request

Parameters

NameTypeDescription
id *UUIDPending action ID (path parameter).
teamId *UUIDTeam in the API key’s workspace (query parameter). Use GET /external/v1/teams to find team IDs.
date *stringYYYY-MM-DD (query parameter). Update the pending-action snapshot and comparisons in this day’s existing Huddle. Does not create a Huddle. Use the date currently displayed in the widget; older snapshots are not updated automatically.

Request body (application/json)

itemstring

Action text, 1–1,000 characters after trimming.

typestring

blocker, decision or follow_up.

ownerUserIdUUID | null

Use userId from GET /external/v1/teams/:teamId/members (teams:read scope). The owner must still belong to this team when saved. Omit or use null to create an unassigned action; null clears an existing owner on PATCH.

expectedResolutionDatestring | null

Due date, YYYY-MM-DD. Omit or use null for no due date on create; null clears it on PATCH.

Responses

200
Updated

The updated action record.

400
Invalid input

Invalid UUID or calendar date, unsupported field, empty action, invalid type, or owner outside the selected team.

401
Unauthorized

API key is missing, invalid, expired or revoked.

403
Missing scope

The API key does not have this endpoint’s scope.

404
Not found

Team is outside the key’s workspace, or action is outside the selected team.

429
Rate limited

Wait for the Retry-After interval before retrying.

Example Request

PATCH
/external/v1/huddle-actions/:id
curl
curl -X PATCH 'https://zentrik.ai/api/external/v1/huddle-actions/44444444-4444-4444-8444-444444444444?teamId=33333333-3333-4333-8333-333333333333&date=2026-10-21' -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"expectedResolutionDate":null}'

Example Response

200 OK
json
{
  "id": "44444444-4444-4444-8444-444444444444",
  "workspaceId": "22222222-2222-4222-8222-222222222222",
  "teamId": "33333333-3333-4333-8333-333333333333",
  "item": "Confirm the rollout owner",
  "type": "follow_up",
  "ownerUserId": null,
  "expectedResolutionDate": null,
  "resolvedAt": null,
  "createdInHuddleId": null,
  "createdAt": "2026-10-21T09:00:00.000Z",
  "updatedAt": "2026-10-21T09:00:00.000Z"
}
POST

Resolve a pending action

POST /external/v1/huddle-actions/:id/resolve

Resolve an action and sync the selected date’s existing Huddle. No request body is needed; an empty object is accepted. Sequential retries preserve the first resolvedAt timestamp until the action is reopened. You cannot supply your own resolution timestamp.

Requirements

API scopes required:
huddle-actions:write

Request

Parameters

NameTypeDescription
id *UUIDPending action ID (path parameter).
teamId *UUIDTeam in the API key’s workspace (query parameter). Use GET /external/v1/teams to find team IDs.
date *stringYYYY-MM-DD (query parameter). Update the pending-action snapshot and comparisons in this day’s existing Huddle. Does not create a Huddle. Use the date currently displayed in the widget; older snapshots are not updated automatically.

Responses

200
Resolved

The action with its server-set resolvedAt timestamp.

400
Invalid input

Invalid UUID or calendar date, unsupported field, empty action, invalid type, or owner outside the selected team.

401
Unauthorized

API key is missing, invalid, expired or revoked.

403
Missing scope

The API key does not have this endpoint’s scope.

404
Not found

Team is outside the key’s workspace, or action is outside the selected team.

429
Rate limited

Wait for the Retry-After interval before retrying.

Example Request

POST
/external/v1/huddle-actions/:id/resolve
curl
curl -X POST 'https://zentrik.ai/api/external/v1/huddle-actions/44444444-4444-4444-8444-444444444444/resolve?teamId=33333333-3333-4333-8333-333333333333&date=2026-10-21' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
{
  "id": "44444444-4444-4444-8444-444444444444",
  "workspaceId": "22222222-2222-4222-8222-222222222222",
  "teamId": "33333333-3333-4333-8333-333333333333",
  "item": "Confirm the rollout owner",
  "type": "follow_up",
  "ownerUserId": null,
  "expectedResolutionDate": "2026-10-23",
  "resolvedAt": "2026-10-21T10:00:00.000Z",
  "createdInHuddleId": null,
  "createdAt": "2026-10-21T09:00:00.000Z",
  "updatedAt": "2026-10-21T09:00:00.000Z"
}
POST

Reopen a pending action

POST /external/v1/huddle-actions/:id/reopen

Clear resolvedAt and sync the selected date’s existing Huddle. Reopening an open action leaves it open. No request body is needed; an empty object is accepted.

Requirements

API scopes required:
huddle-actions:write

Request

Parameters

NameTypeDescription
id *UUIDPending action ID (path parameter).
teamId *UUIDTeam in the API key’s workspace (query parameter). Use GET /external/v1/teams to find team IDs.
date *stringYYYY-MM-DD (query parameter). Update the pending-action snapshot and comparisons in this day’s existing Huddle. Does not create a Huddle. Use the date currently displayed in the widget; older snapshots are not updated automatically.

Responses

200
Reopened

The action with resolvedAt: null.

400
Invalid input

Invalid UUID or calendar date, unsupported field, empty action, invalid type, or owner outside the selected team.

401
Unauthorized

API key is missing, invalid, expired or revoked.

403
Missing scope

The API key does not have this endpoint’s scope.

404
Not found

Team is outside the key’s workspace, or action is outside the selected team.

429
Rate limited

Wait for the Retry-After interval before retrying.

Example Request

POST
/external/v1/huddle-actions/:id/reopen
curl
curl -X POST 'https://zentrik.ai/api/external/v1/huddle-actions/44444444-4444-4444-8444-444444444444/reopen?teamId=33333333-3333-4333-8333-333333333333&date=2026-10-21' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
{
  "id": "44444444-4444-4444-8444-444444444444",
  "workspaceId": "22222222-2222-4222-8222-222222222222",
  "teamId": "33333333-3333-4333-8333-333333333333",
  "item": "Confirm the rollout owner",
  "type": "follow_up",
  "ownerUserId": null,
  "expectedResolutionDate": "2026-10-23",
  "resolvedAt": null,
  "createdInHuddleId": null,
  "createdAt": "2026-10-21T09:00:00.000Z",
  "updatedAt": "2026-10-21T09:00:00.000Z"
}
DELETE

Delete a pending action

DELETE /external/v1/huddle-actions/:id

Permanently remove an action and sync the selected date’s existing Huddle. Other saved daily snapshots retain their saved content. Repeating the deletion returns 404. The write scope alone does not allow deletion.

Requirements

API scopes required:
huddle-actions:delete

Request

Parameters

NameTypeDescription
id *UUIDPending action ID (path parameter).
teamId *UUIDTeam in the API key’s workspace (query parameter). Use GET /external/v1/teams to find team IDs.
date *stringYYYY-MM-DD (query parameter). Update the pending-action snapshot and comparisons in this day’s existing Huddle. Does not create a Huddle. Use the date currently displayed in the widget; older snapshots are not updated automatically.

Responses

200
Deleted

The deleted action ID.

400
Invalid input

Invalid UUID or calendar date, unsupported field, empty action, invalid type, or owner outside the selected team.

401
Unauthorized

API key is missing, invalid, expired or revoked.

403
Missing scope

The API key does not have this endpoint’s scope.

404
Not found

Team is outside the key’s workspace, or action is outside the selected team.

429
Rate limited

Wait for the Retry-After interval before retrying.

Example Request

DELETE
/external/v1/huddle-actions/:id
curl
curl -X DELETE 'https://zentrik.ai/api/external/v1/huddle-actions/44444444-4444-4444-8444-444444444444?teamId=33333333-3333-4333-8333-333333333333&date=2026-10-21' -H 'Authorization: Bearer YOUR_API_KEY'

Example Response

200 OK
json
{
  "id": "44444444-4444-4444-8444-444444444444"
}