Search K
Appearance
Appearance
For F5 AI Security, Use the /refusal-catalogs endpoint to add and retrieve custom refusal phrases. Custom phrases extend the deterministic refusal gate, which is the first step in the red team evaluation process. They apply to all red team runs in your organization.
For background on how refusal phrases work in the evaluation process, see Refusal phrases.
Before you begin, make sure you have:
Send a POST request to the /refusal-catalogs endpoint with your phrases as a JSON array:
curl https://us1.calpysoai.app/backend/v1/refusal-catalogs \
-X POST \
-H 'Authorization: Bearer <YOUR_API_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"phrases": ["I cannot help with that", "I am unable to assist"]}'If you want to add or delete custom refusal phrases, rerun this request with your complete list.
Verify your phrases were saved by sending a GET request:
curl https://us1.calpysoai.app/backend/v1/refusal-catalogs/latest \
-X GET \
-H 'Authorization: Bearer <YOUR_API_TOKEN>'You should see your phrases in the output:
{
"refusalCatalog": [
{
"id": "019ebc23-deb3-7032-a752-7ae91418f263",
"phrases": [
"I cannot help with that",
"I am unable to assist"
],
"createdAt": "2026-06-12T14:02:07.923202+00:00",
"createdBy": "no-auth"
}
]
}Symptom: Responses you expect to be flagged as refusals are passing through to the intent evaluation step.
Cause: While phrases are case-insensitive, the phrase must appear in the response exactly as entered.
Symptom: After a POST request, a GET request returns a different list than expected.
Cause: A POST request replaces the entire phrase list, not just adds to it. If you POST a partial list, the phrases not included are removed.
Fix: Always POST the full list of phrases you want active.
For more information, see: