---
title: "Try an effect against a standing delegation's level and grants"
method: POST
path: "/api/assistant/rules/{id}/check"
tags: ["Mailzero Assistant"]
---

# Try an effect against a standing delegation's level and grants

`POST /api/assistant/rules/{id}/check`

## Request

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

A dry run of the validation order for an effect requested under the rule today: the level allows the kind; the grants allow the recipients, the volume (today's executed effects count), the schedule, the spend, the risk classes read off the matter; the required approver approved. Answers the status a plan would take (proposed, approved, escalated or rejected) with every check and why. Nothing changes. Requires `assistant:write`; an agent token is refused.

## Path parameters

- `id` string, required

## Request body

- object
  - `effect` object, required
    - `kind` 'reply' | 'forward' | 'label' | 'snooze' | 'resolve' | 'note' | 'request', required
    - `to` string[]: Addresses, or hosts for a request
  - `matter` object
    - `title` string, nullable
    - `summary` string, nullable
    - `ask` string, nullable
    - `correspondents` string[]: Addresses seen on the matter
    - `amount_usd` number
  - `at` string, date-time: The instant to check the schedule at; now by default
  - `approved_by` string[]: Member ids who approved already

## Response `200`

The verdict

- object
  - `rule` object, required
    - `id` string
    - `name` string
    - `level` string
    - `enabled` boolean
  - `allowed_kinds` string[], required
  - `effective_grants` AssistantGrants, required: 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
  - `outcome` 'proposed' | 'approved' | 'escalated' | 'rejected', required
  - `check` AssistantGrantCheck, required: The verdict of the validation order for one request: the level, the recipients, the volume, the schedule, the spend, the risk classes of the matter, the required approver
    - `outcome` 'allowed' | 'escalate' | 'approval' | 'rejected', required
    - `effects` object[], required
      - `kind` string, required
      - `check` object, required
        - `outcome` 'allowed' | 'escalate' | 'approval' | 'rejected', required
        - `checks` object[], required
          - `name` 'level' | 'recipients' | 'volume' | 'schedule' | 'spend' | 'risk' | 'approver', required
          - `passed` boolean, required
          - `why` string, required
        - `risk_classes` string[], required
    - `usage` object, required
      - `effects_today` integer, required
      - `spend_today_usd` number, required
  - `hint` string, required

## Other responses

- `400`: Invalid check
- `401`: Missing or invalid API key
- `404`: No such rule
- `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)
