---
title: "x402 v2 Wire-Format Migration Linter"
method: POST
path: "/v1/tools/lint_x402_v2_migration"
tags: ["TODO_TAGS_REVIEW", "TODO_AP2_EXPORT_REVIEW"]
---

# x402 v2 Wire-Format Migration Linter

`POST /v1/tools/lint_x402_v2_migration`

## Request

- Base URL: `https://ainumbers.co`
- URL: `https://ainumbers.co/v1/tools/lint_x402_v2_migration`
- Auth: none declared

Lints a supplied x402 header set / 402 response body against the Protocol Version 2 wire format: flags deprecated v1 headers (X-PAYMENT, X-PAYMENT-RESPONSE) and their v2 replacements (PAYMENT-SIGNATURE, PAYMENT-RESPONSE), flags v1 body-based PaymentRequirements delivery (v2 moves requirements into the PAYMENT-REQUIRED header as a client-selectable array), and checks the network id for CAIP-2 format. Declares protocol_version so a future wire bump is a data re-pin. Pinned to coinbase/x402 specs/x402-specification-v2.md (2025-12-09).

**Tool URL:** https://ainumbers.co/chaingraph/art-393-x402-v2-migration-linter.html

## Request body

- object

## Response `200`

Successful tool execution result

- object
  - `declared_protocol_version` string
  - `deprecated_headers_found` unknown[]
    - unknown
  - `errors` integer
  - `findings` object[]
    - `level` string
    - `msg` string
  - `inferred_wire_version` integer
  - `passes` integer
  - `protocol_version` integer
  - `score` integer
  - `spec_note` string
  - `v2_headers_found` unknown[]
    - unknown
  - `warnings` integer

---

[API](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite.md) · [All operations](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/llms.txt) · [OpenAPI document](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/revisions/b462e4f5bb28?raw)
