---
title: "Create a new policy"
method: POST
path: "/policies"
tags: ["Policies"]
---

# Create a new policy

`POST /policies`

Creates a new policy. The author_id and last_updated_by are set from the JWT token automatically.

## Request body

- PolicyCreateRequest
  - `title` string, required — Policy title
  - `content_html` string, required — Full policy content as HTML
  - `status` string, required — Initial policy status
  - `tags` string[] — Categorization tags (must be from the allowed tag list)
  - `next_review_date` string, date-time, nullable — Scheduled next review date
  - `assigned_reviewer_ids` integer[] — User IDs to assign as reviewers
  - `is_demo` boolean — Mark as a demo policy

## Response `201`

Policy created successfully

- object
  - `message` string
  - `data` PolicyWithReviewers — A policy record with computed assigned reviewer IDs
    - `id` integer — Auto-generated primary key
    - `organization_id` integer — Tenant organization ID
    - `title` string — Policy title
    - `content_html` string — Full policy content as HTML
    - `status` string — Policy lifecycle status
    - `tags` string[] — Categorization tags
    - `next_review_date` string, date-time, nullable — Scheduled next review date
    - `author_id` integer — User ID of the policy creator
    - `last_updated_by` integer — User ID of the last editor
    - `last_updated_at` string, date-time — Timestamp of last update
    - `review_status` 'pending_review' | 'approved' | 'changes_requested' | 'null', nullable — Current review workflow status
    - `review_comment` string, nullable — Most recent review comment
    - `reviewed_by` integer, nullable — User ID of the last reviewer
    - `reviewed_at` string, date-time, nullable — Timestamp of last review action
    - `is_demo` boolean — Whether this is a demo/seed policy
    - `created_at` string, date-time — Row creation timestamp (set by database)
    - `assigned_reviewer_ids` integer[] — User IDs of assigned reviewers (aggregated from mapping table)

## Other responses

- `500` — unresolved $ref
- `503` — Service unavailable — policy creation failed

---

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