Skip to content

Categories

Categories define the type and format of a key (e.g. “OpenAI API”, “AWS Credentials”). Each category has a key type that determines how its entries are stored and displayed.

{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"userId": "user_abc123",
"name": "OpenAI API",
"keyType": "simple",
"envVarName": "OPENAI_API_KEY",
"icon": "openai",
"description": "OpenAI API key for GPT models",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
ValueDescription
simpleSingle environment variable (string)
groupMultiple named fields (e.g. AWS access key + secret)

GET /api/categories

Required scope: categories:read

Returns all categories owned by the authenticated user.

HTTP/1.1 200 OK
[
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"userId": "user_abc123",
"name": "OpenAI API",
"keyType": "simple",
"envVarName": "OPENAI_API_KEY",
"icon": "openai",
"description": "OpenAI API key for GPT models",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]

POST /api/categories
Content-Type: application/json

Required scope: categories:write

FieldTypeRequiredDescription
namestringyesDisplay name (e.g. “OpenAI API”)
keyTypesimple | groupyesKey type
envVarNamestringyes for simpleEnvironment variable name
iconstringnoSimple Icons slug (e.g. "openai")
descriptionstringnoOptional description
{
"name": "OpenAI API",
"keyType": "simple",
"envVarName": "OPENAI_API_KEY",
"icon": "openai",
"description": "OpenAI API key for GPT models"
}
HTTP/1.1 201 Created
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"userId": "user_abc123",
"name": "OpenAI API",
"keyType": "simple",
"envVarName": "OPENAI_API_KEY",
"icon": "openai",
"description": "OpenAI API key for GPT models",
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-01-15T10:00:00.000Z"
}

GET /api/categories/{id}

Required scope: categories:read

ParameterDescription
idCategory UUID
HTTP/1.1 200 OK
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "OpenAI API",
...
}

Returns 404 if the category does not exist or is not owned by the authenticated user.


PUT /api/categories/{id}
Content-Type: application/json

Required scope: categories:write

All fields are optional — include only the fields you want to update.

{
"name": "OpenAI API (Production)",
"description": "Production OpenAI key"
}
HTTP/1.1 200 OK
{
"id": "3fa85f64-...",
"name": "OpenAI API (Production)",
...
}

DELETE /api/categories/{id}

Required scope: categories:write

Deletes the category and all entries under it (cascade delete).

HTTP/1.1 204 No Content

Returns 404 if the category does not exist or is not owned by the authenticated user.