Skip to content

Tasks of one meeting

GET /api/v1/meetings/{id}/action-items action_items:read

Tasks from the most recent minutes of the meeting. An empty list means "no tasks OR no meeting you can see" — the API deliberately does not give away that other people's meetings exist.

Path parameters

NameTypeRequiredDescription
iduuidyesThe meeting, by the id from /meetings.

Query parameters

NameTypeRequiredDescription
statusstringValues: open, done, dismissed.
verdictstringThe outcome of the second pass over the task. resolved_in_meeting means it was already dealt with during the meeting. Values: open, resolved_in_meeting, discarded, duplicate, unclear_owner.
due_fromdate⚠️ The shape is NOT checked here, unlike on /action-items. An unusable value gives 500 or 503 instead of 400.
due_todateUpper bound of the due date. Same caveat as due_from.
limitintegerBetween 1 and 200. Default 100.
offsetintegerAt least 0. Default 0.

Response 200

The tasks of the meeting. ⚠️ pagination.limit is the NUMBER OF ROWS delivered here and pagination.offset is always 0 — not what you asked for. Only total is the real total.

Example response

json
{
  "meeting_id": "3b1f7c02-5d64-4c1a-9f88-2ac0e6b41d77",
  "data": [
    {
      "id": "e07b6d13-84af-4c92-b5d7-0a9e1f83c246",
      "protocol_id": "8f14e45f-ceea-467a-9e2b-1d3f5c0a7b21",
      "task": "Send the quote",
      "owner_name": "Anna Weber",
      "due": "2026-08-15",
      "verdict": "open",
      "status": "open"
    }
  ],
  "pagination": {
    "limit": 50,
    "offset": 0,
    "total": 3
  }
}
FieldTypeRequiredDescription
meeting_iduuidyesThe meeting these rows belong to.
dataobject[]yesThe tasks of this meeting.
data[].iduuidyesIdentifies the task.
data[].protocol_iduuidyesThe minutes this task was taken from.
data[].taskstringyesWhat is to be done, in one sentence.
data[].owner_namestring | nullWho is to do it. null when nobody was named in the meeting.
data[].duedate | nullWhen it is due. null when no date was named.
data[].verdictstringyesOutcome of the second pass over the task. resolved_in_meeting means it was already dealt with while the meeting was still running. Values: open, resolved_in_meeting, discarded, duplicate, unclear_owner.
data[].statusstringyesWhere the task stands. This one is set by a person in the app, not by the model. Values: open, done, dismissed.
paginationobjectyesWhere this page sits in the whole set.
pagination.limitintegeryesThe page size that was applied, after clamping.
pagination.offsetintegeryesThe offset that was applied.
pagination.totalintegeryesNumber of hits in total, ignoring limit and offset.

Other answers

CodeMeaning
401No key, or a key that is not valid.
403The key is missing the scope this endpoint needs.
503The endpoint does not exist on this deployment yet, because a database change has not been applied. A temporary state, not a mistake in your request.

Protoki — EU/GDPR-compliant meeting notetaker.