Skip to main content

Agent Swarms

The Agent Swarm API lets you submit work to a coordinated team of specialist agents. Tasks are queued asynchronously — submit a task and poll for results using the returned task_id.

Base URL: https://api.ainative.studio

Authentication: JWT bearer or API key. All endpoints require Authorization: Bearer <your_api_key>.


Supported Agent Types

When submitting a task you can specify which agent roles to involve. The following types are supported:

TypeRole
architectSystem design and high-level planning
backendServer-side implementation
frontendUI and client-side implementation
qaTesting and quality assurance
devopsInfrastructure and deployment
dataData pipeline and analytics
securityVulnerability and threat analysis
docsDocumentation authoring

If agent_types is omitted, the swarm defaults to ["architect", "backend", "qa"].


Task Lifecycle

submitted → queued → running → completed
↘ failed

Poll GET /api/v1/agent-swarm/tasks/{task_id} until status is completed or failed. The result field is populated on completion.


Endpoints

Submit a Swarm Task

POST /api/v1/agent-swarm/tasks

Queue a new task for execution. Returns immediately with status: queued and a task_id to poll.

Request body

FieldTypeRequiredDescription
descriptionstringYesNatural-language task description (1–4096 chars)
agent_typesstring[]NoAgent roles to involve. Defaults to ["architect", "backend", "qa"]. Optional when registry_agent_id is provided.
registry_agent_idstringNoID of a registered agent from the agent cloud registry. When provided, agent config is loaded from the registry.
configobjectNoArbitrary key-value config forwarded to the swarm execution context
curl -X POST https://api.ainative.studio/api/v1/agent-swarm/tasks \
-H "Authorization: Bearer <your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"description": "Add rate limiting middleware to all public API routes",
"agent_types": ["architect", "backend", "qa", "devops"],
"config": {
"repo": "my-org/api-service",
"branch": "main"
}
}'
import httpx

resp = httpx.post(
"https://api.ainative.studio/api/v1/agent-swarm/tasks",
headers={"Authorization": "Bearer <your_api_key>"},
json={
"description": "Add rate limiting middleware to all public API routes",
"agent_types": ["architect", "backend", "qa", "devops"],
"config": {"repo": "my-org/api-service", "branch": "main"},
},
)
task = resp.json()
task_id = task["task_id"]

Response 201 Created

{
"task_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "queued",
"description": "Add rate limiting middleware to all public API routes",
"agent_types": ["architect", "backend", "devops", "qa"],
"registry_agent_id": null,
"config": {
"repo": "my-org/api-service",
"branch": "main"
},
"result": null,
"agents_used": [],
"created_at": "2026-04-25T10:00:00Z",
"updated_at": "2026-04-25T10:00:00Z",
"owner_id": "user-uuid"
}

Submit Using a Registry Agent

You can bind a swarm task to a registered agent from the agent cloud registry. The swarm loads capabilities and config from the registry automatically. The agent must be ACTIVE and either public or owned by you.

curl -X POST https://api.ainative.studio/api/v1/agent-swarm/tasks \
-H "Authorization: Bearer <your_api_key>" \
-H "Content-Type: application/json" \
-d '{
"description": "Run a full security audit on the payment module",
"registry_agent_id": "550e8400-e29b-41d4-a716-446655440001"
}'

When registry_agent_id is provided, agent_types becomes optional. If omitted, the type is derived from the registry agent's agent_type field.


Get Task Status and Results

GET /api/v1/agent-swarm/tasks/{task_id}

Retrieve the current status and result for a previously submitted task. Returns 404 if the task does not exist or belongs to another user.

curl https://api.ainative.studio/api/v1/agent-swarm/tasks/f47ac10b-58cc-4372-a567-0e02b2c3d479 \
-H "Authorization: Bearer <your_api_key>"
import httpx, time

task_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
while True:
resp = httpx.get(
f"https://api.ainative.studio/api/v1/agent-swarm/tasks/{task_id}",
headers={"Authorization": "Bearer <your_api_key>"},
)
task = resp.json()
if task["status"] in ("completed", "failed"):
break
time.sleep(5)

print(task["result"])

Response when completed

{
"task_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "completed",
"description": "Add rate limiting middleware to all public API routes",
"agent_types": ["architect", "backend", "devops", "qa"],
"registry_agent_id": null,
"config": {...},
"result": {
"summary": "Rate limiting middleware implemented using token bucket algorithm",
"files_changed": ["middleware/rate_limit.py", "app/main.py"],
"tests_added": 12,
"coverage": "94%"
},
"agents_used": ["arch-agent-01", "backend-agent-03", "qa-agent-02"],
"created_at": "2026-04-25T10:00:00Z",
"updated_at": "2026-04-25T10:04:23Z",
"owner_id": "user-uuid"
}

Task status values

StatusDescription
queuedTask accepted, waiting for agent capacity
runningAgents are actively working on the task
completedTask finished successfully. result is populated.
failedTask could not be completed. Check result for error details.
cancelledTask was cancelled before execution

List Swarm Tasks

GET /api/v1/agent-swarm/tasks

Paginated list of all tasks submitted by the authenticated user, ordered by created_at descending.

Query parameters

ParamTypeDefaultDescription
statusstringFilter by status: queued, running, completed, failed, cancelled
limitinteger20Max results per page (1–100)
offsetinteger0Number of results to skip
# List only completed tasks
curl "https://api.ainative.studio/api/v1/agent-swarm/tasks?status=completed&limit=10" \
-H "Authorization: Bearer <your_api_key>"

Response

{
"tasks": [
{
"task_id": "f47ac10b-...",
"status": "completed",
"description": "Add rate limiting middleware...",
...
}
],
"total": 42,
"limit": 10,
"offset": 0
}

Error Responses

StatusCause
401Missing or invalid authentication
403Task belongs to another user (private registry agent)
404Task not found
422Unknown agent_types value or invalid status filter
500Internal error — safe to retry