Projects
Project management
Projects
Project management
List projects
GET /api/v1/projectsReturns all projects the user has access to through their teams
Operation ID: listProjects · Authentication: Authorization: Bearer <token>
Responses
| Status | Description | Body |
|---|---|---|
200 | List of projects | object |
401 | Authentication required | Error |
Response body (200)
| Field | Type | Description |
|---|---|---|
projects | object[] |
Example
curl -X GET "https://api.keyenv.dev/api/v1/projects" \
-H "Authorization: Bearer $KEYENV_TOKEN"Create project
POST /api/v1/projectsCreates a new project within a team. Default environments (development, staging, production) are created automatically.
Operation ID: createProject · Authentication: Authorization: Bearer <token>
Request body
application/json (required)
| Field | Type | Required | Description |
|---|---|---|---|
team_id | string (uuid) | yes | |
name | string | yes |
Responses
| Status | Description | Body |
|---|---|---|
201 | Project created | Project |
400 | Invalid request | Error |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
429 | Plan limit exceeded | LimitError |
Response body (201)
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
team_id | string (uuid) | |
name | string | |
slug | string | |
created_at | string (date-time) |
Example
curl -X POST "https://api.keyenv.dev/api/v1/projects" \
-H "Authorization: Bearer $KEYENV_TOKEN" \
-H "Content-Type: application/json" \
-d '{"team_id":"00000000-0000-0000-0000-000000000000","name":"string"}'Get project
GET /api/v1/projects/{projectId}Returns project details including environments
Operation ID: getProject · Authentication: Authorization: Bearer <token>
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
Responses
| Status | Description | Body |
|---|---|---|
200 | Project details | object |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
404 | Resource not found | Error |
Example
curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}" \
-H "Authorization: Bearer $KEYENV_TOKEN"Update project
PATCH /api/v1/projects/{projectId}Updates project name
Operation ID: updateProject · Authentication: Authorization: Bearer <token>
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
Request body
application/json (required)
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes |
Responses
| Status | Description | Body |
|---|---|---|
200 | Project updated | Project |
400 | Invalid request | Error |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
404 | Resource not found | Error |
Response body (200)
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
team_id | string (uuid) | |
name | string | |
slug | string | |
created_at | string (date-time) |
Example
curl -X PATCH "https://api.keyenv.dev/api/v1/projects/{projectId}" \
-H "Authorization: Bearer $KEYENV_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Delete project
DELETE /api/v1/projects/{projectId}Soft deletes a project and all its environments and secrets
Operation ID: deleteProject · Authentication: Authorization: Bearer <token>
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
Responses
| Status | Description | Body |
|---|---|---|
204 | Project deleted | |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
404 | Resource not found | Error |
Example
curl -X DELETE "https://api.keyenv.dev/api/v1/projects/{projectId}" \
-H "Authorization: Bearer $KEYENV_TOKEN"