---
title: "Create a secret."
method: POST
path: "/secrets"
tags: ["Secret Operations"]
---

# Create a secret.

`POST /secrets`

## Request

- Base URL: `https://replace-with-account.api.decodable.co/v1alpha2`
- URL: `https://replace-with-account.api.decodable.co/v1alpha2/secrets`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/decodable/apis/decodable-control-plane/docs/secrets/post.ts> (a function with typed inputs; its response is checked against the schema)

Requires permission matching: `secret:write:default.<name>`.

## Request body

- SecretCommon: Common secret fields in requests and responses.
  - `name` string: The secret name.
  - `description` string: The secret description.

## Response `201`

A secret creation response.

- Secret: Common secret fields in requests and responses.
  - `id` string, required: An opaque ID, created by Decodable, that uniquely identifies a resource.
  - `name` string, required: The secret name.
  - `description` string: The secret description.
  - `create_time` string, date-time: The date and time the resource was created.
  - `update_time` string, date-time: The date and time the resource was updated.

## Other responses

- `400`: An invalid request was received.
- `403`: Access denied: requesting user lacks a required permission.
- `409`: A conflicting resource already exists.
- `default`: An error has occurred.

---

[API](https://skmtc.dev/decodable/apis/decodable-control-plane.md) - [All operations](https://skmtc.dev/decodable/apis/decodable-control-plane/llms.txt) - [OpenAPI document](https://skmtc.dev/decodable/apis/decodable-control-plane/revisions/9718a3019da8?raw)
