---
search:
  tags:
    - Merchant Scoped
    - POST
seo:
  description: >-
    Requires merchant scope vouchers:introspect. Verifies the voucher JWT…
    Reference for the POST /v1/vouchers/introspect endpoint in the agentsub
    Gateway API.
sidebar:
  label: Verify an ACS voucher offline-equivalent
  badge: POST
title: Verify an ACS voucher offline-equivalent
type: openapi-operation
---
Requires merchant scope `vouchers:introspect`. Verifies the voucher JWT signature against the platform JWKS, the merchant and offer binding, and reports whether the backing hold is still active.

`POST /v1/vouchers/introspect`

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

- `voucher` (string, required)
- `offerId` (string, required)

Request body example:

```json
{
  "voucher": "string",
  "offerId": "string"
}
```

**Responses**

- `200` — Voucher claims and activity
- `400` — \`invalid\_input\` problem
- `401` — \`unauthorized\` problem; live 401s advertise \`WWW-Authenticate: Bearer resource\_metadata=...\`
- `403` — Identity, ownership, scope or policy denied (\`human\_required\`, \`owner\_claim\_required\`, \`scope\_required\`, \`FROZEN\`, \`CAP\_EXCEEDED\`, \`SCOPE\_FORBIDDEN\`)
- `503` — Runtime or provider configuration unavailable (\`runtime\_configuration\_required\`, \`signing\_configuration\_required\`, \`runtime\_unavailable\`, \`workspace\_unavailable\`, \`provider\_configuration\_required\`)

Response example, 200:

```json
{
  "active": true,
  "claims": {}
}
```
