---
title: "Verify an x402 endpoint and decide whether it is ready to publish"
method: POST
path: "/api/verify/x402-readiness"
tags: ["x402-readiness", "provider-preflight", "agent-discovery"]
---

# Verify an x402 endpoint and decide whether it is ready to publish

`POST /api/verify/x402-readiness`

Run a free point-in-time readiness scan before an agent pays or a provider publishes. The response includes signed evidence plus an unsigned, grade-aware provider listing handoff: ready endpoints can validate metadata free before optionally buying the 0.50 USDC publication; non-ready endpoints are told to fix and re-verify before paying. Publication never buys readiness, ranking, traffic, leads, purchases, or safety.

## Request body

- object
  - `target_url` string, required — Service origin or paid endpoint URL to verify.

## Response `200`

Readiness report with fix recommendations

- X402ReadinessReport
  - `base_readiness_score` integer
  - `buyer_conversion_next_step` object — Unsigned handoff from endpoint readiness to the free end-to-end buyer-path diagnostic. A public buyer job is required before any repair is recommended.
    - `commercial_boundary` string
    - `free_diagnostic` object
    - `recommended_action` object
    - `schema` 'ontario.buyer_conversion_next_step.v1'
    - `signed_evidence_boundary` string
    - `status` 'buyer_job_required'
  - `evidence` object
  - `grade` 'ready' | 'close' | 'needs_work'
  - `integrity` ReportIntegrity
    - `algorithm` string
    - `canonical_sha256` string
    - `canonicalization` string
    - `key_id` string
    - `public_key` string
    - `signature` string
    - `signed_by` string
  - `max_score` integer
  - `normalized_base` string
  - `provider_listing_next_step` object — Unsigned grade-aware commercial handoff from free readiness evidence to free listing validation and the optional 0.50 USDC provider publication.
    - `free_validation` object
    - `publication` object
      - `asset` string
      - `listing_page` string, uri
      - `method` 'POST'
      - `network` 'eip155:8453'
      - `price_usdc` '0.50'
      - `url` string, uri
      - `value` string
    - `ready_for_listing_preflight` boolean
    - `recommended_action` object
    - `schema` 'ontario.provider_listing_next_step.v1'
    - `sequence` string[]
    - `signed_evidence_boundary` string
    - `status` 'ready_for_free_listing_validation' | 'fix_before_listing'
    - `trust_boundary` string
  - `readiness_score` integer
  - `recommendations` object[]
    - `detail` string
    - `docs_url` string
    - `id` string
    - `title` string
  - `report_id` string
  - `report_url` string
  - `signals` object
  - `status` string
  - `target_url` string
  - `verifier` string
  - `warning_penalty` integer
  - `warnings` object[]
    - `detail` string
    - `docs_url` string
    - `id` string
    - `severity` string
    - `title` string

## Other responses

- `400` — Missing or invalid target_url

---

[API](https://skmtc.net/ontarioprotocol/apis/ontario-protocol-x402-api.md) · [All operations](https://skmtc.net/ontarioprotocol/apis/ontario-protocol-x402-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ontarioprotocol/ontario-protocol-x402-api/versions/54384a1c4bf3/schema)
