---
title: "MERCURY Cited Notarize"
method: GET
path: "/buy/notarize"
tags: ["notarize", "notary", "content-notary", "provenance", "attestation", "signed-receipt", "timestamp", "content-hash", "sha256", "tamper-evident", "verifiable-data-record", "agent-native", "keyless", "rag"]
---

# MERCURY Cited Notarize

`GET /buy/notarize`

## Request

- Base URL: `https://network.mercury-hq.com`
- URL: `https://network.mercury-hq.com/buy/notarize`
- Auth: none declared
- TypeScript: <https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/docs/buy/notarize/get.ts> (a function with typed inputs; its response is checked against the schema)

Notarize any content (inline ?content= or a fetched ?url=) into a signed, offline-verifiable provenance receipt — sha256 contentHash + witnessed timestamp, attested by Mercury's pinned key. Deterministic, keyless, no LLM. The signed receipt is the product: it witnesses that these exact bytes existed in this exact form at this time (the one thing your own sha256() can't — a third-party witness).

## Query parameters

- `url` string: a page (http/https) to fetch + notarize its cleaned text. Provide EITHER url OR content, not both.
- `content` string: inline content (UTF-8, ≤256KB) to notarize directly — bytes you already hold. Provide EITHER url OR content, not both.

## Response `200`

Delivered after the x402 payment settles on Base mainnet.

- object
  - `ok` boolean, required: true on success; false on an honest failure (never charged)
  - `url` string, required: echo of the notarized source identifier (the url, or 'inline:content')
  - `status` integer: 200 on success; upstream status when a fetched url failed
  - `text` string: the CANONICAL notarization statement — the exact string the seller's EIP-191 receipt signs over. Newline-joined, fixed field order, reconstructable byte-for-byte for offline verification.
  - `data` object: the structured notarization record the buyer consumes
    - `algorithm` string: the content-hash algorithm (sha256)
    - `contentHash` string: 0x… sha256 hex of the exact notarized bytes
    - `byteLength` integer: byte length of the notarized content (UTF-8)
    - `source` string: where the content came from: the final url, or 'inline:content'
    - `sourceKind` 'url' | 'inline': url = fetched; inline = buyer-supplied
    - `witnessedAt` string: ISO-8601 time Mercury witnessed (== fetchedAt of the read)
    - `statementVersion` string: versioned notarization scheme id
    - `verify` object: how to verify OFFLINE without Mercury's SDK
      - `howTo` string
      - `wellKnown` string: where the witness key is publicly pinned
  - `fetchedAt` string: ISO-8601 witness time (mirrors data.witnessedAt)
  - `error` string: present only when ok:false

## Other responses

- `402`: Payment Required — retry with an x402-signed payment (e.g. x402-fetch). Terms are in the challenge body (x402 v1).

---

[API](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront.md) - [All operations](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/llms.txt) - [OpenAPI document](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/revisions/211aa7db24ae?raw)
