.do
ApiAgents

Teams API

API for managing multi-agent teams and collaborative workflows

The Teams API enables you to create, manage, and deploy multi-agent teams for complex collaborative workflows. Teams combine agents with complementary skills to tackle projects that require diverse expertise.

Base URL

Overview

Agent teams provide:

  • 35 Pre-configured Teams - Ready-to-use teams for common scenarios
  • Custom Teams - Create teams tailored to your needs
  • Automatic Coordination - Teams self-organize and delegate work
  • Shared Context - Agents share knowledge and progress
  • Parallel Execution - Multiple agents work simultaneously

Endpoints

List Teams

Get a list of available teams.

GET /agents/teams

Query Parameters

ParameterTypeRequiredDescription
categorystringNoFilter by category (engineering, product, marketing, etc.)
sizenumberNoFilter by team size
custombooleanNoInclude custom teams (default: true)
limitnumberNoMax results (default: 50)
offsetnumberNoPagination offset (default: 0)

Example Request

curl -X GET "https://api.do/agents/teams?category=engineering" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "success": true,
  "data": {
    "teams": [
      {
        "id": "team_engineering",
        "name": "Engineering Team",
        "category": "engineering",
        "description": "Full-stack development team for building complete applications",
        "size": 5,
        "members": [
          {
            "agentId": "cody",
            "role": "Technical Architect",
            "lead": true
          },
          {
            "agentId": "tom",
            "role": "Backend Developer"
          },
          {
            "agentId": "rae",
            "role": "Frontend Developer"
          },
          {
            "agentId": "quinn",
            "role": "QA Engineer"
          },
          {
            "agentId": "sam",
            "role": "Security Engineer"
          }
        ],
        "capabilities": ["full-stack-development", "system-architecture", "testing", "security", "deployment"],
        "status": "available",
        "availability": {
          "nextAvailable": "2024-10-27T18:00:00Z",
          "currentLoad": 0.4
        }
      },
      {
        "id": "team_product",
        "name": "Product Team",
        "category": "product",
        "description": "Product strategy and planning team",
        "size": 3,
        "members": [
          {
            "agentId": "priya",
            "role": "Product Manager",
            "lead": true
          },
          {
            "agentId": "amy",
            "role": "Business Analyst"
          },
          {
            "agentId": "luna",
            "role": "UX Designer"
          }
        ],
        "capabilities": ["product-strategy", "user-research", "roadmap-planning", "requirements-definition"],
        "status": "available"
      }
    ],
    "total": 35,
    "limit": 50,
    "offset": 0
  },
  "metadata": {
    "requestId": "req_team123",
    "timestamp": "2024-10-27T18:00:00Z"
  }
}

Get Team Details

Get detailed information about a specific team.

GET /agents/teams/:id

Path Parameters

ParameterTypeRequiredDescription
idstringYesTeam identifier

Example Request

curl -X GET "https://api.do/agents/teams/team_engineering" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "success": true,
  "data": {
    "id": "team_engineering",
    "name": "Engineering Team",
    "category": "engineering",
    "description": "Full-stack development team for building complete applications",
    "size": 5,
    "members": [
      {
        "agentId": "cody",
        "name": "Cody",
        "role": "Technical Architect",
        "lead": true,
        "responsibilities": ["System architecture", "Technical decisions", "Code review", "Team coordination"]
      },
      {
        "agentId": "tom",
        "name": "Tom",
        "role": "Backend Developer",
        "responsibilities": ["API development", "Database design", "Server-side logic", "Performance optimization"]
      },
      {
        "agentId": "rae",
        "name": "Rae",
        "role": "Frontend Developer",
        "responsibilities": ["UI implementation", "Frontend architecture", "State management", "User experience"]
      },
      {
        "agentId": "quinn",
        "name": "Quinn",
        "role": "QA Engineer",
        "responsibilities": ["Test strategy", "Automated testing", "Quality assurance", "Bug tracking"]
      },
      {
        "agentId": "sam",
        "name": "Sam",
        "role": "Security Engineer",
        "responsibilities": ["Security review", "Vulnerability assessment", "Secure coding practices", "Compliance"]
      }
    ],
    "capabilities": ["full-stack-development", "system-architecture", "testing", "security", "deployment"],
    "workflow": {
      "defaultProcess": "agile-scrum",
      "phases": ["discovery", "architecture", "development", "testing", "security-review", "deployment"]
    },
    "status": "available",
    "metrics": {
      "projectsCompleted": 342,
      "averageRating": 4.8,
      "successRate": 0.96,
      "averageProjectDuration": "3 weeks"
    }
  },
  "metadata": {
    "requestId": "req_team124",
    "timestamp": "2024-10-27T18:00:00Z"
  }
}

Create Custom Team

Create a new custom team.

POST /agents/teams

Request Body

FieldTypeRequiredDescription
namestringYesTeam name
descriptionstringNoTeam description
categorystringNoTeam category
membersarrayYesTeam members (min 2)
workflowobjectNoTeam workflow configuration

