Skip to main content
Portkey’s guardrails also cover /v1/decisions, the typed-judgment endpoint. TypeSafe’s Jev is the first supported provider, with more planned. This lets you screen the content a decision is made about before it reaches the model, the same way you would for a chat or embedding request.

Why Use Guardrails for Decisions?

A decisions request has three parts: model, questions, and state. Only state is caller-supplied content — model and questions (including any criteria) are your own application’s instructions. Guardrails scan state alone, so they check what a user or upstream system fed into the judgment, never your prompt design. This matters because state often carries the same kind of untrusted content you’d otherwise send to a chat model — support tickets, form submissions, extracted document text — before it’s judged, scored, or classified. Guardrails let you catch PII, prompt injection, or policy violations in that content before the judgment call is made.

How It Works

Guardrails for decisions run only at the before-request stage, on state only:
  1. Your application sends state, model, and questions to /v1/decisions.
  2. Portkey’s before-request guardrails scan state — never model, questions, or nested criteria.
  3. If all checks pass, the request (with state possibly redacted by a mutator) is forwarded to the provider.
  4. If a check fails, the configured guardrail action applies: log only, soft-deny with a 200, or hard-deny with a 446.
There are no after-request (output) guardrails on /v1/decisions. A successful answer is a typed judgment — a choice, a score, or a probability — with no free text to scan, so only input_guardrails apply. This mirrors Guardrails for Embeddings.

Redacting state

Mutator guardrails (for example, PII redaction) can rewrite state before it’s forwarded:
  • If state was a plain string, the redacted text replaces it directly.
  • If state was a JSON object or array, the redacted text is parsed back into JSON before being written back.
  • If a mutator’s output is no longer valid JSON for an object/array state, Portkey keeps the original state unchanged rather than forwarding corrupted content.

Response When a Guardrail Fails

A hard deny (deny: true, no soft-deny) returns 446 with the standard guardrail error shape:
A soft deny (deny: true, softDeny200: true) returns 200 with an empty answers map instead of an OpenAI-style error envelope, keeping the response shape consistent with a normal decisions response:

Setting Up Guardrails for Decisions

1. Create a Guardrail

  • Navigate to the Guardrails page and click Create.
  • Select a check that supports beforeRequestHook (for example, PII Detection, Regex Match, Moderate Content).
  • Configure the check parameters and set the action for failed checks (log, soft-deny, or hard-deny).
  • Save the guardrail to get its ID.
Only guardrails that support beforeRequestHook run on /v1/decisions. Guardrails scoped to afterRequestHook only are skipped for this endpoint.

2. Add the Guardrail to Your Config

3. Use the Config with a Decisions Request

cURL

Learn More

Guardrails Overview

Create guardrails, configure actions, attach to requests

Supported Endpoints & Capabilities

Where guardrails run across the gateway

TypeSafe (Jev)

Provider setup and quick start for /v1/decisions

List of Guardrail Checks

All built-in and partner checks

Portkey is now PRISMA AIRS AI Gateway. See it in action.

Contact Us
Last modified on September 26, 2026