The policy catalog
Every pre-built policy, what it detects, its default threshold and mode, and the request that lists them with your own guidelines and wordlists.
A policy is one thing Infrared looks for in content: an insult, a phone number, a text posted twice. Every policy that runs returns a score from 0 to 1 under policies in the moderation, keyed by the policy.
The catalog is the set you choose from. A template lists the policies it runs and says what a high score does there. Guidelines and wordlists add policies of your own. A request that names no template runs the basic check, which scores eight of the policies below.
List the policies of a project
curl https://api.useinfrared.com/v1/policies \
-H "Authorization: Bearer $INFRARED_KEY"const response = await fetch("https://api.useinfrared.com/v1/policies", {
headers: { Authorization: `Bearer ${process.env.INFRARED_KEY}` },
});
const policies = await response.json();import os
import requests
response = requests.get(
"https://api.useinfrared.com/v1/policies",
headers={"Authorization": f"Bearer {os.environ['INFRARED_KEY']}"},
)
policies = response.json()The answer is one list, not paginated: the catalog first, then the project's guidelines and wordlists as policies. Any key with the read scope can ask for it.
{
"object": "list",
"data": [
{
"object": "policy",
"key": "profanity",
"name": "Swear words",
"description": "Swear words, including masked, spaced-out and misspelled forms, in every supported language.",
"group": "profanity",
"modalities": ["text"],
"engine": "classifier",
"tier": "basic",
"check_weight": 0,
"weight": 0.8,
"default_threshold": 0.7,
"default_mode": "trigger",
"labels": ["explicit", "masked", "mild"],
"experimental": false,
"supported": true
},
{
"object": "policy",
"key": "guideline/no-off-site-deals",
"name": "No off-site deals",
"group": "custom",
"engine": "llm",
"tier": "custom",
"modalities": ["text", "image"],
"enabled": true
},
{
"object": "policy",
"key": "wordlist/competitors",
"name": "Competitors",
"group": "custom",
"engine": "wordlist",
"tier": "custom",
"modalities": ["text"],
"enabled": true,
"mode": "block"
}
],
"has_more": false,
"next_cursor": null
}keystringThe name of the policy in
policies, in triggers and in content rules. A guideline isguideline/<slug>, a wordlist iswordlist/<slug>.modalitiesarrayWhat the policy reads:
text,imageor both.default_thresholdnumberThe score from which the policy counts as flagged, unless a template sets its own.
default_modestringThe mode the dashboard gives the policy when you turn it on in a template.
One of
triggerobserveweightnumberHow much the score counts for severity, from 0 to 1.
tierstringadvancedpolicies need a plan that includes them.custommarks your guidelines and wordlists, which carryenabledin place of the catalog attributes.One of
basicadvancedcustomsupportedbooleanfalsefor a policy in development. It is listed and never scored.
List policies in the API reference describes every attribute.
Pre-built policies
"Runs on" says what a policy reads. The text Infrared reads inside an image is screened as well, by some of the text policies: Text inside the image says which.
| Policy | Detects | Runs on | Threshold | Mode | Tier |
|---|---|---|---|---|---|
toxicity | Insults, harassment, threats and demeaning language aimed at a person or group | Text | 0.70 | Trigger | Basic |
hate_speech | Attacks or slurs based on ethnicity, nationality, religion, gender, sexuality or disability | Text | 0.70 | Trigger | Basic |
profanity | Swear words, including masked, spaced-out and misspelled forms | Text | 0.70 | Trigger | Basic |
violence | Threats, graphic violence and its glorification | Text, image | 0.70 | Trigger | Basic |
self_harm | Encouragement, instructions or intent of self-harm and suicide | Text, image | 0.70 | Trigger | Basic |
sexual | Sexually explicit content and solicitation | Text, image | 0.70 | Trigger | Basic |
personal_data | Emails, phone numbers, card numbers, IBANs, national ID numbers and, when you turn them on, street addresses | Text | 0.50 | Trigger | Basic |
spam | Promotion of unrelated products or sites, keyword stuffing, misleading urgency, copy-pasted filler | Text | 0.70 | Trigger | Basic |
links_contact | Ways to reach the author outside your platform: URLs, emails, phone numbers, social handles, messenger links. On an image, a picture whose main purpose is to show contact details | Text, image | 0.50 | Trigger | Basic |
duplicate | The same text or image submitted recently in the project, by the same author or by another | Text, image | 0.50 | Trigger | Basic |
illicit | Prohibited or regulated goods and services, in ten categories you can narrow | Text, image | 0.70 | Trigger | Basic |
made_with_ai | The likelihood that a text or an image was generated by a model. Experimental | Text, image | 0.90 | Observe | Advanced |
lookalike_characters | Letters borrowed from another alphabet inside a word, and invisible characters, used to slip past filters | Text | 0.50 | Trigger | Basic |
off_topic | Politics, religion and other subjects that do not belong on your platform | Text | 0.70 | Trigger | Basic |
gibberish | Keyboard mash, word salad, filler and repetition in place of meaningful text | Text | 0.70 | Trigger | Basic |
instructions | What the template's AI instructions ask for, judged across all fields | Text, image | 0.70 | Trigger | Basic |
screenshot | A screenshot of a phone, a desktop or an app uploaded in place of a photograph | Image | 0.70 | Trigger | Basic |
image_quality | Blurry, very dark, overexposed or very small images | Image | 0.70 | Trigger | Basic |
watermark | Visible stock-photo watermarks and the watermarks of other platforms | Image | 0.70 | Trigger | Basic |
Threshold, mode and tier
The three right-hand columns are defaults. A template can change the first two for its own content.
- Threshold is the score from which the policy counts as flagged.
- Mode says whether the policy decides anything. In Trigger mode it can flag the content or send it to review, and it counts for severity. In Observe mode it is scored and returned, and nothing more.
- Tier says which plans can turn the policy on in a template.
| Limit | Free | Starter | Growth | Business |
|---|---|---|---|---|
| Templates, per project | Not included | 5 | 20 | 100 |
| Advanced policies | Not included | Not included | Included | Included |
Policy options and instructions covers what a template can set for each policy, and Triggers covers what happens when one fires.
Policies that match a pattern
Most policies return a probability. Four look for a pattern instead: personal_data, links_contact, lookalike_characters and duplicate. Every wordlist does the same. Their score says what was found.
personal_datascores 0.75 for one match, 0.90 for two and 1.00 for three or more.links_contactscores 0.90 for a URL or a messenger link, 0.85 for a social handle and 0.70 for steering off the platform when the template counts it. More than two matches add 0.10.duplicatescores 0.70 when the same author posted the content before and 0.95 when another author did. For an image, which of the two you get is not reliable today.lookalike_charactersscores 0.70 or more for an invisible character and 0.50 or more for a word that mixes alphabets. The zero-width joiner counts as invisible, so an emoji built from several joined emoji scores 0.70 or more.
A match decides on its own. Any match triggers the policy whatever its threshold, and a match counts as at least 0.85 for severity. With the default weights, one URL is enough for triage to reject.
Made with AI
made_with_ai estimates whether a text or an image was generated by a model. It is experimental: read its score as a reason to look, not as proof.
- Turning it on in a template adds it in Observe mode. It is scored and returned and decides nothing.
- In Trigger mode its default weight of 0.60 keeps it under the reject line on its own. The most triage does with it is send the content to review.
- A content rule can act on its score in either mode.
- It needs a plan with advanced policies, and on images it adds one check for every image it scores. Checks has the arithmetic.
Labels
details can name what a policy found, in labels: insult, phone, same_author. The labels of a catalog row list the usual ones for that policy. Some labels come from a safety pass that runs beside the main scoring, and both sets can change.
Show labels to a moderator. Branch your code on recommendation and on scores.
In the dashboard
Open Policies and choose Pre-built policies. The catalog is listed by group, each policy with its tier, its default Threshold and Weight, an Experimental badge where it applies and a lock where your plan does not include it.
The page is read only. You turn a policy on in a template, on its Policies tab.
The dashboard prints a name for each key. Two differ from what the key suggests: profanity is Swear words and gibberish is Meaningless text.
Next
- Policy options and instructionsDecide how each policy behaves on a template: mode, threshold, effect and weight, guidance for the models, and the options four policies take.
- GuidelinesWrite a rule of your platform in plain language. Infrared scores every submission against it and returns the score as a policy of its own.
- WordlistsMatch your own terms, such as competitor names or banned phrases. A list's mode says whether a match is a violation, required or only reported.
- TriggersA trigger says what a policy's score sets off, a flag or a review, for the whole template or for one field. One of your own replaces the default.
Something missing or unclear on this page? Write to support@useinfrared.com.