Example Request

curl -X POST "https://api.do/agents/teams" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mobile Dev Team",
    "description": "Specialized mobile development team",
    "category": "engineering",
    "members": [
      {
        "agentId": "tom",
        "role": "Mobile Developer",
        "lead": true
      },
      {
        "agentId": "luna",
        "role": "UX Designer"
      },
      {
        "agentId": "quinn",
        "role": "QA Engineer"
      }
    ],
    "workflow": {
      "process": "kanban",
      "phases": ["design", "development", "testing", "release"]
    }
  }'

Example Response

{
  "success": true,
  "data": {
    "id": "team_custom_abc123",
    "name": "Mobile Dev Team",
    "description": "Specialized mobile development team",
    "category": "engineering",
    "size": 3,
    "members": [
      {
        "agentId": "tom",
        "role": "Mobile Developer",
        "lead": true
      },
      {
        "agentId": "luna",
        "role": "UX Designer"
      },
      {
        "agentId": "quinn",
        "role": "QA Engineer"
      }
    ],
    "workflow": {
      "process": "kanban",
      "phases": ["design", "development", "testing", "release"]
    },
    "status": "available",
    "createdAt": "2024-10-27T18:00:00Z"
  },
  "metadata": {
    "requestId": "req_team125",
    "timestamp": "2024-10-27T18:00:00Z"
  }
}

Assign Task to Team

Assign a project or task to a team.

POST /agents/teams/:id/assign

Path Parameters

ParameterTypeRequiredDescription
idstringYesTeam identifier

Request Body

FieldTypeRequiredDescription
taskstringYesProject description
requirementsobjectNoDetailed requirements
prioritystringNoPriority level
deadlinestringNoISO 8601 deadline
budgetobjectNoBudget constraints

Example Request

curl -X POST "https://api.do/agents/teams/team_engineering/assign" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "task": "Build a SaaS analytics platform",
    "requirements": {
      "features": [
        "Real-time data processing",
        "Interactive dashboards",
        "Multi-tenancy",
        "API integration"
      ],
      "stack": "React, Node.js, PostgreSQL, Redis",
      "scale": "10k users",
      "timeline": "8 weeks"
    },
    "priority": "high",
    "deadline": "2024-12-20T00:00:00Z"
  }'

Example Response

{
  "success": true,
  "data": {
    "projectId": "proj_abc123",
    "teamId": "team_engineering",
    "task": "Build a SaaS analytics platform",
    "status": "planning",
    "assignments": [
      {
        "agentId": "cody",
        "phase": "architecture",
        "tasks": ["System design", "Technology selection"],
        "estimatedDuration": "1 week"
      },
      {
        "agentId": "tom",
        "phase": "development",
        "tasks": ["Backend API", "Data pipeline"],
        "estimatedDuration": "4 weeks"
      },
      {
        "agentId": "rae",
        "phase": "development",
        "tasks": ["Dashboard UI", "Data visualization"],
        "estimatedDuration": "4 weeks"
      },
      {
        "agentId": "quinn",
        "phase": "testing",
        "tasks": ["Test automation", "Load testing"],
        "estimatedDuration": "2 weeks"
      },
      {
        "agentId": "sam",
        "phase": "security",
        "tasks": ["Security audit", "Penetration testing"],
        "estimatedDuration": "1 week"
      }
    ],
    "timeline": {
      "start": "2024-10-27T18:00:00Z",
      "estimatedCompletion": "2024-12-15T18:00:00Z",
      "duration": "7 weeks"
    },
    "trackingUrl": "https://api.do/projects/proj_abc123",
    "createdAt": "2024-10-27T18:00:00Z"
  },
  "metadata": {
    "requestId": "req_team126",
    "timestamp": "2024-10-27T18:00:00Z"
  }
}

Update Team

Update team configuration.

PATCH /agents/teams/:id

Path Parameters

ParameterTypeRequiredDescription
idstringYesTeam identifier

Request Body

FieldTypeRequiredDescription
namestringNoTeam name
descriptionstringNoTeam description
membersarrayNoUpdated member list
workflowobjectNoWorkflow configuration

Example Request

curl -X PATCH "https://api.do/agents/teams/team_custom_abc123" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "members": [
      {"agentId": "tom", "role": "Mobile Developer", "lead": true},
      {"agentId": "luna", "role": "UX Designer"},
      {"agentId": "quinn", "role": "QA Engineer"},
      {"agentId": "sam", "role": "Security Engineer"}
    ]
  }'

Delete Team

Delete a custom team.

DELETE /agents/teams/:id

Path Parameters

ParameterTypeRequiredDescription
idstringYesTeam identifier

Note: Only custom teams can be deleted. Pre-configured teams cannot be deleted.

Pre-configured Teams

Engineering Teams

Engineering Team - Full-stack development (Cody, Tom, Rae, Quinn, Sam)

Mobile Team - iOS/Android development (Tom, Luna, Quinn)

