---
title: "Update a policy"
method: PATCH
path: "/api/v1/policies/{policyId}"
tags: ["Policies"]
---

# Update a policy

`PATCH /api/v1/policies/{policyId}`

## Request

- Base URL: `https://policyforge.co`
- URL: `https://policyforge.co/api/v1/policies/{policyId}`
- Auth: HTTP bearer

Update fields of an existing policy. Only provided fields will be updated. You can update the title, content, status, or hosting settings.

## Request body

- PolicyUpdateRequest
  - `title` string
  - `content` string
  - `status` 'draft' | 'published' | 'archived'
  - `hosting_enabled` boolean

## Response `200`

Policy updated

- PolicyDetailResponse
  - `id` string, uuid
  - `type` string
  - `policy_type` string: Alias of `type` (same value)
  - `title` string
  - `content` string
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `published_at` string, date-time, nullable
  - `effective_date` string, date, nullable
  - `status` string
  - `hosting_enabled` boolean
  - `hosted_url` string, uri
  - `url_slug` string

## Other responses

- `401`: Missing or invalid API key
- `404`: Resource not found
- `429`: Rate limit exceeded

---

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