---
title: "Bulk Create Agents"
method: POST
path: "/api/v1/agents/bulk"
tags: ["agents"]
---

# Bulk Create Agents

`POST /api/v1/agents/bulk`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/agents/bulk`
- Auth: none declared

Bulk-register agents from CSV / a registry export (RES-009 §X #13).

Each row is processed independently: a duplicate name in row 7 doesn't
block rows 8..N. The response gives a per-row status with the original
index so the UI can render line-numbered errors next to the upload preview.

Duplicates are reported as "skipped_duplicate" rather than an error
because re-running the same CSV is a common workflow (re-import after
a fix in row 12 shouldn't fail rows 1-11 that already exist).

## Request body

- AgentBulkCreate: Bulk-create payload for the /agents/bulk endpoint (RES-009 §X #13). Caps the batch at 100 to keep a single request bounded — past that the user should split into multiple POSTs so a partial failure is diagnosable. The response surfaces per-row results so the caller can show line-numbered errors.
  - `agents` AgentCreate[], required
    - `name` string, required
    - `description` string, nullable
    - `endpoint` string, nullable
    - `team_id` string, uuid, nullable: Create directly as a workspace-owned agent.
    - `manifest_url` string, nullable
    - `provider_name` string, nullable
    - `provider_url` string, nullable
    - `model_name` string, nullable
    - `model_provider` string, nullable
    - `architecture` string, nullable
    - `agent_version` string, nullable
    - `domains` string, nullable: Comma-separated domain list
    - `tags` string, nullable: Comma-separated tags
    - `payload_schema` 'badge_native' | 'openai_chat' | 'anthropic_messages': Outbound request body shape — see arena._build_request_payload.
    - `connection_mode` 'http_endpoint' | 'daemon_pull': Supported connectivity mode. 'http_endpoint' dispatches to a customer-controlled HTTPS endpoint; 'daemon_pull' uses the customer-side daemon when enabled.

## Response `200`

Successful Response

- AgentBulkResult
  - `created_count` integer, required
  - `skipped_count` integer, required
  - `error_count` integer, required
  - `rows` AgentBulkResultRow[], required
    - `index` integer, required
    - `name` string, required
    - `status` string, required
    - `agent_id` string, uuid, nullable
    - `error` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
