---
title: "Rotate: store a new value as the next version"
method: POST
path: "/v1/secrets/{secret_id}/versions"
tags: ["Secrets"]
---

# Rotate: store a new value as the next version

`POST /v1/secrets/{secret_id}/versions`

## Request

- Base URL: `https://api.shardflux.dev`
- URL: `https://api.shardflux.dev/v1/secrets/{secret_id}/versions`
- Auth: HTTP bearer

The new version is used from the next session start; every older version’s value is erased in the same transaction (metadata kept). Values already injected into running processes are not recalled. Supports Idempotency-Key.

## Path parameters

- `secret_id` string, uuid, required

## Request body

- object
  - `value` string, required: UTF-8 text, at most 65536 bytes, no NUL characters. Write-only: never returned by any management API.

## Response `201`

Default Response

- object
  - `secret` object, required: Secret metadata. Values are write-only: no API returns them except the cell resolution endpoint.
    - `id` string, uuid, required: UUIDv7, lowercase canonical form.
    - `organization_id` string, uuid, required: UUIDv7, lowercase canonical form.
    - `project_id` string, uuid, nullable, required: UUIDv7, lowercase canonical form.
    - `scope` union, required
      - 'organization'
      - 'project'
    - `name` string, required: Environment variable name the value is injected as.
    - `description` string, required
    - `current_version` integer, required
    - `permissions` object, required
      - `allowed_project_ids` string[], nullable, required: Organization secrets: projects whose workspaces may use it (null = every project of the organization, [] = none). Always null for project secrets.
      - `allowed_workspace_ids` string[], nullable, required: Only these workspaces (null = any workspace of the allowed projects). Not inherited by forks.
      - `allowed_tools` string[], required: Tools that may receive the value at session start (the tool token must carry the tool too).
    - `created_by` object, required
      - `type` union, required
        - 'user'
        - 'api_key'
      - `id` string, uuid, required: UUIDv7, lowercase canonical form.
    - `created_at` string, date-time, required: RFC 3339 UTC timestamp with Z.
    - `updated_at` string, date-time, required: RFC 3339 UTC timestamp with Z.
    - `rotated_at` string, date-time, nullable, required: RFC 3339 UTC timestamp with Z.
    - `deleted_at` string, date-time, nullable, required: RFC 3339 UTC timestamp with Z.
  - `version` object, required
    - `secret_id` string, uuid, required: UUIDv7, lowercase canonical form.
    - `version` integer, required
    - `state` union, required: current: the value resolved at session start. destroyed: value erased (rotated or deleted); metadata kept for audit.
      - 'current'
      - 'destroyed'
    - `created_by` object, required
      - `type` union, required
        - 'user'
        - 'api_key'
      - `id` string, uuid, required: UUIDv7, lowercase canonical form.
    - `created_at` string, date-time, required: RFC 3339 UTC timestamp with Z.
    - `destroyed_at` string, date-time, nullable, required: RFC 3339 UTC timestamp with Z.
    - `destroyed_reason` union, required
      - 'rotated'
      - 'deleted'

## Other responses

- `4XX`: Default Response
- `5XX`: Default Response

---

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