> For the complete documentation index, see [llms.txt](/llms.txt).
> A full single-fetch corpus is available at [llms-full.txt](/llms-full.txt).
---
title: "Create a secret"
description: "Create a secret. The plaintext value is encrypted at rest and never returned by any endpoint — only its masked form."
method: "POST"
endpoint: "/api/v1/secrets"
order: 2
last_verified: 2026-07-27
---



`POST /api/v1/secrets`

Create a secret. The plaintext value is encrypted at rest and never returned by any endpoint — only its masked form.


  ### Body parameters

  - `name` _string_ **required** — The secret's name, e.g. OPENAI_API_KEY.
  - `secret` _string_ **required** — The plaintext value. Write-only: no response ever echoes it back.
  - `project_id` _string_ **required** — The owning project's UUID.
  - `secret_type` _string_ **required** — One of api_key, database_url, oauth_token, ssh_key, certificate, other.
  - `environment_id` _string_ — Scope the secret to a single environment. Omit to make it available in every environment.



  ### Request example


```bash
curl -X POST https://api.agnt5.com/api/v1/secrets \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "OPENAI_API_KEY",
    "secret": "sk-...",
    "project_id": "b6f1a3e2-9c4d-4f7a-8e2b-1a2b3c4d5e6f",
    "secret_type": "api_key"
  }'
```

```javascript
fetch('https://api.agnt5.com/api/v1/secrets', {
  method: 'POST',
  headers: { 'X-API-KEY': apiKey, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'OPENAI_API_KEY',
    secret: 'sk-...',
    project_id: projectId,
    secret_type: 'api_key'
  })
})
```




