Skip to main content
POST
/
api
/
policy-gateway
/
simulate
Simulate a policy decision
curl --request POST \
  --url https://api.abliteration.ai/api/policy-gateway/simulate \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "config": {
    "policy_id": "<string>",
    "name": "<string>",
    "owner": "<string>",
    "description": "<string>",
    "rules": {
      "allowlist": [
        "<string>"
      ],
      "denylist": [
        "<string>"
      ],
      "redact": true,
      "rewrite_instead_of_refuse": true,
      "response_pattern": "<string>",
      "reason_codes": [
        "<string>"
      ],
      "flagged_categories": [
        "<string>"
      ]
    },
    "org_controls": {
      "project_keys": true,
      "user_quotas": true,
      "audit_logs": true,
      "data_classification": "<string>",
      "user_quota": {
        "requests": 123,
        "tokens": 123,
        "window": "<string>"
      },
      "project_quota": {
        "requests": 123,
        "tokens": 123,
        "window": "<string>"
      }
    },
    "rollout": {
      "shadow": {
        "enabled": true,
        "sample_percent": 123,
        "targets": [
          "<string>"
        ]
      },
      "canary": {
        "enabled": true,
        "sample_percent": 123,
        "targets": [
          "<string>"
        ]
      },
      "rollback_on_spike": true
    },
    "refusal_replacement": {
      "mode": "<string>",
      "escalation_path": "<string>"
    }
  },
  "policy": {
    "policy_id": "<string>",
    "name": "<string>",
    "owner": "<string>",
    "description": "<string>",
    "rules": {
      "allowlist": [
        "<string>"
      ],
      "denylist": [
        "<string>"
      ],
      "redact": true,
      "rewrite_instead_of_refuse": true,
      "response_pattern": "<string>",
      "reason_codes": [
        "<string>"
      ],
      "flagged_categories": [
        "<string>"
      ]
    },
    "org_controls": {
      "project_keys": true,
      "user_quotas": true,
      "audit_logs": true,
      "data_classification": "<string>",
      "user_quota": {
        "requests": 123,
        "tokens": 123,
        "window": "<string>"
      },
      "project_quota": {
        "requests": 123,
        "tokens": 123,
        "window": "<string>"
      }
    },
    "rollout": {
      "shadow": {
        "enabled": true,
        "sample_percent": 123,
        "targets": [
          "<string>"
        ]
      },
      "canary": {
        "enabled": true,
        "sample_percent": 123,
        "targets": [
          "<string>"
        ]
      },
      "rollback_on_spike": true
    },
    "refusal_replacement": {
      "mode": "<string>",
      "escalation_path": "<string>"
    }
  },
  "scenario": {
    "categories": [
      "<string>"
    ]
  },
  "categories": [
    "<string>"
  ],
  "persist": true
}
'
{
  "decision": "<string>",
  "reason_code": "<string>",
  "triggered_categories": [
    "<string>"
  ],
  "rollout_mode": "<string>",
  "policy_id": "<string>"
}

Authorizations

Authorization
string
header
required

Use a JWT or API key as a Bearer token.

Body

application/json
config
object
policy
object
scenario
object
categories
string[]
persist
boolean

Response

Simulation result

decision
string
reason_code
string
triggered_categories
string[]
rollout_mode
string
policy_id
string