---
title: "Replay a policy against server-resolved fixtures and receipts"
method: POST
path: "/v1/policies/replay"
tags: ["Policies"]
---

# Replay a policy against server-resolved fixtures and receipts

`POST /v1/policies/replay`

## Request

- Base URL: `https://api.thrd.email`
- URL: `https://api.thrd.email/v1/policies/replay`
- Auth: HTTP bearer

Requires policies:replay. Accepts identities only; policy facts are loaded tenant-bound by the server and no policy version is mutated.

## Request body

- object
  - `version_id` string, uuid, required
  - `receipt_ids` string[]
  - `fixture_ids` string[]

## Response `200`

Read-only decision delta report with fixture, receipt and missing-input counts

- object
  - `policyVersionId` string, uuid, required
  - `policyHash` string, required
  - `counts` object, required
    - `evaluated` integer, required
    - `fixtures` integer, required
    - `receipts` integer, required
    - `allow` integer, required
    - `review` integer, required
    - `deny` integer, required
    - `changed` integer, required
  - `decisions` object[], required
    - `id` string, required
    - `kind` 'fixture' | 'receipt', required
    - `currentDecision` 'allow' | 'review' | 'deny', nullable
    - `decision` 'allow' | 'review' | 'deny', required
  - `missingReceiptIds` string[], required
  - `missingFixtureIds` string[], required

## Other responses

- `400`: Invalid identities or replay limit
- `403`: Missing policies:replay scope

---

[API](https://skmtc.dev/thrd/apis/thrd-agent-email-api.md) · [All operations](https://skmtc.dev/thrd/apis/thrd-agent-email-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thrd/apis/thrd-agent-email-api/revisions/d8a88129cd34?raw)
