You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/docs/swarms_cloud/swarms_api.md

40 KiB

Swarms API Documentation

Enterprise-Grade Agent Swarm Management API

Base URL: https://api.swarms.world or https://swarms-api-285321057562.us-east1.run.app

API Key Management: https://swarms.world/platform/api-keys

Overview

The Swarms API provides a robust, scalable infrastructure for deploying and managing intelligent agent swarms in the cloud. This enterprise-grade API enables organizations to create, execute, and orchestrate sophisticated AI agent workflows without managing the underlying infrastructure.

Key capabilities include:

  • Intelligent Swarm Management: Create and execute swarms of specialized AI agents that collaborate to solve complex tasks

  • Automatic Agent Generation: Dynamically create optimized agents based on task requirements

  • Multiple Swarm Architectures: Choose from various swarm patterns to match your specific workflow needs

  • Comprehensive Logging: Track and analyze all API interactions

  • Cost Management: Predictable, transparent pricing with optimized resource utilization

  • Enterprise Security: Full API key authentication and management

Swarms API is designed for production use cases requiring sophisticated AI orchestration, with applications in finance, healthcare, legal, research, and other domains where complex reasoning and multi-agent collaboration are needed.

Authentication

All API requests require a valid API key, which must be included in the header of each request:

x-api-key: your_api_key_here

API keys can be obtained and managed at https://swarms.world/platform/api-keys.

API Reference

Endpoints Summary

Endpoint Method Description
/health GET Simple health check endpoint
/v1/swarm/completions POST Run a swarm with specified configuration
/v1/swarm/batch/completions POST Run multiple swarms in batch mode
/v1/swarm/logs GET Retrieve API request logs
/v1/swarms/available GET Get all available swarms as a list of strings
/v1/models/available GET Get all available models as a list of strings
/v1/agent/completions POST Run a single agent with specified configuration
/v1/agent/batch/completions POST Run a batch of individual agent completions

SwarmType Reference

The swarm_type parameter defines the architecture and collaboration pattern of the agent swarm:

SwarmType Description
AgentRearrange Dynamically reorganizes the workflow between agents based on task requirements
MixtureOfAgents Combines multiple agent types to tackle diverse aspects of a problem
SpreadSheetSwarm Specialized for spreadsheet data analysis and manipulation
SequentialWorkflow Agents work in a predefined sequence, each handling specific subtasks
ConcurrentWorkflow Multiple agents work simultaneously on different aspects of the task
GroupChat Agents collaborate in a discussion format to solve problems
MultiAgentRouter Routes subtasks to specialized agents based on their capabilities
AutoSwarmBuilder Automatically designs and builds an optimal swarm based on the task
HiearchicalSwarm Organizes agents in a hierarchical structure with managers and workers
MajorityVoting Uses a consensus mechanism where multiple agents vote on the best solution
auto Automatically selects the most appropriate swarm type for the given task

Data Models

SwarmSpec

The SwarmSpec model defines the configuration of a swarm.

Field Type Description Required
name string Identifier for the swarm No
description string Description of the swarm's purpose No
agents Array List of agent specifications No
max_loops integer Maximum number of execution loops No
swarm_type SwarmType Architecture of the swarm No
rearrange_flow string Instructions for rearranging task flow No
task string The main task for the swarm to accomplish Yes
img string Optional image URL for the swarm No
return_history boolean Whether to return execution history No
rules string Guidelines for swarm behavior No
service_tier string Service tier for processing ("standard" or "flex") No

AgentSpec

The AgentSpec model defines the configuration of an individual agent.

Field Type Description Required
agent_name string Unique name for the agent Yes*
description string Description of the agent's purpose No
system_prompt string Instructions for the agent No
model_name string AI model to use (e.g., "gpt-4o") Yes*
auto_generate_prompt boolean Whether to auto-generate prompts No
max_tokens integer Maximum tokens in response No
temperature float Randomness of responses (0-1) No
role string Agent's role in the swarm No
max_loops integer Maximum iterations for this agent No

