---
title: "What the assistant learned about you"
method: GET
path: "/api/assistant/learned"
tags: ["Mailzero Assistant"]
---

# What the assistant learned about you

`GET /api/assistant/learned`

## Request

- Base URL: `https://domani.run`
- URL: `https://domani.run/api/assistant/learned`
- Auth: HTTP bearer

The quiet rules the assistant proposes after the same sender or organisation was ignored every time it came back, the mutes in force (a sender, a domain or a situation the assistant keeps out of Today), each with why it was set, and the tags confirmed once, each applied to the next matter of the same project without a question. Accept a quiet rule through the suggestions endpoint; forget a mute with the mutes endpoint, a tag with the tags endpoint.

## Response `200`

The learned rules

- AssistantLearnedView
  - `mutes` object[]: The mutes in force, newest first.
    - `kind` 'sender' | 'sender_domain' | 'situation'
    - `value` string
    - `reason` string, nullable: Why it was set: learned from a quiet rule, or ignored from a matter.
    - `created_at` string
  - `suggestions` AssistantSuggestion[]: The open quiet rules: accept one through the suggestions endpoint to set the mute it carries.
    - `id` string, required
    - `kind` 'delegation_rule', required
    - `handling` string, required: ignored, replied, resolved, or handed:<agent slug>
    - `rule` AssistantRuleInput, required
      - `name` string
      - `enabled` boolean
      - `position` integer: Rules are tried in this order; the first match wins
      - `match` AssistantRuleMatch: The explicit predicate of a standing delegation; every stated condition must hold
        - `senderAddress` string: The sender's address
        - `senderDomain` string: The sender's domain; a subdomain matches too
        - `organisation` string: The organisation label of the sender's domain, for example tucows
        - `workKeyPrefix` string: The work item key starts with this, for example org:tucows or auto:
        - `senderKind` 'human' | 'automated'
        - `mailboxIds` string[]
        - `labels` string[]: The matter carries any of these labels: category:<kind> is its kind of matter (CT-01), tag:<name> one of the person's tags (CT-01b)
        - `subjectPattern` string: An anchored, case-insensitive pattern on the subject
        - `minOccurrences` integer: Only recurring matters: at least this many occurrences
        - `minConfidence` number: Only when the calibrated classifier put at least this probability on one of the rule's category: labels; without its answer the rule does not match
      - `assignee_type` 'agent' | 'member'
      - `assignee_ref` string: The agent identity slug, or the member's user id
      - `level` 'observe' | 'triage' | 'draft' | 'guarded_send' | 'operate': The autonomy granted; observe by default
      - `grants` AssistantGrants: Caps on the effects of a level: who an outward effect may reach, how many effects a day, when, how much model spend, which risk classes without an approver, and a required approver. On a rule and on an assignee, the stricter wins
        - `recipients` object
          - `mode` 'correspondents' | 'domains' | 'anyone', required: The matter's correspondents (the default), listed domains, or anyone
          - `domains` string[]
        - `volume` object
          - `effects_per_day` integer, required
        - `schedule` object
          - `hours` integer[]: Start (inclusive) and end (exclusive) hour
          - `days` integer[]: Sunday is zero
          - `timezone` string: An IANA zone; UTC when absent
        - `spend` object
          - `usd_per_day` number
          - `usd_per_matter` number
        - `risk` object
          - `allow` string[]: Risk classes the assignee may act on; none by default
          - `financial_threshold_usd` number: Amounts below this do not make a matter financial
        - `approver` object
          - `member_id` string, required
    - `evidence` object, required
      - `matters` object[]
        - `id` string
        - `title` string
        - `last_seen_at` string, date-time
      - `matter_count` integer
      - `occurrences` integer
      - `window_days` integer
    - `status` 'open' | 'accepted' | 'dismissed', required
    - `first_seen_at` string, date-time, required
    - `last_seen_at` string, date-time, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `tags` object[]: The tags confirmed once (CT-01b), newest first: each applies to the next matter of the same project without a question until forgotten.
    - `name` string
    - `source` 'project' | 'hand': project: proposed from the matter's projects and confirmed; hand: set by hand on a matter.
    - `applied` integer: How many matters got it without a question.
    - `last_applied_at` string, date-time, nullable
    - `created_at` string, date-time

## Other responses

- `401`: Missing or invalid API key
- `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)
