---
title: "Page Exists (x402)"
method: POST
path: "/x402/v2/page-exists"
tags: ["x402"]
---

# Page Exists (x402)

`POST /x402/v2/page-exists`

## Request

- Base URL: `https://api.strale.io`
- URL: `https://api.strale.io/x402/v2/page-exists`
- Auth: none required

Check whether a URL still exists — catches hard 404s, soft-404 pages, dead links, and removed listings that still return HTTP 200.

## Request body

- object
  - `url` string, required: URL to check for content-level existence
  - `timeout_ms` integer: Request timeout in milliseconds (clamped to 1000-30000, default 10000)

## Response `200`

Success

- object
  - `url` string
  - `error` string: Present only on network/timeout failures.
  - `title` string, nullable
  - `exists` boolean, nullable: Three-state. true = page appears to exist; false = page appears gone (hard or soft 404); null = indeterminate (blocked by bot detection, server error, or network failure) — treat as "unknown", not as either answer.
  - `reason` 'ok' | 'non_html_content' | 'hard_404' | 'soft_404_title' | 'soft_404_body' | 'soft_404_body_and_redirect' | 'redirected_to_generic' | 'thin_content' | 'access_blocked' | 'server_error' | 'unexpected_status' | 'timeout' | 'redirect_loop' | 'dns_error' | 'network_error'
  - `signals` string[]: Every heuristic that fired, independent of the final verdict.
  - `final_url` string, nullable
  - `checked_at` string
  - `confidence` 'high' | 'medium' | 'low' | 'null', nullable: null whenever exists is null. Do not act on "low" alone.
  - `redirected` boolean: Compared against the normalized input URL, so trailing-slash/fragment normalization does not count as a redirect.
  - `status_code` integer, nullable
  - `content_length` integer, nullable: Decoded bytes actually fetched, capped at 20000 — exact for small pages, a lower bound for larger ones. Not the Content-Length header.

## Other responses

- `402`: Payment required (x402 — pay with USDC on Base)

---

[API](https://skmtc.dev/strale/apis/strale-api-2.md) · [All operations](https://skmtc.dev/strale/apis/strale-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/strale/apis/strale-api-2/revisions/a5293878cfc6?raw)