*Required if agents are manually specified; not required if using auto-generated agents

Endpoint Details

Health Check

Check if the API service is available and functioning correctly.

Endpoint: /health
Method: GET
Rate Limit: 100 requests per 60 seconds

=== "Shell (curl)" bash curl -X GET "https://api.swarms.world/health" \ -H "x-api-key: your_api_key_here"

=== "Python (requests)" ```python import requests

API_BASE_URL = "https://api.swarms.world"
API_KEY = "your_api_key_here"

headers = {
    "x-api-key": API_KEY
}

response = requests.get(f"{API_BASE_URL}/health", headers=headers)

if response.status_code == 200:
    print("API is healthy:", response.json())
else:
    print(f"Error: {response.status_code}")
```

=== "TypeScript (fetch)" ```typescript const API_BASE_URL = "https://api.swarms.world"; const API_KEY = "your_api_key_here";

async function checkHealth(): Promise<void> {
    try {
        const response = await fetch(`${API_BASE_URL}/health`, {
            method: 'GET',
            headers: {
                'x-api-key': API_KEY
            }
        });

        if (response.ok) {
            const data = await response.json();
            console.log("API is healthy:", data);
        } else {
            console.error(`Error: ${response.status}`);
        }
    } catch (error) {
        console.error("Request failed:", error);
    }
}

checkHealth();
```

Example Response:

{
  "status": "ok"
}

Run Swarm

Run a swarm with the specified configuration to complete a task.

Endpoint: /v1/swarm/completions
Method: POST
Rate Limit: 100 requests per 60 seconds

Request Parameters:

Field Type Description Required
name string Identifier for the swarm No
description string Description of the swarm's purpose No
agents Array List of agent specifications No
max_loops integer Maximum number of execution loops No
swarm_type SwarmType Architecture of the swarm No
rearrange_flow string Instructions for rearranging task flow No
task string The main task for the swarm to accomplish Yes
img string Optional image URL for the swarm No
return_history boolean Whether to return execution history No
rules string Guidelines for swarm behavior No

=== "Shell (curl)" bash curl -X POST "https://api.swarms.world/v1/swarm/completions" \ -H "x-api-key: $SWARMS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Financial Analysis Swarm", "description": "Market analysis swarm", "agents": [ { "agent_name": "Market Analyst", "description": "Analyzes market trends", "system_prompt": "You are a financial analyst expert.", "model_name": "openai/gpt-4o", "role": "worker", "max_loops": 1, "max_tokens": 8192, "temperature": 0.5, "auto_generate_prompt": false }, { "agent_name": "Economic Forecaster", "description": "Predicts economic trends", "system_prompt": "You are an expert in economic forecasting.", "model_name": "gpt-4o", "role": "worker", "max_loops": 1, "max_tokens": 8192, "temperature": 0.5, "auto_generate_prompt": false } ], "max_loops": 1, "swarm_type": "ConcurrentWorkflow", "task": "What are the best etfs and index funds for ai and tech?", "output_type": "dict" }'

=== "Python (requests)" ```python import requests import json

API_BASE_URL = "https://api.swarms.world"
API_KEY = "your_api_key_here"

headers = {
    "x-api-key": API_KEY,
    "Content-Type": "application/json"
}

swarm_config = {
    "name": "Financial Analysis Swarm",
    "description": "Market analysis swarm",
    "agents": [
        {
            "agent_name": "Market Analyst",
            "description": "Analyzes market trends",
            "system_prompt": "You are a financial analyst expert.",
            "model_name": "openai/gpt-4o",
            "role": "worker",
            "max_loops": 1,
            "max_tokens": 8192,
            "temperature": 0.5,
            "auto_generate_prompt": False
        },
        {
            "agent_name": "Economic Forecaster",
            "description": "Predicts economic trends",
            "system_prompt": "You are an expert in economic forecasting.",
            "model_name": "gpt-4o",
            "role": "worker",
            "max_loops": 1,
            "max_tokens": 8192,
            "temperature": 0.5,
            "auto_generate_prompt": False
        }
    ],
    "max_loops": 1,
    "swarm_type": "ConcurrentWorkflow",
    "task": "What are the best etfs and index funds for ai and tech?",
    "output_type": "dict"
}

response = requests.post(
    f"{API_BASE_URL}/v1/swarm/completions",
    headers=headers,
    json=swarm_config
)

if response.status_code == 200:
    result = response.json()
    print("Swarm completed successfully!")
    print(f"Cost: ${result['metadata']['billing_info']['total_cost']}")
    print(f"Execution time: {result['metadata']['execution_time_seconds']} seconds")
else:
    print(f"Error: {response.status_code} - {response.text}")
```

