---
title: "Create an agent"
method: POST
path: "/v1/agents"
tags: ["Agents"]
---

# Create an agent

`POST /v1/agents`

Create an agent bound to an ACTIVE customer and one funding account. The agent has no credential until you issue a key. Requires a console session or an unconstrained organization key.

## Headers

- `X-API-Key` string

## Request body

- CreateAgentDto
  - `name` string, required
  - `description` string
  - `customerId` string, required — Principal customer. Must be ACTIVE. Every transfer the agent makes uses this as onBehalfOf.
  - `sourceAccountId` string, required — The only account the agent may debit. Must belong to customerId.
  - `allowedDestinationAccountIds` string[], nullable — Destination accounts the agent may pay. Omit or null for any approved destination of customerId; [] for none.
  - `limits` AgentLimitsDto, required
    - `currency` string, required — Currency the limits are denominated in (ISO 4217 for fiat, symbol for crypto). Must equal the transfer source currency; limits are not converted.
    - `perTransaction` string, required — Maximum amount of a single transfer, in smallest unit as a string (cents for USD, 6 decimals for USDC).
    - `perDay` string, nullable — Maximum total submitted per UTC calendar day, in smallest unit. Omit or null for no daily cap.
    - `perMonth` string, nullable — Maximum total submitted per UTC calendar month, in smallest unit. Omit or null for no monthly cap.
  - `metadata` object — Free-form key/value pairs

## Response `201`

- AgentResponseDto
  - `id` string, required
  - `name` string, required
  - `description` string, nullable, required
  - `customerId` string, required
  - `sourceAccountId` string, required
  - `allowedDestinationAccountIds` string[], nullable, required
  - `limits` AgentLimitsDto, required
    - `currency` string, required — Currency the limits are denominated in (ISO 4217 for fiat, symbol for crypto). Must equal the transfer source currency; limits are not converted.
    - `perTransaction` string, required — Maximum amount of a single transfer, in smallest unit as a string (cents for USD, 6 decimals for USDC).
    - `perDay` string, nullable — Maximum total submitted per UTC calendar day, in smallest unit. Omit or null for no daily cap.
    - `perMonth` string, nullable — Maximum total submitted per UTC calendar month, in smallest unit. Omit or null for no monthly cap.
  - `status` 'ACTIVE' | 'PAUSED' | 'REVOKED', required
  - `metadata` object, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `401` — Unauthorized - Invalid or missing authentication credentials

## Changes

- **2026-09-23** `da62fa03793e` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/infinite/apis/infinite-api/changes/v1/agents/post.md)

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) · [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) · [OpenAPI document](https://skmtc.dev/infinite/apis/infinite-api/revisions/da62fa03793e?raw)
