Steadybase
API Reference

Drew API

Drew Coordinator orchestration — start multi-agent workflows and manage approvals.

Drew API

The Drew API triggers the Drew Coordinator workflow — the 9-step multi-agent orchestration that coordinates research, content generation, human approval, and cross-namespace calls.

Starting a Drew Workflow

Drew is started via the Workers API:

POST /api/workers/drew-coordinator/start

Request:

{
  "workflowType": "drew-coordinator",
  "params": {
    "message": "Prepare outreach for our top 5 enterprise prospects",
    "userId": "user-123"
  }
}

Response:

{
  "workflowId": "drew-coord-2026-03-04-001",
  "status": "started",
  "worker": "drew-coordinator"
}

Monitoring Execution

Query Status

Check the current state of a Drew Coordinator execution:

GET /api/workers/drew-coordinator

Response during execution:

{
  "id": "drew-coordinator",
  "status": "running",
  "currentTask": "Step 3: Lisa cross-referencing Salesforce data",
  "progress": {
    "currentStep": 3,
    "totalSteps": 9,
    "percentage": 33
  },
  "activityFeed": [
    {
      "step": 1,
      "agent": "Drew",
      "action": "Planned request into 4 subtasks",
      "timestamp": "2026-03-04T10:00:00Z",
      "status": "completed"
    },
    {
      "step": 2,
      "agent": "Lisa",
      "action": "Queried 12 Gong transcripts from last 30 days",
      "timestamp": "2026-03-04T10:00:15Z",
      "status": "completed"
    },
    {
      "step": 3,
      "agent": "Lisa",
      "action": "Cross-referencing Salesforce account data",
      "timestamp": "2026-03-04T10:00:30Z",
      "status": "in-progress"
    }
  ]
}

WebSocket Updates

Drew broadcasts real-time updates via WebSocket as each step completes:

const ws = new WebSocket('wss://durableminds.steadybase.io/ws');
 
ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.type === 'drew-update') {
    console.log(`Step ${data.step}: ${data.agent} - ${data.action}`);
  }
};

Managing Approvals

Approve Outreach (Step 7)

When the workflow reaches Step 7, it pauses for human approval:

# Approve the outreach drafts
POST /api/workers/drew-coordinator/signal
{
  "signal": "approveStep",
  "payload": {
    "stepId": "human-approval",
    "approved": true,
    "notes": "Looks good, proceed with top 3 accounts"
  }
}

Skip a Step

POST /api/workers/drew-coordinator/signal
{
  "signal": "skipStep",
  "payload": {
    "stepId": "marketing-abm-check",
    "reason": "No active ABM program for these accounts"
  }
}

Output

When all 9 steps complete, the workflow produces:

{
  "activityFeed": [...],
  "summary": "Prepared outreach for 5 enterprise prospects...",
  "dashboard": {
    "accountSummaries": [...],
    "outreachDrafts": [...],
    "abmStatus": [...],
    "recommendations": [...]
  },
  "outreachDrafts": [
    {
      "accountId": "acme-corp",
      "email": "Subject: ...\n\nHi Sarah,...",
      "linkedin": "Great catching up at...",
      "callScript": "Opening: Reference Q4 QBR..."
    }
  ],
  "abmStatus": {
    "accountsInABM": 2,
    "details": [...]
  }
}

On this page