=== "TypeScript (fetch)" ```typescript interface AgentSpec { agent_name: string; description: string; system_prompt: string; model_name: string; role: string; max_loops: number; max_tokens: number; temperature: number; auto_generate_prompt: boolean; }

interface SwarmConfig {
    name: string;
    description: string;
    agents: AgentSpec[];
    max_loops: number;
    swarm_type: string;
    task: string;
    output_type: string;
}

const API_BASE_URL = "https://api.swarms.world";
const API_KEY = "your_api_key_here";

async function runSwarm(): Promise<void> {
    const swarmConfig: SwarmConfig = {
        name: "Financial Analysis Swarm",
        description: "Market analysis swarm",
        agents: [
            {
                agent_name: "Market Analyst",
                description: "Analyzes market trends",
                system_prompt: "You are a financial analyst expert.",
                model_name: "openai/gpt-4o",
                role: "worker",
                max_loops: 1,
                max_tokens: 8192,
                temperature: 0.5,
                auto_generate_prompt: false
            },
            {
                agent_name: "Economic Forecaster",
                description: "Predicts economic trends",
                system_prompt: "You are an expert in economic forecasting.",
                model_name: "gpt-4o",
                role: "worker",
                max_loops: 1,
                max_tokens: 8192,
                temperature: 0.5,
                auto_generate_prompt: false
            }
        ],
        max_loops: 1,
        swarm_type: "ConcurrentWorkflow",
        task: "What are the best etfs and index funds for ai and tech?",
        output_type: "dict"
    };

    try {
        const response = await fetch(`${API_BASE_URL}/v1/swarm/completions`, {
            method: 'POST',
            headers: {
                'x-api-key': API_KEY,
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(swarmConfig)
        });

        if (response.ok) {
            const result = await response.json();
            console.log("Swarm completed successfully!");
            console.log(`Cost: $${result.metadata.billing_info.total_cost}`);
            console.log(`Execution time: ${result.metadata.execution_time_seconds} seconds`);
        } else {
            console.error(`Error: ${response.status} - ${await response.text()}`);
        }
    } catch (error) {
        console.error("Request failed:", error);
    }
}

runSwarm();
```

Example Response:

{
  "status": "success",
  "swarm_name": "financial-analysis-swarm",
  "description": "Analyzes financial data for risk assessment",
  "swarm_type": "SequentialWorkflow",
  "task": "Analyze the provided quarterly financials for Company XYZ and identify potential risk factors. Summarize key insights and provide recommendations for risk mitigation.",
  "output": {
    "financial_analysis": {
      "risk_factors": [...],
      "key_insights": [...],
      "recommendations": [...]
    }
  },
  "metadata": {
    "max_loops": 2,
    "num_agents": 3,
    "execution_time_seconds": 12.45,
    "completion_time": 1709563245.789,
    "billing_info": {
      "cost_breakdown": {
        "agent_cost": 0.03,
        "input_token_cost": 0.002134,
        "output_token_cost": 0.006789,
        "token_counts": {
          "total_input_tokens": 1578,
          "total_output_tokens": 3456,
          "total_tokens": 5034,
          "per_agent": {...}
        },
        "num_agents": 3,
        "execution_time_seconds": 12.45
      },
      "total_cost": 0.038923
    }
  }
}

Run Batch Completions

Run multiple swarms as a batch operation.

