standing

// api

Certificates as an input to your product.

Everything this site shows, as JSON, read from the contract. Writes go to the contract itself, signed by your own wallet.

Read

methodpathreturns
GET/api/v1/certificatesThe newest certificates, newest first.
GET/api/v1/certificates/:idOne certificate, as the chain holds it.
GET/api/v1/certificates?url=The newest captures of one url, newest first.
GET/api/v1/certificates?digest=The first certificate carrying a claims digest, or a 404.
GET/api/v1/watches/:idA watch, with its page's history and the change between captures.
GET/api/v1/assessments?from=&to=The judgment of the change between two captures, or a 404.
GET/api/contract-sourceThe contract's source, byte for byte, as text.

Responses are cached for five seconds. Every field name mirrors the contract's own views, so the same record can be read off the chain with no part of this site.

A certificate

curl https://getstanding.xyz/api/v1/certificates/0

The newest certificate, rendered by the function that serves the endpoint.

{
  "certificate": {
    "id": 0,
    "url": "https://standing-henna.vercel.app/walkthrough/terms.html",
    "kind": "page",
    "claims": [
      "accounts with no activity for 12 months are closed",
      "northwind exchange is not a real business",
      "refunds are available within 30 days of purchase",
      "support replies to every ticket within one business day",
      "trading fee is 1 percent of each order",
      "withdrawals are limited to 5,000 gen per day"
    ],
    "claims_digest": "9661bc614f76fa23f65f9ab161746f05b1886c48f7c22481eb13d8307192f4d9",
    "cloaking": false,
    "at": "2026-09-16T01:08:05Z",
    "requester": "0x3e1D268c8B1Ba7d042968ab713467C5631831513",
    "watch_id": null,
    "previous": null,
    "records": "Independent validators each read this url at this time and confirmed every claim below against their own copy of the page.",
    "url_html": "https://getstanding.xyz/c/0"
  }
}

Write

Call the contract with any GenLayer client. Each payable call takes exactly the price its stats() view reports at that moment, and refuses anything else with a sentence saying so.

methodpricedoes
notarize(url)4 wei GENCertify what a page states now.
notarize_contracts(targets, method_sets)1 wei GEN eachRecord other contracts' zero-argument views, up to ten per call.
watch(url, cadence_hours)4 wei GEN per capturePrepay captures of a page on a cadence.
capture_watch(watch_id)freeTake a watch's due capture. Any account may.
assess(cert_a, cert_b)2 wei GENPut one question about two captures of a page.

Judgments, not just diffs

A diff between two captures reports the same thing whether a fee moved from one percent to five or a sentence was reworded. The judgment separates them, answered material, immaterial or unclear, and the verify page sets out how each is reached. A 404 from the assessments endpoint means nobody has put that question yet, which is a different fact from any verdict.