---
title: "Update part of the AI policy"
method: PATCH
path: "/v1/ai/policy"
tags: ["AI Policy"]
---

# Update part of the AI policy

`PATCH /v1/ai/policy`

## Request

- Base URL: `https://api.talonic.com`
- URL: `https://api.talonic.com/v1/ai/policy`
- Auth: HTTP bearer

Partial update. Omitted fields keep their current value, and inside the
override maps (`model_substitutions`, `default_models`,
`model_classes`, `operation_classes`, `features`) omitted keys survive
too. Sending `null` as a map value removes that single override and
restores the platform default for it.

`status` defaults to the policy's current status (or `active` when
none is stored), so patching an active policy keeps it active and the
satisfiability gate binds exactly as it does on PUT. The same camelCase
rule applies to values inside `model_classes` and to `features` keys.

## Request body

- object: Same fields as PUT /v1/ai/policy; every field optional, omissions preserved.

## Response `200`

The saved version plus the resulting effective policy view (the GET response body).

## Other responses

- `400`: The policy was refused and nothing was stored. Same error contract as PUT.
- `401`: Missing or invalid API key.
- `403`: The API key does not have the required scope.
- `429`: Daily rate limit exceeded.

---

[API](https://skmtc.dev/talonic/apis/talonic-api.md) · [All operations](https://skmtc.dev/talonic/apis/talonic-api/llms.txt) · [OpenAPI document](https://skmtc.dev/talonic/apis/talonic-api/revisions/678fe5f8c9c3?raw)
