Skip to content

Overview

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

Before you begin, make sure you have:

  • Your phrase list: Use plain text strings only. AI Security does not support regex patters with refusal phrases.

Add custom refusal phrases

Send a POST request to the /refusal-catalogs endpoint with your phrases as a JSON array:

shell
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.

Review existing custom refusal phrases

Verify your phrases were saved by sending a GET request:

shell
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:

json
{
  "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"
    }
  ]
}

Troubleshooting

The phrase doesn't catch refusals from my model

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.

A POST request isn't saving my phrases

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.


References

For more information, see:

Updated at: