---
title: "Create a Launch policy"
method: POST
path: "/workspaces/{workspace}/admin/policies"
tags: ["LaunchPolicy"]
---

# Create a Launch policy

`POST /workspaces/{workspace}/admin/policies`

## Request

- Base URL: `https://plainrouter.com/api/v1`
- URL: `https://plainrouter.com/api/v1/workspaces/{workspace}/admin/policies`
- Auth: HTTP bearer

Read or maintain versioned naming and UTM policies in the authorized workspace. Policies apply to plans without submitting provider writes.

## Path parameters

- `workspace` integer, required

## Request body

- StoreLaunchPolicyRequest
  - `kind` 'utm' | 'naming', required
  - `name` string, required
  - `body` string[], required

## Response `201`

- object
  - `policy` unknown[], required
    - unknown

## Other responses

- `401`: Invalid or missing Server secret.
- `404`: A missing workspace returns the api_route_not_found envelope.
- `422`: JSON booleans in integer inputs, including workspace selectors, return message plus errors mapping field names to arrays of messages. Numeric strings retain their existing validation and coercion.

---

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