---
title: "Create an AP2 mandate (open/closed)"
method: POST
path: "/mandates"
---

# Create an AP2 mandate (open/closed)

`POST /mandates`

## Request

- Base URL: `https://api.mechanofab.com/v1`
- URL: `https://api.mechanofab.com/v1/mandates`
- Auth: HTTP bearer

## Request body

- object
  - `type` 'open' | 'closed', required
  - `cap_usd` number, required
  - `rail` 'manual' | 'stripe'
  - `scope` object
  - `expires_at` string

## Response `201`

Mandate created

- object

## Other responses

- `400`: Invalid request/input.
- `401`: Missing/invalid credentials.
- `402`: Insufficient credits.
- `403`: Scope/tool forbidden.
- `404`: Unknown resource.
- `409`: Idempotency conflict.
- `429`: Rate limited.
- `503`: Control plane / runtime unavailable.

---

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