---
title: "Get one assistant Work item and exact current plan"
method: GET
path: "/api/assistant/work-items/{id}"
tags: ["Mailzero Assistant"]
---

# Get one assistant Work item and exact current plan

`GET /api/assistant/work-items/{id}`

## Request

- Base URL: `https://domani.run`
- URL: `https://domani.run/api/assistant/work-items/{id}`
- Auth: HTTP bearer

Returns the grounded Work item, its open Decision and options, the exact current Action plan, open commitments and expectations, interactions, and receipts. Requires the assistant:read scope. A matter made from authentication mail before such mail was kept out of the assistant is shown with its title, summary, ask and plan effects withheld from a reader without `email:auth_secrets`.

## Path parameters

- `id` string, required

## Response `200`

Grounded Work item, Decision, plan, open loops, and receipts

- AssistantWorkItem: One grounded item of the Today queue. Every field is a proposal derived from mail; the source message stays the only truth.
  - `id` string
  - `version` integer
  - `status` 'open' | 'needs_judgment' | 'snoozed' | 'waiting' | 'handled' | 'ignored'
  - `title` string
  - `summary` string
  - `ask` string, nullable: The single thing the owner must do or decide, or null.
  - `category` 'invoice' | 'payment_notice' | 'payment_failure' | 'refund_request' | 'signature_request' | 'meeting_request' | 'calendar_change' | 'support_ticket' | 'partner_inquiry' | 'recurring_alert' | 'account_notice' | 'newsletter' | 'legal_notice' | 'internal_handover' | 'shipping_notice' | 'phishing' | 'other', nullable: The kind of matter the analysis found (an invoice, a meeting request, a newsletter...), or null when no analysis said. Rules match it as the label category:<kind>.
  - `tags` string[]: The person's tags on the matter (CT-01b): confirmed once or set by hand, each one a label on the thread at the provider. Rules match them as the label tag:<name>.
  - `proposed_tags` string[]: The tags the engine proposes for the matter (one per project it named), not yet confirmed. Confirm one with the tag interaction; it then applies to the next matter of the same project without a question.
  - `suspect` boolean: The trust signals found the sender suspect: the matter sits in the Suspect section, is never Now, carries no decision, and no effect runs on it until the person reports it legitimate.
  - `suspect_reasons` string[]: Why it looks suspect, one sentence per signal (a failed authentication, a diverging Reply-To, a lookalike domain, a borrowed name, a first contact about money, an instruction to the assistant, a secret asked by return mail).
  - `sender` object, nullable
    - `address` string
    - `name` string, nullable
    - `kind` 'human' | 'automated' | 'self' | 'harness'
  - `recurrence` object: How often this same situation came back: one item, N messages.
    - `count` integer
    - `first_seen_at` string, nullable
    - `last_seen_at` string, nullable
  - `mailbox` object
    - `id` string
    - `address` string
    - `name` string, nullable
    - `operator` 'human' | 'agent'
    - `agent` object, nullable
      - `name` string
      - `emoji` string, nullable
  - `opened_at` string, nullable
  - `delegated_to` string, nullable: The slug of the agent the owner handed this item to, or null.
  - `delegation_rule` object, nullable: The standing delegation that handed this item over, and why it matched; suspended once the owner took the item back.
    - `id` string
    - `why` string, nullable
    - `suspended` boolean
  - `unread` boolean: True until the owner opens the item after its latest change.
  - `messages` object[]: The source messages behind this item, newest first.
    - `id` string
    - `subject` string, nullable
    - `from` string
    - `received_at` string
    - `conversation_id` string, nullable
  - `history` object[]: What already happened in this matter, oldest first: one line per earlier message.
    - `message_id` string
    - `occurred_at` string
    - `sender` string
    - `title` string
  - `source` object
    - `type` string
    - `conversation_id` string, nullable
    - `event_id` string
    - `revision` integer
  - `attention` object
    - `level` 'now' | 'needs_you' | 'fyi' | 'quiet'
    - `reason` string
    - `confidence` string
    - `deadline` string, nullable
  - `analysis` object
    - `coverage` string
    - `warnings` string[]
  - `evidence_refs` string[]
  - `entity_refs` string[]
  - `snoozed_until` string, nullable
  - `decision` object, nullable
    - `id` string
    - `version` integer
    - `status` string
    - `question` string
    - `options` object[]
      - `id` string
      - `label` string
      - `recommended` boolean
      - `outcome` string
  - `plan` object, nullable
    - `id` string
    - `status` string
    - `expires_at` string

## Other responses

- `401`: Missing or invalid API key
- `404`: Work item not found
- `429`: Rate limit exceeded - wait and retry

---

[API](https://skmtc.dev/domani/apis/domani-run-api.md) · [All operations](https://skmtc.dev/domani/apis/domani-run-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domani/apis/domani-run-api/revisions/7679f8159533?raw)
