# Create a mandate

Source: https://immiscible.fly.dev/docs/api/post-api-w-wid-mandates

`POST /api/w/:wid/mandates`

Signed with Ed25519 on creation and recorded. Start from a template with `{ template, agentId }`, or write every field. See [mandates](https://immiscible.fly.dev/docs/concepts/mandates.md).

## Authentication

Session cookie. A signed-in person: the console's session cookie. Every state-changing request also carries the header `x-immiscible-csrf: 1`, and the member's role decides what it may do. Bearer tokens are ignored on these routes, so no machine credential can reach them.

## Path parameters

- `wid` (string, required): Workspace id

## Request

curl:

```bash
curl -X POST "https://immiscible.fly.dev/api/w/$IMMISCIBLE_WORKSPACE/mandates" \
  -H "cookie: __Host-sid=$IMMISCIBLE_SESSION" \
  -H "x-immiscible-csrf: 1" \
  -H "content-type: application/json" \
  -d '{
    "agentId": "agt_4f2c91a7",
    "kind": "payment",
    "title": "Supplier invoices",
    "currency": "GBP",
    "perTransaction": 200000,
    "perPeriod": 1000000,
    "period": "month",
    "merchants": {
      "allow": [
        "northwind.example"
      ],
      "block": []
    },
    "approveAbove": 50000,
    "newMerchant": "approve"
  }'
```

Node:

```ts
const res = await fetch('https://immiscible.fly.dev/api/w/$IMMISCIBLE_WORKSPACE/mandates', {
  method: 'POST',
  headers: {
    cookie: `__Host-sid=${process.env.IMMISCIBLE_SESSION}`,
    'x-immiscible-csrf': '1',
    'content-type': 'application/json',
  },
  body: JSON.stringify({
    agentId: 'agt_4f2c91a7',
    kind: 'payment',
    title: 'Supplier invoices',
    currency: 'GBP',
    perTransaction: 200000,
    perPeriod: 1000000,
    period: 'month',
    merchants: {
      allow: ['northwind.example'],
      block: [],
    },
    approveAbove: 50000,
    newMerchant: 'approve',
  }),
});
const data = await res.json();
console.log(res.status, data);
```

Python:

```python
import os
import requests

res = requests.post(
    "https://immiscible.fly.dev/api/w/$IMMISCIBLE_WORKSPACE/mandates",
    headers={
        "cookie": f"__Host-sid={os.environ['IMMISCIBLE_SESSION']}",
        "x-immiscible-csrf": "1",
        "content-type": "application/json",
    },
    json={
        "agentId": "agt_4f2c91a7",
        "kind": "payment",
        "title": "Supplier invoices",
        "currency": "GBP",
        "perTransaction": 200000,
        "perPeriod": 1000000,
        "period": "month",
        "merchants": {
            "allow": ["northwind.example"],
            "block": [],
        },
        "approveAbove": 50000,
        "newMerchant": "approve",
    },
)
print(res.status_code, res.json())
```
