A template for every form your users fill in
A template says which fields a listing, a review or a message has, what each field must look like and which policies flag it or send it to review.
- Templates are on Starter and up
- Built, tested and published in the dashboard
- AI instructions read the whole form at once
"template": "listings"1 of 4 fields valid- TitleLeather three-seat sofa
- DescriptionBarely used, two years old.
- Price450
- Photos3 files
titleTextRequired5 to 120 charactersHate speech, flagsLinks & contact details, flagsdescriptionTextRequiredUp to 5,000 charactersSwear words, flagsToxicity, flagspriceNumberOptionalAt least 0photosImageOptionalUp to 10 files, 10 MB eachMade with AI, adds a review signalSample data
An invalid form never reaches a model
A form that fails validation comes back with an error for each field that failed, and costs no checks.
- Text
- Min characters, Max characters, Numbers only, Pattern
- Image
- Min files, Max files
- Number
- Minimum, Maximum
- Enum
- Allowed values
- Boolean, URL, JSON
- The value has to match its type
POST/v1/moderationsvalidation_errors200 OK- title"Sofa"Title must be at least 5 charactersmin_length
- description""Description is requiredrequired
- price-5Price must be at least 0min
Sample data
Eight presets to start from
A new template is an editable copy of the preset you pick, with its fields, policies and content rules.
AI instructions are what you would tell a moderator about this kind of content, in plain language. They are judged once per submission, across every field, and come back as the instructions policy with a score and an explanation.
Listing: 4 fields, AI instructions written for this content
titleTextRequireddescriptionTextRequiredpriceNumberOptionalphotosImageOptionalAI instructionsWritten for this content
Presets as shipped
Every edit is a draft until you publish it
The live version keeps answering requests while you edit, and every moderation records the version it ran on.
DraftSave it as often as you like, or discard it.
TestRun a sample against the draft or the live version.
PublishThe new version answers the next request and can no longer be edited.
HistoryOpen any version as JSON, or compare it with the live one.
"id": null,"template": {"slug": "listings","version": 3},"usage": {"checks": 0,"estimated": 1,"cached": false},"test": true- v3Draftcreated Oct 2, 2026 · 09:14ViewCompare with live
- v2PublishedLivepublished Sep 24, 2026 · 16:02View
- v1Supersededpublished Sep 3, 2026 · 11:40ViewCompare with live
- changed
severity.reviewBefore0.4After0.3 - changed
severity.rejectBefore0.8After0.9 - changed
fields[title].validation.max_lengthBefore120After80
Sample data
Name the template in the request
A request that names a template runs that template and nothing else. Leave the name out and the project's default template runs.
- field
- Send one value and say which field it belongs to.
- fields
- Send the whole form. Each text or image field gets a result of its own.
POST/v1/moderations"template": "listings"Listingsv2The slug comes from the name you gave the template.- No templateDefault templateThe one picked in project settings.
- No template, no defaultBasic checkBuilt inThe same in every project.
"template": "listings"On the Free plan403plan_limit"template": "nope"404template_not_found
Sample data

Start moderating your users' content
Create an API key, send your first request and get a verdict back.