---
title: "Create N seats from one template"
method: POST
path: "/agents/batch"
---

# Create N seats from one template

`POST /agents/batch`

## Request

- Base URL: `https://getsanction.com/api/v1`
- URL: `https://getsanction.com/api/v1/agents/batch`
- Auth: API key in header `x-mgmt-key`

Seat wallets: stamp one template (budgets, clearance, expiry) across up to 50 seats in a single call — e.g. five engineering seats at $20/day expiring end of quarter. Provide seats[] (names + optional holders) or name_prefix + count. Each seat's API key is shown once; only hashes are stored. Management-plane.

## Request body

- BatchSeatsRequest
  - `wallet_id` string, required
  - `seats` object[]
    - `name` string, required
    - `holder` string: Who holds this seat (display/audit)
  - `name_prefix` string: With count: mints prefix-1..prefix-N
  - `count` integer
  - `template` object
    - `daily_token_budget_usd` number
    - `daily_spend_budget_usd` number
    - `per_transaction_max_usd` number
    - `escalate_over_usd` number
    - `clearance` integer
    - `industry` 'general' | 'healthcare' | 'legal' | 'financial' | 'enterprise'
    - `expires_at` string, date-time: Contractor auto-shutoff: every seat's key fails closed past this instant

## Response `201`

Seats created; each api_key shown once

- BatchSeatsResponse
  - `wallet_id` string
  - `seats` object[]
    - `id` string
    - `name` string
    - `holder` string
    - `expires_at` string, date-time
    - `api_key` string: Shown once; only the hash is stored
    - `api_key_prefix` string
  - `warning` string

## Other responses

- `400`: Invalid request (missing roster, or over the 50-seat cap)
- `401`: Missing or invalid management key

---

[API](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api.md) · [All operations](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getsanction/apis/sanction-agent-governance-api/revisions/c645a9e4b72d?raw)
