// 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
| method | path | returns |
|---|---|---|
| GET | /api/v1/certificates | The newest certificates, newest first. |
| GET | /api/v1/certificates/:id | One 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/:id | A 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-source | The 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/2
The newest certificate, rendered by the function that serves the endpoint.
{
"certificate": {
"id": 2,
"url": "genlayer://0x80A98929EcA334804dbB04d31F6050bca42C0Cc4",
"kind": "contract",
"claims": [
"stats = {\"cases\": 10, \"escrow\": \"0x5125De939F7373eAE741B133FB32B7E9915C8F78\", \"owner\": \"0xFEb134633A0BFBAE656DC7C0EEeEa4"
],
"claims_digest": "3f0a903b5db9c70dc54cc36a18f24ab480c6c94b68751b73e4e2d00d2b80e2f6",
"cloaking": false,
"at": "2026-09-16T02:24:32Z",
"requester": "0x3e1D268c8B1Ba7d042968ab713467C5631831513",
"watch_id": null,
"previous": null,
"records": "Every validator read these views of that contract at this time and computed the same lines.",
"url_html": "https://getstanding.xyz/c/2"
}
}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.
| method | price | does |
|---|---|---|
| notarize(url) | 4 wei GEN | Certify what a page states now. |
| notarize_contracts(targets, method_sets) | 1 wei GEN each | Record other contracts' zero-argument views, up to ten per call. |
| watch(url, cadence_hours) | 4 wei GEN per capture | Prepay captures of a page on a cadence. |
| capture_watch(watch_id) | free | Take a watch's due capture. Any account may. |
| assess(cert_a, cert_b) | 2 wei GEN | Put 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.