API Endpoints

Complete reference for WorkClaw REST API endpoints. Manage Claws, deployments, skills, team members, and chat programmatically.

How are endpoints organized?

All endpoints are prefixed with /v1 and grouped by resource. Requests and responses use JSON. Authentication is required for all endpoints -- see API Authentication.

What Claw endpoints are available?

MethodPathDescriptionScope
GET/v1/clawsList all Claws in your workspaceclaws:read
GET/v1/claws/:idGet a specific Claw's configurationclaws:read
POST/v1/clawsCreate a new Clawclaws:write
PATCH/v1/claws/:idUpdate a Claw's configurationclaws:write
DELETE/v1/claws/:idDelete a Clawclaws:write

Claw objects include identity, personality, installed skills, active connections, and current deployment status.

What deployment endpoints are available?

MethodPathDescriptionScope
GET/v1/deploymentsList recent deploymentsdeployments:read
GET/v1/deployments/:idGet deployment details and statusdeployments:read
POST/v1/deploymentsTrigger a new deploymentdeployments:write
POST/v1/deployments/:id/rollbackRoll back a deploymentdeployments:write

When triggering a deployment, you can optionally specify a deploy strategy to override the team default.

What skill endpoints are available?

MethodPathDescriptionScope
GET/v1/claws/:id/skillsList installed skillsskills:read
POST/v1/claws/:id/skillsInstall a skillskills:write
DELETE/v1/claws/:id/skills/:skillIdRemove a skillskills:write

What team endpoints are available?

MethodPathDescriptionScope
GET/v1/team/membersList team membersteam:read
POST/v1/team/membersInvite a new memberteam:write
PATCH/v1/team/members/:idUpdate a member's roleteam:write
DELETE/v1/team/members/:idRemove a memberteam:write

What chat endpoints are available?

MethodPathDescriptionScope
POST/v1/chat/:clawId/messagesSend a message to a Clawchat:write
GET/v1/chat/:clawId/messagesRetrieve conversation historychat:read

The chat endpoint returns the Claw's response synchronously. For long-running tasks, the response includes a taskId you can poll via GET /v1/tasks/:taskId. See Tasks for more on task management.

How are errors returned?

All errors follow a consistent format:

{
  "error": {
    "code": "not_found",
    "message": "Claw not found",
    "status": 404
  }
}

Common error codes: unauthorized (401), forbidden (403), not_found (404), rate_limited (429), internal_error (500).

Related documentation