---
title: "Save policy"
method: POST
path: "/api/policies/save"
tags: ["Policy Registry"]
---

# Save policy

`POST /api/policies/save`

Create or update a community-contributed policy. Requires authentication. Registry-sourced and pending-review policies cannot be edited (returns 409). Updates automatically create a revision record.

## Request body

- object
  - `policy_id` string, required — Lowercase alphanumeric with underscores
  - `version` string, required
  - `name` string, required
  - `category` 'regulation' | 'standard', required
  - `enforcement` 'must' | 'should' | 'may', required
  - `policy` string, required
  - `description` string
  - `jurisdictions` string[]
  - `region_aliases` object
  - `policy_categories` string[]
  - `channels` string[]
  - `effective_date` string
  - `sunset_date` string
  - `governance_domains` string[]
  - `source_url` string — Must use http:// or https://
  - `source_name` string
  - `guidance` string
  - `exemplars` object
    - `pass` object[]
      - `scenario` string, required
      - `explanation` string, required
    - `fail` object[]
      - `scenario` string, required
      - `explanation` string, required
  - `ext` object

## Response `200`

Policy saved

- object
  - `success` true, required
  - `message` string, required
  - `policy_id` string, required
  - `revision_number` integer, nullable, required

## Other responses

- `400` — Validation error
- `401` — Authentication required
- `409` — Cannot edit registry-sourced or pending policy
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/adcontextprotocol/apis/agenticadvertising-org-registry-api.md) · [All operations](https://skmtc.net/adcontextprotocol/apis/agenticadvertising-org-registry-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/adcontextprotocol/agenticadvertising-org-registry-api/versions/9ea7fedf54c0/schema)
