Skip to content

Page checks

A page check fetches a public product page, extracts the commercial facts it advertises, and reports whether an MC4P document is present on it. Use it when you have a URL and nothing else: no product ID, no certificate in hand.

Terminal window
curl -X POST https://api.mintall.ai/api/v1/mc4p/page-checks \
-H "Content-Type: application/json" \
-d '{ "url": "https://merchant.example/products/pendant" }'

Returns 200 with the full report.

{
"id": "...",
"url": "https://merchant.example/products/pendant",
"final_url": "https://merchant.example/products/pendant",
"fetched_at": "2026-09-16T12:00:00Z",
"platform_detected": "shopify",
"verdict": "verified",
"facts": {
"name": { "value": "Pendant", "source": "jsonld", "field": "name" },
"price": { "value": "148.00", "source": "jsonld", "field": "offers.price" }
},
"mc4p": {
"present": true,
"product_id": "...",
"issued_to": "merchant.example",
"status": "verified",
"checks": { "signatureValid": true }
},
"findings": [],
"warnings": [],
"errors": []
}

freshness defaults to cached, which serves a recent observation of the page. Pass fresh to refetch it.

Terminal window
curl -X POST https://api.mintall.ai/api/v1/mc4p/page-checks \
-H "Content-Type: application/json" \
-d '{ "url": "https://merchant.example/products/pendant", "freshness": "fresh" }'

Fresh checks are rate limited to 10 per minute per caller. Past that the endpoint returns 429. Cached checks are the default for a reason: use fresh when you need to see a change you just made.

Four verdicts come from Mintall’s answer about the document on the page:

Verdict Meaning
verified The page carries a signed certificate and every check passed.
unverified The page identifies a Mintall product but carries no signed claim.
certificate_expired The signature is authentic, past its 7-day window.
checks_failed A signed certificate, and a check did not pass.

Six come from the fetch itself, decided without asking the registry:

Verdict Meaning
no_certificate No mintall:issuedFor node on the page.
invalid_certificate A node is present, its canonicalSource is unusable.
canonical_mismatch The canonicalSource host is not allowlisted.
product_deleted The named product is not in the registry.
password_protected The fetch landed on a storefront password gate.
page_fetch_failed Blocked, timed out, too large, or non-2xx.

Each fact carries the value, the field it came from, and the source that produced it: jsonld, meta, or html. The source tells you how much the value is worth. A price from JSON-LD is structured data the merchant published; a price scraped from HTML is a guess.

platform_detected is shopify, woocommerce, or custom.