---
title: "Check content for moderation"
method: POST
path: "/v1/check"
tags: ["Moderation"]
---

# Check content for moderation

`POST /v1/check`

## Request

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

Send user-generated content (text, image, or video) and get an allow/flag/block decision based on your policy. This is the primary endpoint for content moderation. Returns category scores, a decision action, and a decision ID for audit trail.

## Request body

- CheckRequest: 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.

## Response `200`

Moderation decision

- CheckResponse: Moderation decision. Contains the action (allow/flag/block), category scores, and a decision ID for audit trail.
  - `decisionId` string, required: Unique decision ID for audit trail. Use this to look up the decision later or for appeals.
  - `safe` boolean, required: true if no category thresholds were exceeded
  - `flagged` boolean, required: true if content needs human review
  - `action` 'allow' | 'review' | 'block', required: What to do with this content: allow it, queue for review, or block it
  - `categories` object[], required: Category scores from moderation provider
    - `category` string
    - `score` number
    - `triggered` boolean
  - `provider` string, required: Provider used for moderation
  - `latency` number, required: Total request latency in milliseconds
  - `cost` number, required: Estimated cost in USD
  - `requestId` string: Your provided requestId (if any)
  - `cached` boolean: Whether this was a cached response (idempotency)

## Other responses

- `400`: Invalid request (validation error)
- `401`: Unauthorized (missing or invalid API key)
- `404`: Policy not found
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[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)
