---
title: "Create"
method: POST
path: "/api/v1/policies"
tags: ["Policy"]
---

# Create

`POST /api/v1/policies`

Create a policy.

## Request body

- C1ApiPolicyV1CreatePolicyRequest — The CreatePolicyRequest message is used to create a new policy.
  - `description` string — The description of the new policy.
  - `displayName` string, required — The display name of the new policy.
  - `policySteps` object — The map of policy type to policy steps. The key is the stringified version of the enum. See other policies for examples.
  - `policyType` 'POLICY_TYPE_UNSPECIFIED' | 'POLICY_TYPE_GRANT' | 'POLICY_TYPE_REVOKE' | 'POLICY_TYPE_CERTIFY' | 'POLICY_TYPE_ACCESS_REQUEST' | 'POLICY_TYPE_PROVISION' — The enum of the policy type.
  - `postActions` C1ApiPolicyV1PolicyPostActions[], nullable — Actions to occur after a policy finishes. As of now this is only valid on a certify policy to remediate a denied certification immediately.
    - `certifyRemediateImmediately` boolean, nullable — ONLY valid when used in a CERTIFY Ticket Type: Causes any deprovision or change in a grant to be applied when Certify Ticket is closed. This field is part of the `action` oneof. See the documentation for `c1.api.policy.v1.PolicyPostActions` for more details.
  - `reassignTasksToDelegates` boolean — Deprecated. Use setting in policy step instead
  - `rules` C1ApiPolicyV1Rule[], nullable — The rules field.
    - `condition` string — The condition field.
    - `policyKey` string — This is a reference to a list of policy steps from `policy_steps`

## Response `200`

The CreatePolicyResponse message contains the created policy object.

- C1ApiPolicyV1CreatePolicyResponse — The CreatePolicyResponse message contains the created policy object.
  - `policy` C1ApiPolicyV1Policy — A policy describes the behavior of the ConductorOne system when processing a task. You can describe the type, approvers, fallback behavior, and escalation processes.
    - `createdAt` string, date-time
    - `deletedAt` string, date-time
    - `description` string — The description of the Policy.
    - `displayName` string — The display name of the Policy.
    - `id` string — The ID of the Policy.
    - `policySteps` object — A map of string(policy type) to steps in a policy. This structure is leftover from a previous design, and should only ever have one key->value set.
    - `policyType` 'POLICY_TYPE_UNSPECIFIED' | 'POLICY_TYPE_GRANT' | 'POLICY_TYPE_REVOKE' | 'POLICY_TYPE_CERTIFY' | 'POLICY_TYPE_ACCESS_REQUEST' | 'POLICY_TYPE_PROVISION' — Indicates the type of this policy. Can also be used to get the value from policySteps.
    - `postActions` C1ApiPolicyV1PolicyPostActions[], nullable — An array of actions (ordered) to take place after a policy completes processing.
      - `certifyRemediateImmediately` boolean, nullable — ONLY valid when used in a CERTIFY Ticket Type: Causes any deprovision or change in a grant to be applied when Certify Ticket is closed. This field is part of the `action` oneof. See the documentation for `c1.api.policy.v1.PolicyPostActions` for more details.
    - `reassignTasksToDelegates` boolean — Deprecated. Use setting in policy step instead
    - `rules` C1ApiPolicyV1Rule[], nullable — The rules field.
      - `condition` string — The condition field.
      - `policyKey` string — This is a reference to a list of policy steps from `policy_steps`
    - `systemBuiltin` boolean — Whether this policy is a builtin system policy. Builtin system policies cannot be edited.
    - `updatedAt` string, date-time

## Changes

- **2025-09-08** `d8ad3d78289e` — 4 info
  - added the new optional request property `policySteps/additionalProperties/steps/items/wait/duration`
  - added the new optional request property `policySteps/additionalProperties/steps/items/wait/untilTime`
  - added the optional property `policy/policySteps/additionalProperties/steps/items/wait/duration` to the response with the `200` status
  - added the optional property `policy/policySteps/additionalProperties/steps/items/wait/untilTime` to the response with the `200` status
- **2025-08-20** `182cb087dfa4` — 2 warning, 2 info
  - removed the request property `policySteps/additionalProperties/steps/items/form/form/tenantId`
  - removed the optional property `policy/policySteps/additionalProperties/steps/items/form/form/tenantId` from the response with the `200` status
  - added the new optional request property `policySteps/additionalProperties/steps/items/form/form/fields/items/int64Field`
  - added the optional property `policy/policySteps/additionalProperties/steps/items/form/form/fields/items/int64Field` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/conductorone/apis/c1-api/changes/api/v1/policies/post.md)

---

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