---
title: "Validate a policy without saving; no idempotency key required"
method: POST
path: "/api/v1/risk/policies/validate"
tags: ["Risk"]
---

# Validate a policy without saving; no idempotency key required

`POST /api/v1/risk/policies/validate`

## Request

- Base URL: `https://api.korala.ai`
- URL: `https://api.korala.ai/api/v1/risk/policies/validate`
- Auth: one of:
  - API key in header `X-API-Key`
  - `bearer` (a scheme the document does not define)

## Headers

- `Idempotency-Key` string
- `X-Risk-Mode` string
- `X-Korala-Mode` 'live' | 'test'

## Request body

- ValidateRiskPolicyDto
  - `definition` object, required
    - `schemaVersion` string: Policy format version. Omission denotes legacy version 1; unrelated to the published policy revision.
    - `inputs` object[], required
      - `key` string, required
      - `scope` 'subject' | 'current_context'
      - `derivedReuse` object
        - `profileId` string, uuid, required
        - `output` string, required
      - `verification` object
        - `stepType` string
        - `stepIndex` integer, required
        - `field` string, required
        - `transform` 'identity' | 'age_years'
        - `workflowDefinitionId` string, uuid, required
        - `workflowUpdatedAt` string, date-time, required
      - `label` string
      - `kind` 'text' | 'number' | 'boolean' | 'list' | 'country' | 'choice' | 'money' | 'date' | 'datetime'
      - `allowedValues` string[]
      - `currency` string
      - `decimalPlaces` integer
      - `unit` string
      - `itemType` 'string' | 'number' | 'boolean'
      - `type` 'string' | 'number' | 'boolean' | 'list', required
      - `evidenceKind` 'observed' | 'model_signal'
      - `requirement` 'required' | 'supporting'
      - `acceptedSources` string[], required
      - `maxAgeSeconds` integer, required
    - `applicability` object[]
      - `id` string, required
      - `all` object[], required
        - `fact` string, required
        - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
        - `value` union, required
          - string
          - number
          - boolean
          - union[]
            - union
              - …
    - `eligibility` object[]
      - `id` string, required
      - `reason` string, required
      - `all` object[], required
        - `fact` string, required
        - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
        - `value` union, required
          - string
          - number
          - boolean
          - union[]
            - union
              - …
    - `factors` object[], required
      - `id` string, required
      - `label` string, required
      - `match` 'first' | 'highest'
      - `weight` number
      - `defaultPoints` number
      - `cases` object[], required
        - `when` object, required
          - `fact` string, required
          - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
          - `value` union, required
            - string
            - number
            - boolean
            - union[]
              - …
        - `points` number, required
    - `aggregation` 'sum' | 'max'
    - `floor` number
    - `ceiling` number
    - `bands` object[], required
      - `id` string, required
      - `min` number, required
      - `effect` object, required
        - `decision` 'none' | 'review' | 'restrict' | 'reject'
        - `actions` string[]
    - `rules` object[], required
      - `id` string, required
      - `reason` string, required
      - `all` object[], required
        - `fact` string, required
        - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
        - `value` union, required
          - string
          - number
          - boolean
          - union[]
            - union
              - …
      - `forceBand` string
      - `effect` object, required
        - `decision` 'none' | 'review' | 'restrict' | 'reject'
        - `actions` string[]
    - `missingEvidence` 'awaiting_evidence' | 'review'
    - `reviewAfterSeconds` integer

## Response `200`

- RiskPolicyValidationDto
  - `valid` boolean, required
  - `errors` RiskPolicyValidationErrorDto[], required
    - `path` string, required
    - `message` string, required
  - `definition` object, nullable, required
    - `schemaVersion` string: Policy format version. Omission denotes legacy version 1; unrelated to the published policy revision.
    - `inputs` object[], required
      - `key` string, required
      - `scope` 'subject' | 'current_context'
      - `derivedReuse` object
        - `profileId` string, uuid, required
        - `output` string, required
      - `verification` object
        - `stepType` string
        - `stepIndex` integer, required
        - `field` string, required
        - `transform` 'identity' | 'age_years'
        - `workflowDefinitionId` string, uuid, required
        - `workflowUpdatedAt` string, date-time, required
      - `label` string
      - `kind` 'text' | 'number' | 'boolean' | 'list' | 'country' | 'choice' | 'money' | 'date' | 'datetime'
      - `allowedValues` string[]
      - `currency` string
      - `decimalPlaces` integer
      - `unit` string
      - `itemType` 'string' | 'number' | 'boolean'
      - `type` 'string' | 'number' | 'boolean' | 'list', required
      - `evidenceKind` 'observed' | 'model_signal'
      - `requirement` 'required' | 'supporting'
      - `acceptedSources` string[], required
      - `maxAgeSeconds` integer, required
    - `applicability` object[]
      - `id` string, required
      - `all` object[], required
        - `fact` string, required
        - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
        - `value` union, required
          - string
          - number
          - boolean
          - union[]
            - union
              - …
    - `eligibility` object[]
      - `id` string, required
      - `reason` string, required
      - `all` object[], required
        - `fact` string, required
        - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
        - `value` union, required
          - string
          - number
          - boolean
          - union[]
            - union
              - …
    - `factors` object[], required
      - `id` string, required
      - `label` string, required
      - `match` 'first' | 'highest', required
      - `weight` number, required
      - `defaultPoints` number
      - `cases` object[], required
        - `when` object, required
          - `fact` string, required
          - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
          - `value` union, required
            - string
            - number
            - boolean
            - union[]
              - …
        - `points` number, required
    - `aggregation` 'sum' | 'max', required
    - `floor` number, required
    - `ceiling` number, required
    - `bands` object[], required
      - `id` string, required
      - `min` number, required
      - `effect` object, required
        - `decision` 'none' | 'review' | 'restrict' | 'reject', required
        - `actions` string[], required
    - `rules` object[], required
      - `id` string, required
      - `reason` string, required
      - `all` object[], required
        - `fact` string, required
        - `operator` 'eq' | 'in' | 'contains' | 'gte' | 'gt' | 'lte' | 'lt' | 'eq_fact' | 'neq_fact', required
        - `value` union, required
          - string
          - number
          - boolean
          - union[]
            - union
              - …
      - `forceBand` string
      - `effect` object, required
        - `decision` 'none' | 'review' | 'restrict' | 'reject', required
        - `actions` string[], required
    - `missingEvidence` 'awaiting_evidence' | 'review', required
    - `reviewAfterSeconds` integer

---

[API](https://skmtc.dev/korala/apis/korala-public-api.md) · [All operations](https://skmtc.dev/korala/apis/korala-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/korala/apis/korala-public-api/revisions/5c4d7810c507?raw)
