Skip to content

Workspaces API ​

Workspaces are the operational containers within an organization. Each workspace contains projects, members, integrations, and budget settings. Workspaces belong to an Organization and inherit its shared configurations.

TIP

For organization-level management (members, invitations, budgets, integrations), see the Organizations API.

Create Workspace ​

http
POST /api/v1/workspaces
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "My Team",
  "organization_id": "uuid",
  "description": "Product engineering team",
  "budget_monthly_limit_usd": 500,
  "budget_alert_threshold": 0.8
}

Response 201 Created

json
{
  "id": "uuid",
  "name": "My Team",
  "workspace_key": "my-team",
  "description": "Product engineering team",
  "owner_id": "uuid",
  "budget_monthly_limit_usd": 500.0,
  "budget_alert_threshold": 0.8,
  "created_at": "2026-01-01T00:00:00Z"
}

List Workspaces ​

Returns all workspaces the current user is a member of.

http
GET /api/v1/workspaces
Authorization: Bearer <token>

Get Workspace ​

http
GET /api/v1/workspaces/{workspace_id}
Authorization: Bearer <token>

Update Workspace ​

Requires admin role or higher.

http
PUT /api/v1/workspaces/{workspace_id}
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Renamed Team",
  "budget_monthly_limit_usd": 1000
}

Members ​

List Members ​

http
GET /api/v1/workspaces/{workspace_id}/members
Authorization: Bearer <token>

Response 200 OK

json
[
  {
    "user_id": "uuid",
    "user_name": "Alice",
    "user_email": "alice@example.com",
    "role": "admin",
    "joined_at": "2026-01-01T00:00:00Z"
  }
]

Add Member ​

Requires admin role. Adds an existing user by email.

http
POST /api/v1/workspaces/{workspace_id}/members
Authorization: Bearer <token>
Content-Type: application/json

{
  "email": "bob@example.com",
  "role": "developer"
}

Change Role ​

Requires admin role. Only the owner can change admin roles.

http
PUT /api/v1/workspaces/{workspace_id}/members/{member_user_id}
Authorization: Bearer <token>
Content-Type: application/json

{ "role": "viewer" }

Remove Member ​

http
DELETE /api/v1/workspaces/{workspace_id}/members/{member_user_id}
Authorization: Bearer <token>

Transfer Ownership ​

Only the current owner can transfer ownership.

http
POST /api/v1/workspaces/{workspace_id}/transfer-ownership
Authorization: Bearer <token>
Content-Type: application/json

{ "new_owner_id": "uuid" }

Audit Logs ​

Requires admin role. Returns paginated audit log entries.

http
GET /api/v1/workspaces/{workspace_id}/audit-logs?page=1&page_size=20
Authorization: Bearer <token>

Query Parameters

ParameterTypeDescription
actionstringFilter by action (e.g. project.created)
actor_idUUIDFilter by actor
resource_typestringFilter by resource type
start_datedatetimeStart of date range
end_datedatetimeEnd of date range
pageintPage number (default 1)
page_sizeintItems per page (default 20)

Response 200 OK

json
{
  "total": 150,
  "page": 1,
  "page_size": 20,
  "items": [
    {
      "id": "uuid",
      "actor_type": "human",
      "actor_id": "uuid",
      "action": "project.created",
      "resource_type": "project",
      "resource_id": "uuid",
      "detail": "Created project 'My App'",
      "created_at": "2026-01-01T00:00:00Z"
    }
  ]
}

Forgexa — AI Software Factory