---
title: "simulate Agent Inbox Policy"
method: POST
path: "/api/v1/inbox/policies/simulate"
tags: ["Inbox"]
---

# simulate Agent Inbox Policy

`POST /api/v1/inbox/policies/simulate`

## Request

- Base URL: `https://commentary.dev`
- URL: `https://commentary.dev/api/v1/inbox/policies/simulate`
- Auth: HTTP bearer

Account-scoped HTTP v1 agent operation within the credential's fixed workspace and current owner/source authority. Workspace selection never changes browser preferences. Policies cannot be activated by an agent. Insights require a 20-observation cohort; delivery history omits titles and app paths.

## Headers

- `X-Commentary-Workspace-Id` string
- `X-Correlation-Id` string

## Request body

- AgentInboxPolicySimulation
  - `definition` InboxAttentionPolicyDefinition, required
    - `schemaVersion` unknown, required
    - `condition` union, required
      - object
        - `kind` 'clause', required
        - `clause` object, required
          - `field` 'workspace' | 'interaction_type' | 'resource_type' | 'source_category' | 'agent' | 'recipient' | 'role' | 'status' | 'priority_band' | 'deadline_window' | 'age_days' | 'business_hours', required
          - `operator` 'is' | 'is_not' | 'in' | 'gte' | 'lte', required
          - `value` union, required
            - string
            - number
            - boolean
            - string[]
      - object
        - `kind` 'all' | 'any', required
        - `conditions` InboxAttentionPolicyCondition[], required
      - object
        - `kind` 'not', required
        - `condition` InboxAttentionPolicyCondition, required (recursive)
    - `effects` InboxAttentionPolicyEffect[], required
      - union
        - object
          - `kind` 'rank_adjustment', required
          - `points` integer, required
        - object
          - `kind` 'route', required
          - `queueId` string, required
        - object
          - `kind` 'assign', required
          - `recipientId` string, required
        - object
          - `kind` 'notification_preference', required
          - `preference` 'in_app' | 'digest' | 'none', required
        - object
          - `kind` 'snooze', required
          - `durationMinutes` 15 | 60 | 240 | 1440 | 10080, required
        - object
          - `kind` 'resurface', required
          - `afterMinutes` 15 | 60 | 240 | 1440 | 10080, required
  - `entryId` string, required

## Response `200`

Authorized response. Reads never mark recipient state or apply policy effects. Proposals are disabled and pending human approval.

- object
  - `data` object, required

## Other responses

- `400`: Invalid input.
- `401`: A valid bearer token is required.
- `403`: The grant, workspace, membership, scope, feature, or source authority does not authorize this action.
- `404`: Authorized resource or item was not found.
- `409`: The version, retry key, or proposal limit conflicts.
- `500`: The request could not be completed.
- `503`: Source access or projection is temporarily unavailable.

---

[API](https://skmtc.dev/commentary/apis/commentary-public-api.md) · [All operations](https://skmtc.dev/commentary/apis/commentary-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/commentary/apis/commentary-public-api/revisions/7aaafc198c52?raw)
