---
title: "Create Authzen Policy"
method: POST
path: "/api/v1/apps/{app_id}/authzen_policies"
tags: ["AuthZEN Policies"]
---

# Create Authzen Policy

`POST /api/v1/apps/{app_id}/authzen_policies`

## Request

- Base URL: `https://example.conductor.one`
- URL: `https://example.conductor.one/api/v1/apps/{app_id}/authzen_policies`
- Auth: HTTP bearer and OAuth 2
  - Client credentials
  - Token URL: `/auth/v1/token`

CreateAuthzenPolicy validates the CEL syntax (requiring a bool result)
 and stores a new, immutable policy revision for the app. The revision
 has no effect until a server's active_policy_id is set to it via
 Update.

## Path parameters

- `app_id` string, required: App identifier.

## Request body

- C1ApiAuthzenV1AuthzenServerServiceCreateAuthzenPolicyRequestInput: AuthzenServerServiceCreateAuthzenPolicyRequest creates a new CEL policy revision for an app. This message contains a oneof named engine. Only a single field of the following list may be set at a time: - cel
  - `cel` C1ApiAuthzenV1AuthzenCelPolicy: AuthzenCelPolicy holds the CEL source for a policy revision.
    - `environment` string: The CEL environment name+version this expression was validated against (e.g. "authzen_policy/v1"). Set by the server; not accepted from callers.
    - `expression` string: CEL expression, evaluated against `environment`. Validated for syntax and required to yield bool on create; invalid or non-bool CEL is rejected.
  - `description` string: Free-text description of what this revision changes or is for.
  - `displayName` string: Display name for the policy revision.

## Response `200`

AuthzenServerServiceCreateAuthzenPolicyResponse returns the newly created
 policy revision.

- C1ApiAuthzenV1AuthzenServerServiceCreateAuthzenPolicyResponse: AuthzenServerServiceCreateAuthzenPolicyResponse returns the newly created policy revision.
  - `authzenPolicy` C1ApiAuthzenV1AuthzenPolicy: AuthzenPolicy is one immutable CEL policy revision scoped to an app. A revision is never edited in place; activate it by setting a server's active_policy_id. This message contains a oneof named engine. Only a single field of the following list may be set at a time: - cel
    - `appId` string: App identifier.
    - `cel` C1ApiAuthzenV1AuthzenCelPolicy: AuthzenCelPolicy holds the CEL source for a policy revision.
      - `environment` string: The CEL environment name+version this expression was validated against (e.g. "authzen_policy/v1"). Set by the server; not accepted from callers.
      - `expression` string: CEL expression, evaluated against `environment`. Validated for syntax and required to yield bool on create; invalid or non-bool CEL is rejected.
    - `createdAt` string, date-time, nullable
    - `createdByUserId` string: The ID of the user who created this revision.
    - `description` string: Free-text description of what this revision changes or is for.
    - `displayName` string: Display name for the policy revision.
    - `id` string: Policy identifier.

## Changes

- **2026-10-06** `918a4e749f56`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/conductorone/apis/c1-api/changes/api/v1/apps/:app_id/authzen_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/fe943bedf41b?raw)