Endpoint: /v1/swarm/batch/completions
Method: POST
Rate Limit: 100 requests per 60 seconds

Request Parameters:

Field Type Description Required
swarms Array List of swarm specifications Yes

=== "Shell (curl)" bash curl -X POST "https://api.swarms.world/v1/swarm/batch/completions" \ -H "x-api-key: $SWARMS_API_KEY" \ -H "Content-Type: application/json" \ -d '[ { "name": "Batch Swarm 1", "description": "First swarm in the batch", "agents": [ { "agent_name": "Research Agent", "description": "Conducts research", "system_prompt": "You are a research assistant.", "model_name": "gpt-4o", "role": "worker", "max_loops": 1 }, { "agent_name": "Analysis Agent", "description": "Analyzes data", "system_prompt": "You are a data analyst.", "model_name": "gpt-4o", "role": "worker", "max_loops": 1 } ], "max_loops": 1, "swarm_type": "SequentialWorkflow", "task": "Research AI advancements." }, { "name": "Batch Swarm 2", "description": "Second swarm in the batch", "agents": [ { "agent_name": "Writing Agent", "description": "Writes content", "system_prompt": "You are a content writer.", "model_name": "gpt-4o", "role": "worker", "max_loops": 1 }, { "agent_name": "Editing Agent", "description": "Edits content", "system_prompt": "You are an editor.", "model_name": "gpt-4o", "role": "worker", "max_loops": 1 } ], "max_loops": 1, "swarm_type": "SequentialWorkflow", "task": "Write a summary of AI research." } ]'

=== "Python (requests)" ```python import requests import json

API_BASE_URL = "https://api.swarms.world"
API_KEY = "your_api_key_here"

headers = {
    "x-api-key": API_KEY,
    "Content-Type": "application/json"
}

batch_swarms = [
    {
        "name": "Batch Swarm 1",
        "description": "First swarm in the batch",
        "agents": [
            {
                "agent_name": "Research Agent",
                "description": "Conducts research",
                "system_prompt": "You are a research assistant.",
                "model_name": "gpt-4o",
                "role": "worker",
                "max_loops": 1
            },
            {
                "agent_name": "Analysis Agent",
                "description": "Analyzes data",
                "system_prompt": "You are a data analyst.",
                "model_name": "gpt-4o",
                "role": "worker",
                "max_loops": 1
            }
        ],
        "max_loops": 1,
        "swarm_type": "SequentialWorkflow",
        "task": "Research AI advancements."
    },
    {
        "name": "Batch Swarm 2",
        "description": "Second swarm in the batch",
        "agents": [
            {
                "agent_name": "Writing Agent",
                "description": "Writes content",
                "system_prompt": "You are a content writer.",
                "model_name": "gpt-4o",
                "role": "worker",
                "max_loops": 1
            },
            {
                "agent_name": "Editing Agent",
                "description": "Edits content",
                "system_prompt": "You are an editor.",
                "model_name": "gpt-4o",
                "role": "worker",
                "max_loops": 1
            }
        ],
        "max_loops": 1,
        "swarm_type": "SequentialWorkflow",
        "task": "Write a summary of AI research."
    }
]

response = requests.post(
    f"{API_BASE_URL}/v1/swarm/batch/completions",
    headers=headers,
    json=batch_swarms
)

if response.status_code == 200:
    results = response.json()
    print(f"Batch completed with {len(results)} swarms")
    for i, result in enumerate(results):
        print(f"Swarm {i+1}: {result['swarm_name']} - {result['status']}")
else:
    print(f"Error: {response.status_code} - {response.text}")
```

