---
title: "Pay for metered agent-authority verification"
method: POST
path: "/api/x402/verify"
tags: ["Verification Records"]
---

# Pay for metered agent-authority verification

`POST /api/x402/verify`

## Request

- Base URL: `https://flint.network`
- URL: `https://flint.network/api/x402/verify`
- Auth: API key in header `PAYMENT-SIGNATURE` and API key in header `FLINT-CAPABILITY` and API key in header `DPoP`

High-assurance x402 lane. The unpaid challenge is bounded. A paid retry must present a request-bound FLINT capability and DPoP proof before facilitator, provider, model, or record work becomes eligible.

## Headers

- `PAYMENT-SIGNATURE` string
- `FLINT-CAPABILITY` string
- `DPoP` string

## Request body

- X402VerifyRequest
  - `nonce` string, required: Unique replay-protection nonce. UUID v4 is recommended.
  - `timestamp` string, date-time, required: Request timestamp. Must be within the server replay-protection window.
  - `partner_id` string: Merchant or platform identifier used for partner-scoped public IDs.
  - `merchant_reference` string: Merchant transaction, invoice, or API access reference.
  - `transaction` TransactionIntent, required
    - `amount_display` string, required: Human-readable transaction amount.
    - `amount_atomic` string, nullable: Atomic token amount when available.
    - `asset` string: Asset symbol, such as USDC.
    - `chain` string: CAIP-2 chain identifier.
    - `counterparty_address` string, nullable: Wallet or counterparty address.
    - `merchant_reference` string, nullable: Merchant reference for the intended action.
    - `tx_intent_hash` string, nullable: Optional hash of the transaction intent.
  - `declared_scope` AuthorizationScope
    - `max_amount_per_tx_display` string: Maximum amount authorized per transaction.
    - `allowed_counterparties` string[]: Allowed merchant references or counterparties.
    - `time_window_end` string, date-time: Expiration time for the declared scope.
  - `agent_claim` AgentClaim, required
    - `agent_id` string: Agent-provided stable identifier or handle.
    - `principal_hint` string: Principal or authority hint supplied by the agent.
    - `agent_runtime_hint` string: Agent runtime category, such as browser, api_client, or api_meter.
    - `wallet_type` string: Wallet or account type claimed by the agent.
  - `passport_id` string: Optional verified Agent Passport used by the owner-issued preflight capability.

## Response `200`

Payment settled and FLINT issued a signed verification record. Receipt state is reported separately and truthfully.

- X402VerifyResponse
  - `ok` unknown, required
  - `verdict` 'allow' | 'step_up' | 'review' | 'block', required
  - `score` number, required
  - `confidence` number
  - `top_reasons` string[]
  - `record_id` string, required
  - `record_url` string, uri, nullable, required: Human-readable authorization record URL, derived by FLINT from the record ID.
  - `receipt_url` string, uri, nullable, required: Machine retrieval URL for the signed settlement-receipt envelope.
  - `receipt_page_url` string, uri, nullable, required: Human-readable Scout service-payment receipt URL.
  - `signed_record` string, required: ES256 compact JWS for the authorization record.
  - `record` HybridEnvelope, required
    - `envelope_version` string, nullable
    - `jws` string, required: ES256 compact JWS.
    - `pq_signature` string, nullable: Parallel ML-DSA-65 signature when configured.
    - `pq_kid` string, nullable
    - `pq_alg` string, nullable
  - `step_up` object
  - `compliance` object
  - `receipt_status` 'issued' | 'unavailable' | 'disabled' | 'not_issued', required
  - `settlement_receipt` object, nullable, required
    - `receipt_id` string, required
    - `record` HybridEnvelope, required
      - `envelope_version` string, nullable
      - `jws` string, required: ES256 compact JWS.
      - `pq_signature` string, nullable: Parallel ML-DSA-65 signature when configured.
      - `pq_kid` string, nullable
      - `pq_alg` string, nullable
    - `idempotent` boolean, required

## Other responses

- `400`: Invalid request
- `402`: Canonical x402 v2 payment challenge. No protected or expensive work has executed.
- `403`: The paid retry failed capability, DPoP, replay, or caller-admission policy before expensive work.
- `409`: Conflict or idempotency collision
- `500`: Server error
- `502`: Upstream graph or service failure

---

[API](https://skmtc.dev/flint/apis/flint-agent-transaction-control-api.md) · [All operations](https://skmtc.dev/flint/apis/flint-agent-transaction-control-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flint/apis/flint-agent-transaction-control-api/revisions/eb5052b7b5dc?raw)
