---
title: "Update policy"
method: PATCH
path: "/v2/policies/{policy_id}"
tags: ["Policies"]
---

# Update policy

`PATCH /v2/policies/{policy_id}`

Partially updates an existing policy. Only provided fields are updated.

## Path parameters

- `policy_id` string, required — The ID of the policy

## Request body

- object
  - `description` string
  - `display_name` string
  - `enabled` boolean
  - `evaluators` EvaluatorRef[]
    - `execute_on` 'input' | 'output' | 'both', required
    - `id` string, required
    - `is_guardrail` boolean
    - `options` object
    - `sample_rate` number, double
    - `timeout` integer
  - `limits` Limits
    - `budget` BudgetLimit
      - `amount` number, double, required
      - `currency` 'usd', required
      - `period` 'hour' | 'day' | 'week' | 'month', required
    - `requests` RequestLimit
      - `amount` integer, required
      - `period` 'hour' | 'day' | 'week' | 'month', required
    - `tokens` TokenLimit
      - `amount` integer, required
      - `period` 'hour' | 'day' | 'week' | 'month', required
  - `models_config` ModelsConfig
    - `mode` 'fallback' | 'latency_based' | 'weighted' | 'round_robin', required
    - `models` ModelRef[], nullable, required
      - `display_name` string
      - `integration_id` string
      - `model` string, required
      - `weight` number, double
  - `project_id` string — Optional project ID to assign the policy to.
  - `retry_config` PolicyRetryConfig
    - `count` integer, required
    - `on_codes` integer[], nullable
  - `timeout` integer

## Response `200`

Policy updated successfully

- object
  - `_id` string, required
  - `created_at` string, date-time, required
  - `created_by_id` string, required
  - `description` string
  - `display_name` string, required
  - `enabled` boolean, required
  - `evaluators` EvaluatorRef[], nullable
    - `execute_on` 'input' | 'output' | 'both', required
    - `id` string, required
    - `is_guardrail` boolean
    - `options` object
    - `sample_rate` number, double
    - `timeout` integer
  - `limits` Limits
    - `budget` BudgetLimit
      - `amount` number, double, required
      - `currency` 'usd', required
      - `period` 'hour' | 'day' | 'week' | 'month', required
    - `requests` RequestLimit
      - `amount` integer, required
      - `period` 'hour' | 'day' | 'week' | 'month', required
    - `tokens` TokenLimit
      - `amount` integer, required
      - `period` 'hour' | 'day' | 'week' | 'month', required
  - `models_config` ModelsConfig
    - `mode` 'fallback' | 'latency_based' | 'weighted' | 'round_robin', required
    - `models` ModelRef[], nullable, required
      - `display_name` string
      - `integration_id` string
      - `model` string, required
      - `weight` number, double
  - `project_id` string, required
  - `retry_config` PolicyRetryConfig
    - `count` integer, required
    - `on_codes` integer[], nullable
  - `slug` string, required
  - `timeout` integer, required
  - `updated_at` string, date-time, required
  - `updated_by_id` string, required

## Other responses

- `400` — Bad request
- `404` — Policy not found
- `409` — Slug conflict

---

[API](https://skmtc.net/orq-ai/apis/orq-ai-api.md) · [All operations](https://skmtc.net/orq-ai/apis/orq-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/orq-ai/orq-ai-api/revisions/2cd7e7f7bcb4/schema)