=== "TypeScript (fetch)" ```typescript interface AgentSpec { agent_name: string; description: string; system_prompt: string; model_name: string; role: string; max_loops: number; }

interface SwarmSpec {
    name: string;
    description: string;
    agents: AgentSpec[];
    max_loops: number;
    swarm_type: string;
    task: string;
}

const API_BASE_URL = "https://api.swarms.world";
const API_KEY = "your_api_key_here";

async function runBatchSwarms(): Promise<void> {
    const batchSwarms: SwarmSpec[] = [
        {
            name: "Batch Swarm 1",
            description: "First swarm in the batch",
            agents: [
                {
                    agent_name: "Research Agent",
                    description: "Conducts research",
                    system_prompt: "You are a research assistant.",
                    model_name: "gpt-4o",
                    role: "worker",
                    max_loops: 1
                },
                {
                    agent_name: "Analysis Agent",
                    description: "Analyzes data",
                    system_prompt: "You are a data analyst.",
                    model_name: "gpt-4o",
                    role: "worker",
                    max_loops: 1
                }
            ],
            max_loops: 1,
            swarm_type: "SequentialWorkflow",
            task: "Research AI advancements."
        },
        {
            name: "Batch Swarm 2",
            description: "Second swarm in the batch",
            agents: [
                {
                    agent_name: "Writing Agent",
                    description: "Writes content",
                    system_prompt: "You are a content writer.",
                    model_name: "gpt-4o",
                    role: "worker",
                    max_loops: 1
                },
                {
                    agent_name: "Editing Agent",
                    description: "Edits content",
                    system_prompt: "You are an editor.",
                    model_name: "gpt-4o",
                    role: "worker",
                    max_loops: 1
                }
            ],
            max_loops: 1,
            swarm_type: "SequentialWorkflow",
            task: "Write a summary of AI research."
        }
    ];

    try {
        const response = await fetch(`${API_BASE_URL}/v1/swarm/batch/completions`, {
            method: 'POST',
            headers: {
                'x-api-key': API_KEY,
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(batchSwarms)
        });

        if (response.ok) {
            const results = await response.json();
            console.log(`Batch completed with ${results.length} swarms`);
            results.forEach((result: any, index: number) => {
                console.log(`Swarm ${index + 1}: ${result.swarm_name} - ${result.status}`);
            });
        } else {
            console.error(`Error: ${response.status} - ${await response.text()}`);
        }
    } catch (error) {
        console.error("Request failed:", error);
    }
}

runBatchSwarms();
```

Example Response:

[
  {
    "status": "success",
    "swarm_name": "risk-analysis",
    "task": "Analyze risk factors for investment portfolio",
    "output": {...},
    "metadata": {...}
  },
  {
    "status": "success",
    "swarm_name": "market-sentiment",
    "task": "Assess current market sentiment for technology sector",
    "output": {...},
    "metadata": {...}
  }
]

Individual Agent Endpoints

Run Single Agent

Run a single agent with the specified configuration.

Endpoint: /v1/agent/completions
Method: POST
Rate Limit: 100 requests per 60 seconds

Request Parameters:

Field Type Description Required
agent_config AgentSpec Configuration for the agent Yes
task string The task to be completed by the agent Yes

=== "Shell (curl)" bash curl -X POST "https://api.swarms.world/v1/agent/completions" \ -H "x-api-key: your_api_key_here" \ -H "Content-Type: application/json" \ -d '{ "agent_config": { "agent_name": "Research Assistant", "description": "Helps with research tasks", "system_prompt": "You are a research assistant expert.", "model_name": "gpt-4o", "max_loops": 1, "max_tokens": 8192, "temperature": 0.5 }, "task": "Research the latest developments in quantum computing." }'

=== "Python (requests)" ```python import requests import json

API_BASE_URL = "https://api.swarms.world"
API_KEY = "your_api_key_here"

headers = {
    "x-api-key": API_KEY,
    "Content-Type": "application/json"
}

agent_request = {
    "agent_config": {
        "agent_name": "Research Assistant",
        "description": "Helps with research tasks",
        "system_prompt": "You are a research assistant expert.",
        "model_name": "gpt-4o",
        "max_loops": 1,
        "max_tokens": 8192,
        "temperature": 0.5
    },
    "task": "Research the latest developments in quantum computing."
}

response = requests.post(
    f"{API_BASE_URL}/v1/agent/completions",
    headers=headers,
    json=agent_request
)

if response.status_code == 200:
    result = response.json()
    print(f"Agent {result['name']} completed successfully!")
    print(f"Usage: {result['usage']['total_tokens']} tokens")
    print(f"Output: {result['outputs']}")
else:
    print(f"Error: {response.status_code} - {response.text}")
```