DevOps Team - Infrastructure and deployment (Dev, Sam, Cody)

Data Team - Data engineering and analytics (Morgan, Amy, Tom)

Product Teams

Product Team - Product strategy (Priya, Amy, Luna)

Design Team - UX/UI design (Luna, Max, Eli)

Research Team - User research (Luna, Amy, Mira)

Marketing Teams

Marketing Team - Growth and campaigns (Mira, Clara, Eli)

Content Team - Content creation (Clara, Max, Eli)

Growth Team - Growth hacking (Mira, Alex, Jordan)

Operations Teams

Operations Team - Business operations (Taylor, Amy, Finn)

Finance Team - Financial planning (Finn, Amy, Taylor)

Support Team - Customer support (Support agents)

TypeScript SDK Example

import { $ } from 'sdk.do'

// List teams
const teams = await $.Team.list({
  category: 'engineering',
  status: 'available',
})

// Get team details
const engineeringTeam = await $.Team.get('team_engineering')

// Create custom team
const customTeam = await $.Team.create({
  name: 'Mobile Dev Team',
  description: 'Specialized mobile development',
  category: 'engineering',
  members: [
    { agentId: 'tom', role: 'Mobile Developer', lead: true },
    { agentId: 'luna', role: 'UX Designer' },
    { agentId: 'quinn', role: 'QA Engineer' },
  ],
})

// Assign task to team
const project = await $.Team.assign({
  teamId: 'team_engineering',
  task: 'Build SaaS analytics platform',
  requirements: {
    features: ['Real-time data', 'Dashboards'],
    stack: 'React, Node.js, PostgreSQL',
    timeline: '8 weeks',
  },
  priority: 'high',
})

// Update team
await $.Team.update('team_custom_abc123', {
  members: [
    { agentId: 'tom', role: 'Lead Developer', lead: true },
    { agentId: 'luna', role: 'Designer' },
    { agentId: 'quinn', role: 'QA' },
    { agentId: 'sam', role: 'Security' },
  ],
})

// Delete team
await $.Team.delete('team_custom_abc123')

Python SDK Example

from do_sdk import Team

# List teams
teams = Team.list(category='engineering', status='available')

# Get team details
engineering_team = Team.get('team_engineering')

# Create custom team
custom_team = Team.create(
    name='Mobile Dev Team',
    description='Specialized mobile development',
    category='engineering',
    members=[
        {'agentId': 'tom', 'role': 'Mobile Developer', 'lead': True},
        {'agentId': 'luna', 'role': 'UX Designer'},
        {'agentId': 'quinn', 'role': 'QA Engineer'}
    ]
)

# Assign task to team
project = Team.assign(
    team_id='team_engineering',
    task='Build SaaS analytics platform',
    requirements={
        'features': ['Real-time data', 'Dashboards'],
        'stack': 'React, Node.js, PostgreSQL',
        'timeline': '8 weeks'
    },
    priority='high'
)

CLI Example

# List teams
do team list --category engineering

# Get team details
do team get team_engineering

# Create custom team
do team create "Mobile Dev Team" \
  --members tom:lead,luna,quinn \
  --category engineering

# Assign task
do team assign team_engineering "Build SaaS platform" \
  --requirements requirements.json \
  --priority high

# Update team
do team update team_custom_abc123 \
  --add-member sam:security

# Delete team
do team delete team_custom_abc123

Best Practices

1. Choose the Right Team

Match team capabilities to project requirements:

// Good: Engineering team for full-stack project
await $.Team.assign({
  teamId: 'team_engineering',
  task: 'Build web application',
})

// Good: Product team for strategy work
await $.Team.assign({
  teamId: 'team_product',
  task: 'Product roadmap planning',
})

2. Provide Clear Requirements

Detailed requirements help teams plan effectively:

await $.Team.assign({
  teamId: 'team_engineering',
  task: 'Build SaaS platform',
  requirements: {
    features: ['Feature 1', 'Feature 2'],
    stack: 'React, Node.js',
    scale: '10k users',
    timeline: '8 weeks',
    mustHave: ['Security', 'Performance'],
    niceToHave: ['Analytics', 'Notifications'],
  },
})

3. Balance Team Size

Optimal team size is 3-7 members:

// Good: 5-person balanced team
const team = await $.Team.create({
  name: 'Full Stack Team',
  members: [
    { agentId: 'cody', role: 'Architect', lead: true },
    { agentId: 'tom', role: 'Backend' },
    { agentId: 'rae', role: 'Frontend' },
    { agentId: 'quinn', role: 'QA' },
    { agentId: 'sam', role: 'Security' },
  ],
})

// Avoid: Too large (coordination overhead)
// Avoid: Too small (limited capabilities)

4. Monitor Progress

Track team progress through project API:

const project = await $.Team.assign({ teamId: '...', task: '...' })

// Check progress periodically
const status = await $.Project.get(project.projectId)
console.log(`Progress: ${status.progress}%`)
console.log(`Phase: ${status.currentPhase}`)

Support