---
title: "Test policy (dry run)"
method: POST
path: "/v1/check/dry-run"
tags: ["Moderation"]
---

# Test policy (dry run)

`POST /v1/check/dry-run`

## Request

- Base URL: `https://api.vettly.dev`
- URL: `https://api.vettly.dev/v1/check/dry-run`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/vettly/apis/vettly-content-moderation-api/docs/v1/check/dry-run/post.ts> (a function with typed inputs; its response is checked against the schema)

Test a moderation policy with mock scores without saving results

## Request body

- object: Request body for content moderation. Send user-generated content (text, image URL, or video URL) and a policy ID to get an allow/flag/block decision.
  - `content` string, required: The user-generated content to moderate. For text, send the raw string. For images, send a URL or base64 data URI. For video, send a URL.
  - `policyId` string, required: ID of the moderation policy to evaluate against. Use "default" if you have not created a custom policy.
  - `contentType` 'text' | 'image' | 'video': Type of content. Determines which AI models are used for scoring.
  - `requestId` string: Idempotency key. If you send the same requestId twice, you get the cached result instead of a duplicate check.
  - `metadata` object: Attach context like userId or source. Stored with the decision for audit purposes.
  - `mockScores` object: Mock category scores for testing

## Response `200`

Dry run result

- object
  - `dryRun` boolean
  - `evaluation` object: Policy evaluation result
  - `policy` object
    - `id` string
    - `version` string

## Other responses

- `400`: Invalid request
- `401`: Unauthorized
- `404`: Policy not found

---

[API](https://skmtc.dev/vettly/apis/vettly-content-moderation-api.md) - [All operations](https://skmtc.dev/vettly/apis/vettly-content-moderation-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vettly/apis/vettly-content-moderation-api/revisions/bc3dcc22cce5?raw)