=== "TypeScript (fetch)" ```typescript interface AgentConfig { agent_name: string; description: string; system_prompt: string; model_name: string; max_loops: number; max_tokens: number; temperature: number; }

interface AgentRequest {
    agent_config: AgentConfig;
    task: string;
}

const API_BASE_URL = "https://api.swarms.world";
const API_KEY = "your_api_key_here";

async function runSingleAgent(): Promise<void> {
    const agentRequest: AgentRequest = {
        agent_config: {
            agent_name: "Research Assistant",
            description: "Helps with research tasks",
            system_prompt: "You are a research assistant expert.",
            model_name: "gpt-4o",
            max_loops: 1,
            max_tokens: 8192,
            temperature: 0.5
        },
        task: "Research the latest developments in quantum computing."
    };

    try {
        const response = await fetch(`${API_BASE_URL}/v1/agent/completions`, {
            method: 'POST',
            headers: {
                'x-api-key': API_KEY,
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(agentRequest)
        });

        if (response.ok) {
            const result = await response.json();
            console.log(`Agent ${result.name} completed successfully!`);
            console.log(`Usage: ${result.usage.total_tokens} tokens`);
            console.log(`Output:`, result.outputs);
        } else {
            console.error(`Error: ${response.status} - ${await response.text()}`);
        }
    } catch (error) {
        console.error("Request failed:", error);
    }
}

runSingleAgent();
```

Example Response:

{
  "id": "agent-abc123",
  "success": true,
  "name": "Research Assistant",
  "description": "Helps with research tasks",
  "temperature": 0.5,
  "outputs": {},
  "usage": {
    "input_tokens": 150,
    "output_tokens": 450,
    "total_tokens": 600
  },
  "timestamp": "2024-03-05T12:34:56.789Z"
}

AgentCompletion Model

The AgentCompletion model defines the configuration for running a single agent task.

Field Type Description Required
agent_config AgentSpec The configuration of the agent to be completed Yes
task string The task to be completed by the agent Yes
history Dict[str, Any] The history of the agent's previous tasks and responses No

AgentSpec Model

The AgentSpec model defines the configuration for an individual agent.

Field Type Default Description Required
agent_name string None The unique name assigned to the agent Yes
description string None Detailed explanation of the agent's purpose No
system_prompt string None Initial instruction provided to the agent No
model_name string "gpt-4o-mini" Name of the AI model to use No
auto_generate_prompt boolean false Whether to auto-generate prompts No
max_tokens integer 8192 Maximum tokens in response No
temperature float 0.5 Controls randomness (0-1) No
role string "worker" Role of the agent No
max_loops integer 1 Maximum iterations No
tools_list_dictionary List[Dict] None Available tools for the agent No
mcp_url string None URL for Model Control Protocol No

Execute a task using a single agent with specified configuration.

Endpoint: /v1/agent/completions
Method: POST
Rate Limit: 100 requests per 60 seconds

Request Body:

{
  "agent_config": {
    "agent_name": "Research Assistant",
    "description": "Specialized in research and analysis",
    "system_prompt": "You are an expert research assistant.",
    "model_name": "gpt-4o",
    "auto_generate_prompt": false,
    "max_tokens": 8192,
    "temperature": 0.5,
    "role": "worker",
    "max_loops": 1,
    "tools_list_dictionary": [
      {
        "name": "search",
        "description": "Search the web for information",
        "parameters": {
          "query": "string"
        }
      }
    ],
    "mcp_url": "https://example-mcp.com"
  },
  "task": "Research the latest developments in quantum computing and summarize key findings",
  "history": {
    "previous_research": "Earlier findings on quantum computing basics...",
    "user_preferences": "Focus on practical applications..."
  }
}

