secrets API is deliberately minimal. Secret values are
never returned in any response, ever. The API lets you create,
list metadata for, rotate, and delete secrets, and it lets
integrations attach secrets by reference. Decryption happens
only inside the orchestrator process at the moment of use.
If you find yourself wanting an endpoint that reveals a secret
value, you are doing the wrong thing. Fetch the value in the
process that needs it, through the usual integration flow, not
through this API.
Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /v1/companies/{cid}/secrets | List secret metadata |
POST | /v1/companies/{cid}/secrets | Create or update a secret |
GET | /v1/companies/{cid}/secrets/{name} | Get one secret’s metadata |
POST | /v1/companies/{cid}/secrets/{name}/rotate | Rotate a secret |
DELETE | /v1/companies/{cid}/secrets/{name} | Delete a secret |
The secret metadata object
value field. Ever.
Listing secrets
category—api_key,oauth_token,mtls_cert,webhook_secretintegrationId— attached to a specific integration
Creating a secret
- The
valueis write-only. It goes in, encrypted with the master key, and never comes back out. - If a secret with the same name already exists, this endpoint
overwrites it and returns the new metadata with an updated
rotatedAt. - The response does not include the value. It includes only the metadata.
POST /v1/secrets over plain HTTP unless the host is
localhost.
Rotating a secret
Rotation is the same as create-with-the-same-name, but with a cleaner verb and a 24-hour grace window for the old value:- New runs use the new value
- Runs that started before the rotation continue to use the old value until they finish
- The old value is deleted at the end of the window
Deleting a secret
secret_in_use. Remove the integration
first.
Integration slots
Templates and Clipmart companies use “slots”: placeholders where a secret is expected but not yet provided. When you install a template, the import flow prompts you to fill in each slot by posting to/v1/secrets with the slot name. The
orchestrator tracks which slots are empty and blocks the
company from running workflows until all required slots are
filled.
List empty slots:
Master key
The master key itself is not accessible through this API at all. It is managed at the filesystem or secret-manager layer via theMASTER_KEY_SOURCE env var. See
deploy/secrets for rotation procedures.
Auth and scopes
Secret endpoints require theadmin scope or a
company-scoped write token (company:<id>:write). Plain
write is not enough, because secret values are sensitive and
the broader write scope allows touching everything else in
the instance.
Webhooks
| Event | When |
|---|---|
secret.created | New secret or overwritten |
secret.rotated | Explicit rotation |
secret.deleted | Secret deleted |
secret.used | Aggregated weekly; not per-use |
Next
- Deploy/Secrets — the master key and the secret store at the infrastructure layer
- Companies — the scope that owns every secret
- Authentication — the scopes required for secret operations