---
search:
  tags:
    - Payments
    - POST
seo:
  description: >-
    Requests Link approval to credit an owned agent. amountUsdCents is an…
    Reference for the POST /v1/payments/topups endpoint in the agentsub Gateway
    API.
sidebar:
  label: Request an agent top-up approval
  badge: POST
title: Request an agent top-up approval
type: openapi-operation
---
Requests Link approval to credit an owned agent. `amountUsdCents` is an integer 50–100000; `reason` must be 100–2000 chars. Optional `intentId` binds the top-up to a retained service intent. Agent tokens may only top up themselves (`403 agent_mismatch`). Typically invoked automatically by the gateway for retained intents.

`POST /v1/payments/topups`

**Request body** (`application/json`, required)

- `agentId` (string, required)
- `amountUsdCents` (integer, required)
- `reason` (string, required)
- `intentId` (string)

Request body example:

```json
{
  "agentId": "string",
  "amountUsdCents": 50,
  "reason": "stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstri",
  "intentId": "string"
}
```

**Responses**

- `200` — Top-up request (approval pending)
- `400` — \`invalid\_input\` or \`idempotency\_required\`
- `403` — \`agent\_mismatch\` or \`owner\_required\`
- `503` — \`payment\_unavailable\`

Response example, 200:

```json
{
  "id": "string",
  "agentId": "string",
  "amountUsdCents": 0,
  "status": "string",
  "kind": "checkout",
  "approvalUrl": "http://example.com",
  "checkoutUrl": "http://example.com",
  "nextAction": {
    "resolution": "string",
    "actionUrl": "http://example.com"
  },
  "intentId": "string"
}
```