Response:

{
  "id": "agent-abc123xyz",
  "success": true,
  "name": "Research Assistant",
  "description": "Specialized in research and analysis",
  "temperature": 0.5,
  "outputs": {
    "research_summary": "...",
    "key_findings": [
      "..."
    ]
  },
  "usage": {
    "input_tokens": 450,
    "output_tokens": 850,
    "total_tokens": 1300,
    "mcp_url": 0.1
  },
  "timestamp": "2024-03-05T12:34:56.789Z"
}

Run Batch Agents

Execute multiple agent tasks in parallel.

Endpoint: /v1/agent/batch/completions
Method: POST
Rate Limit: 100 requests per 60 seconds
Maximum Batch Size: 10 requests Input A list of AgentCompeletion inputs

=== "Shell (curl)" bash curl -X POST "https://api.swarms.world/v1/agent/batch/completions" \ -H "x-api-key: your_api_key_here" \ -H "Content-Type: application/json" \ -d '[ { "agent_config": { "agent_name": "Market Analyst", "description": "Expert in market analysis", "system_prompt": "You are a financial market analyst.", "model_name": "gpt-4o", "temperature": 0.3 }, "task": "Analyze the current market trends in AI technology sector" }, { "agent_config": { "agent_name": "Technical Writer", "description": "Specialized in technical documentation", "system_prompt": "You are a technical documentation expert.", "model_name": "gpt-4o", "temperature": 0.7 }, "task": "Create a technical guide for implementing OAuth2 authentication" } ]'

=== "Python (requests)" ```python import requests import json

API_BASE_URL = "https://api.swarms.world"
API_KEY = "your_api_key_here"

headers = {
    "x-api-key": API_KEY,
    "Content-Type": "application/json"
}

batch_agents = [
    {
        "agent_config": {
            "agent_name": "Market Analyst",
            "description": "Expert in market analysis",
            "system_prompt": "You are a financial market analyst.",
            "model_name": "gpt-4o",
            "temperature": 0.3
        },
        "task": "Analyze the current market trends in AI technology sector"
    },
    {
        "agent_config": {
            "agent_name": "Technical Writer",
            "description": "Specialized in technical documentation",
            "system_prompt": "You are a technical documentation expert.",
            "model_name": "gpt-4o",
            "temperature": 0.7
        },
        "task": "Create a technical guide for implementing OAuth2 authentication"
    }
]

response = requests.post(
    f"{API_BASE_URL}/v1/agent/batch/completions",
    headers=headers,
    json=batch_agents
)

if response.status_code == 200:
    result = response.json()
    print(f"Batch completed with {result['total_requests']} agents")
    print(f"Execution time: {result['execution_time']} seconds")
    print("\nResults:")
    for i, agent_result in enumerate(result['results']):
        print(f"  Agent {i+1}: {agent_result['name']} - {agent_result['success']}")
else:
    print(f"Error: {response.status_code} - {response.text}")
```

=== "TypeScript (fetch)" ```typescript interface AgentConfig { agent_name: string; description: string; system_prompt: string; model_name: string; temperature: number; }

interface AgentCompletion {
    agent_config: AgentConfig;
    task: string;
}

const API_BASE_URL = "https://api.swarms.world";
const API_KEY = "your_api_key_here";

async function runBatchAgents(): Promise<void> {
    const batchAgents: AgentCompletion[] = [
        {
            agent_config: {
                agent_name: "Market Analyst",
                description: "Expert in market analysis",
                system_prompt: "You are a financial market analyst.",
                model_name: "gpt-4o",
                temperature: 0.3
            },
            task: "Analyze the current market trends in AI technology sector"
        },
        {
            agent_config: {
                agent_name: "Technical Writer",
                description: "Specialized in technical documentation",
                system_prompt: "You are a technical documentation expert.",
                model_name: "gpt-4o",
                temperature: 0.7
            },
            task: "Create a technical guide for implementing OAuth2 authentication"
        }
    ];

    try {
        const response = await fetch(`${API_BASE_URL}/v1/agent/batch/completions`, {
            method: 'POST',
            headers: {
                'x-api-key': API_KEY,
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(batchAgents)
        });

        if (response.ok) {
            const result = await response.json();
            console.log(`Batch completed with ${result.total_requests} agents`);
            console.log(`Execution time: ${result.execution_time} seconds`);
            console.log("\nResults:");
            result.results.forEach((agentResult: any, index: number) => {
                console.log(`  Agent ${index + 1}: ${agentResult.name} - ${agentResult.success}`);
            });
        } else {
            console.error(`Error: ${response.status} - ${await response.text()}`);
        }
    } catch (error) {
        console.error("Request failed:", error);
    }
}

runBatchAgents();
```

