Workspace API
Manage projects, tasks, statuses, and members.
Authentication
Authenticate with a personal access token (gcp_) created from your account settings. Pass the token as a Bearer token and include an X-Workspace-Id header to specify the target workspace:
curl -H "Authorization: Bearer gcp_YOUR_TOKEN" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
https://groupchat.ai/api/v1/tasksPersonal access tokens are tied to your user account and inherit your role and project access in the workspace.
/api/v1/projects
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Query Parameters
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://loading/api/v1/projects"[
{
"id": "string",
"workspaceId": "string",
"name": "string",
"description": "string",
"color": "string",
"icon": "string",
"emoji": "string",
"order": 0,
"widgetEnabled": true,
"widgetVisibility": "string"
}
]{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/projects
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/projects" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{
"id": "string",
"workspaceId": "string",
"name": "string",
"description": "string",
"color": "string",
"icon": "string",
"emoji": "string",
"order": 0,
"widgetEnabled": true,
"widgetVisibility": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/projects
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://loading/api/v1/projects" \ -H "Content-Type: application/json" \ -d '{ "id": "string" }'{
"id": "string",
"workspaceId": "string",
"name": "string",
"description": "string",
"color": "string",
"icon": "string",
"emoji": "string",
"order": 0,
"widgetEnabled": true,
"widgetVisibility": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/projects
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X DELETE "https://loading/api/v1/projects" \ -H "Content-Type: application/json" \ -d '{ "id": "string" }'{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/statuses
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Query Parameters
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://loading/api/v1/statuses"[
{
"id": "string",
"projectId": "string",
"title": "string",
"type": "todo",
"order": 0
}
]{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/statuses
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/statuses" \ -H "Content-Type: application/json" \ -d '{ "projectId": "string", "title": "string", "type": "todo" }'{
"id": "string",
"projectId": "string",
"title": "string",
"type": "todo",
"order": 0
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/statuses
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://loading/api/v1/statuses" \ -H "Content-Type: application/json" \ -d '{ "id": "string" }'{
"id": "string",
"projectId": "string",
"title": "string",
"type": "todo",
"order": 0
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/statuses
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X DELETE "https://loading/api/v1/statuses" \ -H "Content-Type: application/json" \ -d '{ "id": "string", "action": "move" }'{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/tasks
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Query Parameters
"true" | "false"Response Body
application/json
application/json
application/json
curl -X GET "https://loading/api/v1/tasks"[
{
"id": "string",
"workspaceId": "string",
"projectId": "string",
"stageId": "string",
"title": "string",
"description": "string",
"ownerId": "string",
"creatorId": "string",
"completed": true,
"completedAt": 0,
"dueDate": 0,
"dueTime": 0,
"estimate": 0,
"order": 0,
"createdAt": 0,
"updatedAt": 0,
"lastActivityAt": 0,
"source": "manual",
"blockedByTaskId": "string",
"autoAssignOnUnblockUserId": "string",
"autoAssignOnUnblockAgentType": "cursor",
"autoAssignOnUnblockAgentIntegrationId": "string"
}
]{
"error": "string"
}{
"error": "string"
}/api/v1/tasks
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/tasks" \ -H "Content-Type: application/json" \ -d '{ "projectId": "string", "stageId": "string", "title": "string" }'{
"id": "string",
"workspaceId": "string",
"projectId": "string",
"stageId": "string",
"title": "string",
"description": "string",
"ownerId": "string",
"creatorId": "string",
"completed": true,
"completedAt": 0,
"dueDate": 0,
"dueTime": 0,
"estimate": 0,
"order": 0,
"createdAt": 0,
"updatedAt": 0,
"lastActivityAt": 0,
"source": "manual",
"blockedByTaskId": "string",
"autoAssignOnUnblockUserId": "string",
"autoAssignOnUnblockAgentType": "cursor",
"autoAssignOnUnblockAgentIntegrationId": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/tasks
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://loading/api/v1/tasks" \ -H "Content-Type: application/json" \ -d '{ "id": "string" }'{
"id": "string",
"workspaceId": "string",
"projectId": "string",
"stageId": "string",
"title": "string",
"description": "string",
"ownerId": "string",
"creatorId": "string",
"completed": true,
"completedAt": 0,
"dueDate": 0,
"dueTime": 0,
"estimate": 0,
"order": 0,
"createdAt": 0,
"updatedAt": 0,
"lastActivityAt": 0,
"source": "manual",
"blockedByTaskId": "string",
"autoAssignOnUnblockUserId": "string",
"autoAssignOnUnblockAgentType": "cursor",
"autoAssignOnUnblockAgentIntegrationId": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/tasks
Delete a task by passing { id } in the body. Prefer DELETE /tasks/{id} for new integrations — this body-based variant is kept for backwards compatibility.
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X DELETE "https://loading/api/v1/tasks" \ -H "Content-Type: application/json" \ -d '{ "id": "string" }'{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/tasks/batch
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/tasks/batch" \ -H "Content-Type: application/json" \ -d '{ "operations": [ { "op": "update", "id": "string" } ] }'{
"results": [
{
"ok": true,
"op": "update",
"id": "string",
"task": {
"id": "string",
"workspaceId": "string",
"projectId": "string",
"stageId": "string",
"title": "string",
"description": "string",
"ownerId": "string",
"creatorId": "string",
"completed": true,
"completedAt": 0,
"dueDate": 0,
"dueTime": 0,
"estimate": 0,
"order": 0,
"createdAt": 0,
"updatedAt": 0,
"lastActivityAt": 0,
"source": "manual",
"blockedByTaskId": "string",
"autoAssignOnUnblockUserId": "string",
"autoAssignOnUnblockAgentType": "cursor",
"autoAssignOnUnblockAgentIntegrationId": "string"
}
}
]
}{
"error": "string"
}{
"error": "string"
}/api/v1/tasks/{id}
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
curl -X DELETE "https://loading/api/v1/tasks/string"{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/members
Authorization
bearerAuth Personal access token (gcp_...) passed as a Bearer token. Requires an X-Workspace-Id header to identify the target workspace. Create tokens from your account settings.
In: header
Query Parameters
Response Body
application/json
application/json
application/json
curl -X GET "https://loading/api/v1/members"[
{
"id": "string",
"userId": "string",
"role": "string",
"name": "string",
"imageUrl": "string"
}
]{
"error": "string"
}{
"error": "string"
}List telemetry events for a task
Returns the full telemetry trace for a task. Can filter by category and paginate with afterTimestamp. Useful for debugging task history, understanding what happened, and correlating events.
Authorization
telemetryAuth Telemetry API token set via the TELEMETRY_API_TOKEN environment variable. For internal use by coding agents and debugging engineers.
In: header
Path Parameters
Task ID to get telemetry for.
Query Parameters
Filter by event category.
"user_action" | "status_change" | "assignment" | "agent_event" | "webhook" | "github" | "api_call" | "system" | "error"Max events to return. Default 500.
Only return events after this Unix timestamp (ms).
Response Body
application/json
application/json
application/json
curl -X GET "https://loading/api/v1/telemetry/tasks/string/events"{
"events": [
{
"id": "string",
"taskId": "string",
"workspaceId": "string",
"category": "user_action",
"event": "string",
"message": "string",
"actor": "string",
"actorType": "user",
"metadata": "string",
"severity": "info",
"traceId": "string",
"spanId": "string",
"parentSpanId": "string",
"durationMs": 0,
"createdAt": 0
}
],
"count": 0
}{
"error": "string"
}{
"error": "string"
}List telemetry events for a workspace
Returns recent telemetry events across all tasks in a workspace. Useful for monitoring and debugging.
Authorization
telemetryAuth Telemetry API token set via the TELEMETRY_API_TOKEN environment variable. For internal use by coding agents and debugging engineers.
In: header
Path Parameters
Workspace ID.
Query Parameters
Max events to return. Default 100.
Only return events after this Unix timestamp (ms).
Response Body
application/json
application/json
curl -X GET "https://loading/api/v1/telemetry/workspaces/string/events"{
"events": [
{
"id": "string",
"taskId": "string",
"workspaceId": "string",
"category": "user_action",
"event": "string",
"message": "string",
"actor": "string",
"actorType": "user",
"metadata": "string",
"severity": "info",
"traceId": "string",
"spanId": "string",
"parentSpanId": "string",
"durationMs": 0,
"createdAt": 0
}
],
"count": 0
}{
"error": "string"
}Get events by trace ID
Returns all telemetry events that share a trace ID. Useful for following a chain of related events across a workflow.
Authorization
telemetryAuth Telemetry API token set via the TELEMETRY_API_TOKEN environment variable. For internal use by coding agents and debugging engineers.
In: header
Path Parameters
Trace ID to look up.
Response Body
application/json
application/json
curl -X GET "https://loading/api/v1/telemetry/traces/string"{
"events": [
{
"id": "string",
"taskId": "string",
"workspaceId": "string",
"category": "user_action",
"event": "string",
"message": "string",
"actor": "string",
"actorType": "user",
"metadata": "string",
"severity": "info",
"traceId": "string",
"spanId": "string",
"parentSpanId": "string",
"durationMs": 0,
"createdAt": 0
}
],
"count": 0
}{
"error": "string"
}