{"openapi":"3.1.0","info":{"title":"ProofDesk Launch Audit API","version":"1.0.0","description":"Deterministic launch checks and declared metadata extraction for HTTPS pages on the documented managed-hosting allowlist. Arbitrary custom domains are temporarily blocked. The full audit costs $0.04 USDC; metadata extraction costs $0.01 USDC through x402 on Base or Solana.","x-guidance":"Use POST /api/audit for an evidence-backed launch report or POST /api/metadata for raw declared metadata values. Both accept one allowlisted managed-host HTTPS URL and return an x402 challenge before payment. Redirects are subject to the same allowlist. Metadata extraction reads server-returned HTML without JavaScript rendering or link probes. Use GET /api/example to inspect the audit response shape for free.","x-input-policy":{"mode":"managed-host-allowlist","customDomains":false,"summary":"For temporary network-safety containment, only the documented managed-hosting domains and their subdomains are accepted; arbitrary custom domains are blocked.","supportedManagedHosts":["github.io","pages.dev","vercel.app","netlify.app","webflow.io","framer.website","onrender.com","railway.app","surge.sh","firebaseapp.com","web.app","readthedocs.io","gitbook.io","wordpress.com","myshopify.com","wixsite.com","carrd.co","typedream.app","trycloudflare.com","chatgpt.site","example.com"]},"contact":{"url":"https://github.com/SpaleRuby/proofdesk-audit-api"}},"servers":[{"url":"https://proofdesk-audit-api.konstanta-work-x.chatgpt.site"}],"paths":{"/api/health":{"get":{"operationId":"getHealth","summary":"Check service health and payment networks","security":[],"responses":{"200":{"description":"Service status","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/example":{"get":{"operationId":"getExampleAudit","summary":"Get a free example audit response","security":[],"responses":{"200":{"description":"Example launch report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditReport"}}}}}}},"/api/audit":{"post":{"operationId":"auditLaunchPage","summary":"Website launch audit: SEO metadata, page structure, and links","description":"Check one HTTPS page on a supported managed-hosting domain before launch for metadata, page structure, and a bounded same-host link sample. Arbitrary custom domains are rejected before fetching, and redirects must remain on the allowlist. Returns evidence-backed JSON issues and fixes after $0.04 USDC is settled on Base or Solana. Source-level launch QA only; not security testing.","tags":["website audit","landing page","technical SEO","launch readiness"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.040000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https://","example":"https://example.com","description":"HTTPS page whose hostname is an allowlisted managed-host apex or subdomain.","x-host-suffix-allowlist":["github.io","pages.dev","vercel.app","netlify.app","webflow.io","framer.website","onrender.com","railway.app","surge.sh","firebaseapp.com","web.app","readthedocs.io","gitbook.io","wordpress.com","myshopify.com","wixsite.com","carrd.co","typedream.app","trycloudflare.com","chatgpt.site","example.com"]}}},"examples":{"launchPage":{"value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Paid audit completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditReport"}}}},"400":{"description":"Invalid request, custom domain, or non-allowlisted URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment Required","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment requirements","schema":{"type":"string"}}}},"422":{"description":"The page could not be audited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/metadata":{"post":{"operationId":"extractPageMetadata","summary":"Extract declared SEO and social-preview metadata","description":"Extract title, description, canonical, language, viewport, meta robots, favicon, Open Graph, and Twitter Card declarations from an HTTPS page on a supported managed-hosting domain. Arbitrary custom domains are rejected before fetching, and redirects must remain on the allowlist. No JavaScript rendering, asset fetching, link probing, or social-platform preview emulation is performed. Costs $0.01 USDC on Base or Solana.","tags":["metadata","technical SEO","social preview","Open Graph"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https://","example":"https://example.com","description":"HTTPS page whose hostname is an allowlisted managed-host apex or subdomain.","x-host-suffix-allowlist":["github.io","pages.dev","vercel.app","netlify.app","webflow.io","framer.website","onrender.com","railway.app","surge.sh","firebaseapp.com","web.app","readthedocs.io","gitbook.io","wordpress.com","myshopify.com","wixsite.com","carrd.co","typedream.app","trycloudflare.com","chatgpt.site","example.com"]}}},"examples":{"publicPage":{"value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Paid metadata extraction completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataReport"}}}},"400":{"description":"Invalid request, custom domain, or non-allowlisted URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment Required","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment requirements","schema":{"type":"string"}}}},"422":{"description":"The page metadata could not be extracted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Check":{"type":"object","required":["check","label","status","evidence"],"properties":{"check":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["pass","warn","fail"]},"evidence":{"type":"string"},"fix":{"type":"string"}}},"AuditReport":{"type":"object","required":["auditId","requestedUrl","finalUrl","scannedAt","elapsedMs","score","summary","issues","checks","links","disclaimer"],"properties":{"auditId":{"type":"string"},"requestedUrl":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"scannedAt":{"type":"string","format":"date-time"},"elapsedMs":{"type":"integer","minimum":0},"score":{"type":"integer","minimum":0,"maximum":100},"summary":{"type":"object","required":["pass","warn","fail"],"properties":{"pass":{"type":"integer"},"warn":{"type":"integer"},"fail":{"type":"integer"}}},"issues":{"type":"array","items":{"type":"object"}},"checks":{"type":"array","items":{"$ref":"#/components/schemas/Check"}},"links":{"type":"object"},"disclaimer":{"type":"string"}}},"DeclaredPageMetadata":{"type":"object","required":["title","description","canonical","language","viewport","robots","favicon","openGraph","twitter"],"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"canonical":{"type":["string","null"]},"language":{"type":["string","null"]},"viewport":{"type":["string","null"]},"robots":{"type":["string","null"]},"favicon":{"type":["string","null"]},"openGraph":{"type":"object","required":["title","description","image","url","type","siteName"],"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"type":["string","null"]},"url":{"type":["string","null"]},"type":{"type":["string","null"]},"siteName":{"type":["string","null"]}}},"twitter":{"type":"object","required":["card","title","description","image"],"properties":{"card":{"type":["string","null"]},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"type":["string","null"]}}}}},"MetadataReport":{"type":"object","required":["metadataId","requestedUrl","finalUrl","fetchedAt","elapsedMs","httpStatus","redirects","metadata","missingFields","source","disclaimer"],"properties":{"metadataId":{"type":"string"},"requestedUrl":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"fetchedAt":{"type":"string","format":"date-time"},"elapsedMs":{"type":"integer","minimum":0},"httpStatus":{"type":"integer"},"redirects":{"type":"array","items":{"type":"string","format":"uri"}},"metadata":{"$ref":"#/components/schemas/DeclaredPageMetadata"},"missingFields":{"type":"array","items":{"type":"string"}},"source":{"type":"string","enum":["server-rendered-html"]},"disclaimer":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}