Response:

{
  "batch_id": "agent-batch-xyz789",
  "total_requests": 2,
  "execution_time": 15.5,
  "timestamp": "2024-03-05T12:34:56.789Z",
  "results": [
    {
      "id": "agent-abc123",
      "success": true,
      "name": "Market Analyst",
      "outputs": {
        "market_analysis": "..."
      },
      "usage": {
        "input_tokens": 300,
        "output_tokens": 600,
        "total_tokens": 900
      }
    },
    {
      "id": "agent-def456",
      "success": true,
      "name": "Technical Writer",
      "outputs": {
        "technical_guide": "..."
      },
      "usage": {
        "input_tokens": 400,
        "output_tokens": 800,
        "total_tokens": 1200
      }
    }
  ]
}

Production Examples

Error Handling

The Swarms API follows standard HTTP status codes for error responses:

Status Code Meaning Handling Strategy
400 Bad Request Validate request parameters before sending
401 Unauthorized Check API key validity
403 Forbidden Verify API key permissions
404 Not Found Check endpoint URL and resource IDs
429 Too Many Requests Implement exponential backoff retry logic
500 Internal Server Error Retry with backoff, then contact support

Error responses include a detailed message explaining the issue:

{
  "detail": "Failed to create swarm: Invalid swarm_type specified"
}

Rate Limiting

Description Details
Rate Limit 100 requests per 60-second window
Exceed Consequence 429 status code returned
Recommended Action Implement retry logic with exponential backoff

Billing & Cost Management

Cost Factor Description
Agent Count Base cost per agent
Input Tokens Cost based on size of input data and prompts
Output Tokens Cost based on length of generated responses
Time of Day Reduced rates during nighttime hours (8 PM to 6 AM PT)
Cost Information Included in each response's metadata

Best Practices

Task Description

Practice Description
Detail Provide detailed, specific task descriptions
Context Include all necessary context and constraints
Structure Structure complex inputs for easier processing

Agent Configuration

Practice Description
Simple Tasks Use AutoSwarmBuilder for automatic agent generation
Complex Tasks Manually define agents with specific expertise
Workflow Use appropriate swarm_type for your workflow pattern

Production Implementation

Practice Description
Error Handling Implement robust error handling and retries
Logging Log API responses for debugging and auditing
Cost Monitoring Monitor costs closely during development and testing

Cost Optimization

Practice Description
Batching Batch related tasks when possible
Scheduling Schedule non-urgent tasks during discount hours
Scoping Carefully scope task descriptions to reduce token usage
Caching Cache results when appropriate

Support

Support Type Contact Information
Documentation https://docs.swarms.world
Email kye@swarms.world
Community https://discord.gg/jM3Z6M9uMq
Marketplace https://swarms.world
Website https://swarms.ai

Service Tiers

Standard Tier

Feature Description
Processing Default processing tier
Execution Immediate execution
Priority Higher priority processing
Pricing Standard pricing
Timeout 5-minute timeout limit

Flex Tier

Feature Description
Cost Lower cost processing
Retries Automatic retries (up to 3 attempts)
Timeout 15-minute timeout
Discount 75% discount on token costs
Suitability Best for non-urgent tasks
Backoff Exponential backoff on resource contention
Configuration Set service_tier: "flex" in SwarmSpec