---
title: "POST /v1alpha1/policies"
method: POST
path: "/v1alpha1/policies"
tags: ["PolicyService"]
---

# POST /v1alpha1/policies

`POST /v1alpha1/policies`

## Request

- Base URL: `http://localhost:4000`
- URL: `http://localhost:4000/v1alpha1/policies`
- Auth: HTTP bearer and API key in header `x-id-api-key`

Create a new Policy.

## Request body

- CreatePolicyRequest
  - `name` string: A human-readable name for the Policy.
  - `description` string: A human-readable description for the Policy.
  - `assignedTo` string: The requester application that this policy applies to.

## Response `200`

OK

- Policy: Identity Service Policy.
  - `id` string: A unique identifier for the Policy.
  - `name` string, required: A human-readable name for the Policy.
  - `description` string: A human-readable description for the Policy.
  - `assignedTo` string, required: The requester application that this Policy applies to.
  - `rules` Rule[], required: All the rules that apply to this Policy.
    - `id` string: A unique identifier for the Rule.
    - `name` string, required: A human-readable name for the Rule.
    - `description` string: A human-readable description for the Rule.
    - `policyId` string
    - `tasks` Task[], required: The tasks that this Rule applies to.
      - `id` string: A unique identifier for the Task.
      - `name` string: A human-readable name for the Task.
      - `description` string: A human-readable description for the Task.
      - `appId` string: An application ID for the Task.
      - `toolName` string: A tool name for the Task.
    - `action` 'RULE_ACTION_UNSPECIFIED' | 'RULE_ACTION_ALLOW' | 'RULE_ACTION_DENY', enum, required: The action applied for the rule when calling the specified tasks
    - `needsApproval` boolean, required: Need User Approval for this Rule.
    - `createdAt` string, date-time: CreatedAt records the timestamp of when the Rule was initially created
  - `createdAt` string, date-time: CreatedAt records the timestamp of when the Policy was initially created

## Other responses

- `default`: Default error response

## Changes

> 18 revisions in range; 7 not diffed.

- **2025-07-28** `63464ebf3f61`: 7 breaking, 12 info
  - the response property `assignedTo` became optional for the status `200`
  - the response property `name` became optional for the status `200`
  - the response property `rules` became optional for the status `200`
  - the response property `rules/items/action` became optional for the status `200`
  - …15 more

[Operation history](https://skmtc.dev/agntcy/apis/agntcy-identity-service-api/changes/v1alpha1/policies/post.md)

---

[API](https://skmtc.dev/agntcy/apis/agntcy-identity-service-api.md) - [All operations](https://skmtc.dev/agntcy/apis/agntcy-identity-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agntcy/apis/agntcy-identity-service-api/revisions/1dc8f8328648?raw)
