Overview
create_page_proof
$0.10 USDC
MCP: create_page_proof
SDK: createPageProof()
Captures a timestamped page proof with page metadata, content hashes, and optional screenshot and text snapshot URLs.
POST /v1/create-page-proof
POST /x402/v1/create-page-proof
When an agent should use it
- Capture a lightweight audit trail before an agent acts on a public webpage.
- Record page metadata and hashes for price, policy, or availability checks.
- Create screenshot and text artifacts for later human review.
Input fields
Schema ref: #/components/schemas/CreatePageProofInput
| Field | Required | Type | Description |
url |
required |
string |
Public HTTP or HTTPS URL to fetch. Localhost, private IPs, link-local addresses, embedded credentials, unsafe redirects, and non-http(s) schemes are rejected. |
captureScreenshot |
optional |
boolean |
When true, attempt to capture a screenshot artifact for the page proof. Defaults to true. |
captureText |
optional |
boolean |
When true, save a text snapshot artifact for the page proof. Defaults to true. |
viewport |
optional |
object |
Optional browser viewport for page capture. Width supports 320-1920 and height supports 320-3000. |
Output fields
Schema ref: #/components/schemas/CreatePageProofOutput
| Field | Required | Type | Description |
proofId |
required |
string |
Stable identifier for the created page proof. |
url |
required |
string |
Public HTTP or HTTPS URL to fetch. Localhost, private IPs, link-local addresses, embedded credentials, unsafe redirects, and non-http(s) schemes are rejected. |
finalUrl |
required |
string |
Final URL after safe redirects. Null only on schemas that explicitly allow null when a final URL could not be established. |
timestamp |
required |
string |
ISO timestamp when the page proof was created. |
statusCode |
required |
integer,null |
HTTP status code observed during page capture. Null means no status code was available. |
title |
required |
string,null |
Page title when one can be extracted. Null means no title was found. |
contentHash |
required |
string |
Hash of the returned or captured content for comparison, caching, and lightweight audit trails. |
textHash |
required |
string,null |
Hash of the captured text snapshot. Null when text capture was disabled or no text artifact was produced. |
screenshotUrl |
required |
string,null |
URL for the screenshot artifact. Null when screenshot capture was disabled or unavailable. |
textSnapshotUrl |
required |
string,null |
URL for the text artifact. Null when text capture was disabled or unavailable. |
curl example
curl -s https://primitive402.dev/v1/create-page-proof \
-H 'content-type: application/json' \
-d '{
"url": "https://example.com",
"captureScreenshot": false,
"captureText": true
}' | jq
TypeScript SDK example
import { createNano402Client } from "@nano402/api/sdk";
const client = createNano402Client({
baseUrl: "https://primitive402.dev"
});
const result = await client.createPageProof({
"url": "https://example.com",
"captureScreenshot": false,
"captureText": true
});
console.log(result);
Example response snippet
{
"proofId": "proof_...",
"timestamp": "2026-05-08T00:00:00.000Z",
"contentHash": "sha256:..."
}
Safety notes
- A page proof is not a certified proof or legally binding record.
- URL fetching and page capture use SSRF protection before navigation.
- Screenshots and text snapshots can contain untrusted external content.
Common errors
400 invalid_request: request body failed validation.
402 payment_required: the x402 route was called without a valid payment header.
429: rate limit exceeded.
500 internal_error: unexpected server error.