curl --request POST \
--url https://api.interchange.io/api/v2/moderation/check \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>"
}
'import requests
url = "https://api.interchange.io/api/v2/moderation/check"
payload = { "text": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>'})
};
fetch('https://api.interchange.io/api/v2/moderation/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"passed": true,
"wouldBlock": true,
"findings": [
{
"category": "<string>",
"severity": "low",
"suggestion": "<string>"
}
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Pre-check content against moderation policy
Runs the content-moderation engine against the supplied text WITHOUT blocking. Returns structured findings (category, severity, suggestion) so buyer agents can validate input before submitting it to a campaign create or other blocking surface. Mirrors the engine that powers POST /v2/campaigns brief screening.
curl --request POST \
--url https://api.interchange.io/api/v2/moderation/check \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>"
}
'import requests
url = "https://api.interchange.io/api/v2/moderation/check"
payload = { "text": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>'})
};
fetch('https://api.interchange.io/api/v2/moderation/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"passed": true,
"wouldBlock": true,
"findings": [
{
"category": "<string>",
"severity": "low",
"suggestion": "<string>"
}
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Body
The text to evaluate. Up to 10,000 characters; longer text is truncated server-side.
1 - 10000Which pattern set to apply. "input" runs the brief/jailbreak/policy patterns; "output" runs the LLM-output (refusal/identity/PII) patterns.
input, output Optional surface label for metric attribution. Defaults to "moderation.check".
1 - 100Response
Pre-check content against moderation policy
True when no moderation patterns matched.
True when at least one finding would trigger a 422 if this content were submitted to a blocking surface.
All matching findings. Empty when passed is true. Both blocking and non-blocking findings are reported so callers can observe medium-severity signals.
Show child attributes
Show child attributes