Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

API Design

RESTful + GraphQL + WebSocket APIs for 1000 Agent Platform


RESTful APIs

Agent Management

GET    /api/v1/agents              # List all Agents
GET    /api/v1/agents/:id          # Get Agent details
POST   /api/v1/agents/:id/pause    # Pause Agent
POST   /api/v1/agents/:id/resume   # Resume Agent
POST   /api/v1/agents/:id/restart  # Restart Agent
DELETE /api/v1/agents/:id          # Delete Agent

Task Management

GET    /api/v1/tasks               # List tasks (with filtering)
POST   /api/v1/tasks               # Create task
GET    /api/v1/tasks/:id           # Get task details
POST   /api/v1/tasks/:id/cancel    # Cancel task

Artifact Management

GET    /api/v1/artifacts           # List outputs
GET    /api/v1/artifacts/:id       # Get artifact details
POST   /api/v1/artifacts/:id/approve  # Human approval

Cage Management

GET    /api/v1/cages               # List all cages
GET    /api/v1/cages/:id           # Get cage details
GET    /api/v1/cages/:id/metrics   # Get cage metrics

Metrics & Analytics

GET    /api/v1/metrics/agents      # Agent metrics aggregation
GET    /api/v1/metrics/system      # System-wide metrics
GET    /api/v1/analytics/productivity  # Productivity analysis

WebSocket Events

// Frontend subscribes to real-time events
ws.subscribe('agent:status:changed', (data) => {
  // Agent status changed
});

ws.subscribe('task:completed', (data) => {
  // Task completed
});

ws.subscribe('artifact:created', (data) => {
  // New artifact created
});

ws.subscribe('alert:triggered', (data) => {
  // Alert triggered
});

GraphQL Schema (Sample)

type Query {
  agent(id: ID!): Agent
  agents(filter: AgentFilter): [Agent!]!
  task(id: ID!): Task
  tasks(filter: TaskFilter): [Task!]!
  cage(id: ID!): Cage
  cages: [Cage!]!
  metrics(timeRange: TimeRange!): Metrics!
}

type Mutation {
  pauseAgent(id: ID!): Agent
  resumeAgent(id: ID!): Agent
  restartAgent(id: ID!): Agent
  createTask(input: TaskInput!): Task
  cancelTask(id: ID!): Task
  approveArtifact(id: ID!): Artifact
}

type Subscription {
  agentStatusChanged: Agent!
  taskCompleted: Task!
  artifactCreated: Artifact!
  alertTriggered: Alert!
}

← Back to 1000 Agent Platform