Workspace API
Manage projects, tasks, statuses, and members.
Authentication
You can authenticate with either a workspace API key (gck_) or a personal access token (gcp_):
# Workspace API key (from workspace settings)
curl -H "Authorization: Bearer gck_YOUR_KEY" \
https://groupchat.ai/api/v1/tasks
# Personal access token (from account settings)
curl -H "Authorization: Bearer gcp_YOUR_TOKEN" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
https://groupchat.ai/api/v1/tasksWorkspace API keys are scoped to a single workspace. Personal access tokens are scoped to your user account and require the X-Workspace-Id header.
/api/v1/projects
Authorization
bearerAuth Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
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 Workspace API key (gck_...) passed as a Bearer token.
In: header
Query Parameters
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",
"estimate": 0,
"order": 0,
"ownerId": "string",
"creatorId": "string",
"completedAt": 0,
"dueDate": 0,
"dueTime": 0,
"source": "manual"
}
]{
"error": "string"
}{
"error": "string"
}/api/v1/tasks
Authorization
bearerAuth Workspace API key (gck_...) passed as a Bearer token.
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",
"estimate": 0,
"order": 0,
"ownerId": "string",
"creatorId": "string",
"completedAt": 0,
"dueDate": 0,
"dueTime": 0,
"source": "manual"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/tasks
Authorization
bearerAuth Workspace API key (gck_...) passed as a Bearer token.
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",
"estimate": 0,
"order": 0,
"ownerId": "string",
"creatorId": "string",
"completedAt": 0,
"dueDate": 0,
"dueTime": 0,
"source": "manual"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}/api/v1/tasks
Authorization
bearerAuth Workspace API key (gck_...) passed as a Bearer token.
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/members
Authorization
bearerAuth Workspace API key (gck_...) passed as a Bearer token.
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"
}