{"openapi":"3.1.0","info":{"title":"Website Intelligence API","description":"Domain audits, email configuration verification, speed checks, and payment-enabled APIs","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","description":"Liveness probe for DigitalOcean App Platform / load balancers.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"429":{"description":"Too Many Requests. Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standard machine-readable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/domain/audit":{"post":{"summary":"Audit Domain Security configuration","description":"Weighted audit across DNS, SSL/TLS, HTTP security headers (including weak HSTS), and email authentication (SPF/DKIM/DMARC with dangerous-config checks). Returns overall score, category subscores, issues, and raw checks.\n\n**Price**: $0.10 USDC\n**Supported Network**: Base mainnet (eip155:8453)\n**Facilitator**: MetaMask x402 facilitator\n\nRequires x402 header negotiation (`PAYMENT-SIGNATURE` or legacy `X-Payment`).","operationId":"domain_audit_v1_domain_audit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditResponse"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/email-security-check":{"post":{"summary":"Check Email Security configuration (SPF, DKIM, DMARC)","description":"Validates SPF (including +all / ?all / multi-record), DMARC (policy, pct, alignment, reporting), and DKIM presence for common selectors. Returns overall score plus SPF/DKIM/DMARC subscores.\n\n**Price**: $0.05 USDC\n**Supported Network**: Base mainnet (eip155:8453)\n**Facilitator**: MetaMask x402 facilitator\n\nRequires x402 header negotiation (`PAYMENT-SIGNATURE` or legacy `X-Payment`).","operationId":"email_security_check_v1_email_security_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailCheckResponse"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dmarc-check":{"post":{"summary":"Micro DMARC Check","description":"Inspects DMARC DNS policy (p/sp), pct, alignment (adkim/aspf), and reporting targets (rua/ruf). Flags monitor-only policy and missing reporters.\n\n**Price**: $0.02 USDC\n**Supported Network**: Base mainnet\n**Facilitator**: MetaMask x402 facilitator","operationId":"dmarc_check_v1_dmarc_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UtilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DmarcCheckResponse"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ssl-check":{"post":{"summary":"Micro SSL Check","description":"Inspects TLS certificate validity, issuer, expiry window, SANs, and hostname match.\n\n**Price**: $0.02 USDC\n**Supported Network**: Base mainnet","operationId":"ssl_check_v1_ssl_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UtilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SslCheckResponse"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/headers-check":{"post":{"summary":"Micro HTTP Headers Check","description":"Scans HTTPS responses for recommended security headers (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy). Grades presence and flags weak HSTS max-age or obsolete X-Frame-Options ALLOW-FROM.\n\n**Price**: $0.02 USDC\n**Supported Network**: Base mainnet","operationId":"headers_check_v1_headers_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UtilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeadersCheckResponse"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pricing":{"get":{"summary":"Get Endpoint Pricing","description":"Lists all endpoints, their respective tiers, and pricing structures in USDC.","operationId":"get_pricing_v1_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingResponse"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standard machine-readable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/website/performance":{"post":{"summary":"Get Website Speed Performance","description":"Retrieves live Google PageSpeed Insights metrics.\n\n**Pricing Ladder**:\n- **basic** ($0.10 USDC): Mobile metrics.\n- **fixes** ($0.25 USDC): Mobile metrics + optimization recommendations.\n- **combined** ($0.50 USDC): Mobile + desktop + recommendations.\n\nUses `PAGESPEED_API_KEY` when set (recommended). On live PSI failure, may serve a recent successful result with a warning. Metrics are never fabricated.","operationId":"website_performance_v1_website_performance_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceResponse"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domain/overview":{"post":{"summary":"Domain overview dossier","description":"One-call domain dossier: RDAP/WHOIS, DNS, SSL, HTTP probe, tech/hosting hints, and risk flags.\n\n**Price**: $0.15 USDC\n**Network**: Base mainnet (eip155:8453)","operationId":"domain_overview_v1_domain_overview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Domain Overview V1 Domain Overview Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domain/security":{"post":{"summary":"Domain security posture","description":"Focused security posture: SSL, redirects, headers, SPF/DKIM/DMARC, and a simple grade.\n\n**Price**: $0.05 USDC\n**Network**: Base mainnet (eip155:8453)","operationId":"domain_security_v1_domain_security_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Domain Security V1 Domain Security Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domain/subdomains":{"post":{"summary":"Discover subdomains","description":"Enumerate likely subdomains (certificate transparency + common prefixes) with DNS resolution status.\n\n**Price**: $0.02 USDC\n**Network**: Base mainnet (eip155:8453)","operationId":"domain_subdomains_v1_domain_subdomains_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubdomainsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Domain Subdomains V1 Domain Subdomains Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site/change-diff":{"post":{"summary":"Site change diff","description":"Fetch a page and return a structured diff versus the previous snapshot (or an optional provided baseline).\n\n**Price**: $0.05 USDC\n**Network**: Base mainnet (eip155:8453)","operationId":"site_change_diff_v1_site_change_diff_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeDiffRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Site Change Diff V1 Site Change Diff Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site/screenshot":{"post":{"summary":"Site screenshot metadata","description":"Capture fresh desktop/mobile screenshot metadata for a URL (status, final URL, title, dimensions, and a screenshot image URL).\n\n**Price**: $0.02 USDC\n**Network**: Base mainnet (eip155:8453)","operationId":"site_screenshot_v1_site_screenshot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenshotRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Site Screenshot V1 Site Screenshot Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/website/ai-audit-report":{"post":{"summary":"AI audit report","description":"Runs domain security checks + performance signals, then uses DeepSeek V4 Flash to produce a natural-language summary, top issues, and prioritized action plan.\n\n**Price**: $0.50 (basic) / $1.00 (pro) USDC\n**Network**: Base mainnet (eip155:8453)\n**Model**: deepseek-v4-flash","operationId":"ai_audit_report_v1_website_ai_audit_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Audit Report V1 Website Ai Audit Report Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/website/ai-seo-readiness":{"post":{"summary":"AI SEO readiness review","description":"Crawls homepage/key pages (robots, sitemap, metadata) and optional PageSpeed, then uses DeepSeek V4 Flash for a plain-language SEO/UX readiness review.\n\n**Price**: $0.75 USDC\n**Network**: Base mainnet (eip155:8453)\n**Model**: deepseek-v4-flash","operationId":"ai_seo_readiness_v1_website_ai_seo_readiness_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiSeoRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Seo Readiness V1 Website Ai Seo Readiness Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/website/ai-change-advisor":{"post":{"summary":"AI change advisor","description":"Compare two audits (by scan_id) or two domains and use DeepSeek V4 Flash to explain regressions, improvements, and what to fix or keep.\n\n**Price**: $1.00 USDC\n**Network**: Base mainnet (eip155:8453)\n**Model**: deepseek-v4-flash","operationId":"ai_change_advisor_v1_website_ai_change_advisor_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiChangeAdvisorRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Change Advisor V1 Website Ai Change Advisor Post"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded; see `Retry-After` and `X-RateLimit-*` headers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standardized machine-readable error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required. Returned when no valid x402 payment is supplied, or when verification/settlement fails. The `Payment-Required` response header carries the base64-encoded x402 requirements, and `error.details.accepts` lists accepted terms.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable. Payment facilitator unreachable after retries; retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/x402":{"get":{"summary":"X402 Discovery","operationId":"x402_discovery__well_known_x402_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"429":{"description":"Too Many Requests. Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standard machine-readable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/.well-known/x402.json":{"get":{"summary":"X402 Discovery","operationId":"x402_discovery__well_known_x402_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"429":{"description":"Too Many Requests. Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standard machine-readable error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/SKILL.md":{"get":{"summary":"Get Skill File","operationId":"get_skill_file_SKILL_md_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"Too Many Requests. Rate limit exceeded.","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error. Standard machine-readable error response.","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"AiAuditRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to audit (e.g. 'example.com').","default":"","example":"example.com"},"tier":{"type":"string","enum":["basic","pro"],"title":"Tier","description":"basic ($0.50) or pro ($1.00)","default":"basic"},"include_raw":{"type":"boolean","title":"Include Raw","description":"Embed raw component check outputs.","default":false}},"type":"object","title":"AiAuditRequest"},"AiChangeAdvisorRequest":{"properties":{"before_scan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before Scan Id","description":"Baseline scan_id."},"after_scan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After Scan Id","description":"New-state scan_id."},"baseline_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline Domain","description":"Baseline domain (e.g. staging)."},"target_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Domain","description":"Target domain (e.g. production)."},"mode":{"type":"string","enum":["before_vs_after","staging_vs_prod"],"title":"Mode","default":"before_vs_after"}},"type":"object","title":"AiChangeAdvisorRequest"},"AiSeoRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Primary domain to analyze.","default":"","example":"example.com"},"pages":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Pages","description":"Optional absolute URLs to inspect (max 5)."},"include_performance":{"type":"boolean","title":"Include Performance","description":"Include PageSpeed metrics in the readiness review.","default":true}},"type":"object","title":"AiSeoRequest"},"AuditIssue":{"properties":{"severity":{"type":"string","title":"Severity","description":"Issue severity: critical, high, medium, or low"},"type":{"type":"string","title":"Type","description":"Specific category identifier for the issue"},"impact":{"type":"string","title":"Impact","description":"Details regarding security impact"},"fix":{"type":"string","title":"Fix","description":"Actionable recommendation to resolve the issue"}},"type":"object","required":["severity","type","impact","fix"],"title":"AuditIssue"},"AuditRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"The domain name to audit (e.g. 'example.com'). Do not include http:// or https:// protocol prefixes.","default":"","example":"example.com"}},"type":"object","title":"AuditRequest"},"AuditResponse":{"properties":{"domain":{"type":"string","title":"Domain","description":"Audited domain name"},"score":{"type":"integer","title":"Score","description":"Calculated security risk score (0-100), where 100 is optimal"},"subscores":{"additionalProperties":{"type":"integer"},"type":"object","title":"Subscores","description":"Weighted category scores: dns (15%), ssl (30%), headers (25%), email (30%)"},"issues":{"items":{"$ref":"#/components/schemas/AuditIssue"},"type":"array","title":"Issues","description":"Identified security issues and vulnerabilities"},"checks":{"additionalProperties":true,"type":"object","title":"Checks","description":"Raw check results for DNS records, SSL certificates, headers, and email authentication"},"audited_at":{"type":"string","title":"Audited At","description":"ISO 8601 UTC timestamp of the audit request"},"cached":{"type":"boolean","title":"Cached","description":"True if response was served from cache"},"scan_id":{"type":"string","title":"Scan Id","description":"The unique database record tracking ID for this scan"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"Gateway request tracking ID"}},"type":"object","required":["domain","score","subscores","issues","checks","audited_at","cached","scan_id"],"title":"AuditResponse"},"ChangeDiffRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Absolute http(s) URL to fetch and diff.","default":"","example":"https://example.com"},"baseline_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline Text","description":"Optional baseline text/HTML. If omitted, compares against the last stored snapshot for this URL."}},"type":"object","title":"ChangeDiffRequest"},"DmarcCheckResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"dmarc_valid":{"type":"boolean","title":"Dmarc Valid"},"policy":{"type":"string","title":"Policy","description":"DMARC policy level: none, quarantine, or reject"},"adkim":{"type":"string","title":"Adkim","description":"DKIM alignment option: r (relaxed) or s (strict)"},"aspf":{"type":"string","title":"Aspf","description":"SPF alignment option: r (relaxed) or s (strict)"},"rua":{"items":{"type":"string"},"type":"array","title":"Rua","description":"Reporting aggregate email destinations"},"ruf":{"items":{"type":"string"},"type":"array","title":"Ruf","description":"Forensic incident reporting destinations"},"issues":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Issues"},"cached":{"type":"boolean","title":"Cached","default":false},"scan_id":{"type":"string","title":"Scan Id"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"Gateway request tracking ID"}},"type":"object","required":["domain","dmarc_valid","policy","adkim","aspf","rua","ruf","issues","scan_id"],"title":"DmarcCheckResponse"},"DomainRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name (e.g. 'example.com'). No http/https prefix.","default":"","example":"example.com"}},"type":"object","title":"DomainRequest"},"EmailCheckRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"The domain name to check email security records for (e.g. 'example.com'). Do not include http:// or https:// protocol prefixes.","default":"","example":"example.com"}},"type":"object","title":"EmailCheckRequest"},"EmailCheckResponse":{"properties":{"domain":{"type":"string","title":"Domain","description":"Audited domain name"},"score":{"type":"integer","title":"Score","description":"Calculated overall email security score (0-100)"},"subscores":{"$ref":"#/components/schemas/EmailSubscores","description":"Subscores representing SPF, DKIM, and DMARC metrics separately"},"issues":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Issues","description":"Identified email security vulnerabilities"},"checks":{"additionalProperties":true,"type":"object","title":"Checks","description":"Raw check results for SPF, DKIM, and DMARC records"},"audited_at":{"type":"string","title":"Audited At","description":"ISO 8601 UTC timestamp of the check request"},"cached":{"type":"boolean","title":"Cached","description":"True if response was served from cache"},"scan_id":{"type":"string","title":"Scan Id","description":"The unique database record tracking ID for this scan"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"Gateway request tracking ID"}},"type":"object","required":["domain","score","subscores","issues","checks","audited_at","cached","scan_id"],"title":"EmailCheckResponse"},"EmailSubscores":{"properties":{"spf":{"type":"integer","title":"Spf","description":"SPF record security subscore (0-100)"},"dkim":{"type":"integer","title":"Dkim","description":"DKIM configuration subscore (0-100)"},"dmarc":{"type":"integer","title":"Dmarc","description":"DMARC alignment and policy subscore (0-100)"}},"type":"object","required":["spf","dkim","dmarc"],"title":"EmailSubscores"},"ErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Unique error category identifier"},"message":{"type":"string","title":"Message","description":"Actionable error description message"},"request_id":{"type":"string","title":"Request Id","description":"Gateway tracking ID associated with the request"},"details":{"additionalProperties":true,"type":"object","title":"Details","description":"Contextual error metadata","default":{}}},"type":"object","required":["code","message","request_id"],"title":"ErrorDetail"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ErrorDetail","description":"Machine-readable error envelope"}},"type":"object","required":["error"],"title":"ErrorResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HeadersCheckResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"http_status":{"type":"integer","title":"Http Status"},"headers":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Headers"},"missing_headers":{"items":{"type":"string"},"type":"array","title":"Missing Headers"},"grade":{"type":"string","title":"Grade","description":"Security score grade (A/B/C/D/F) based on recommended headers"},"recommendations":{"items":{"type":"string"},"type":"array","title":"Recommendations","description":"Detailed configuration improvements for missing headers"},"issues":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Issues"},"cached":{"type":"boolean","title":"Cached","default":false},"scan_id":{"type":"string","title":"Scan Id"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"Gateway request tracking ID"}},"type":"object","required":["domain","http_status","headers","missing_headers","grade","recommendations","issues","scan_id"],"title":"HeadersCheckResponse"},"PerformanceMetrics":{"properties":{"score":{"type":"integer","title":"Score","description":"Overall speed performance score (0-100)"},"lcp":{"type":"string","title":"Lcp","description":"Largest Contentful Paint speed metric"},"inp":{"type":"string","title":"Inp","description":"Interaction to Next Paint responsiveness metric"},"cls":{"type":"number","title":"Cls","description":"Cumulative Layout Shift layout stability metric"},"speed_index":{"type":"string","title":"Speed Index","description":"Speed Index score"},"interactive":{"type":"string","title":"Interactive","description":"Time to Interactive score"}},"type":"object","required":["score","lcp","inp","cls","speed_index","interactive"],"title":"PerformanceMetrics"},"PerformanceRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"The domain name or URL to check speed performance (e.g. 'example.com').","default":"","example":"example.com"},"tier":{"type":"string","enum":["basic","fixes","combined"],"title":"Tier","description":"Audit tier: basic ($0.10), fixes ($0.25) with suggestions, combined ($0.50) for desktop + mobile.","default":"basic","example":"basic"}},"type":"object","title":"PerformanceRequest"},"PerformanceResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"tier":{"type":"string","title":"Tier"},"mobile":{"anyOf":[{"$ref":"#/components/schemas/PerformanceMetrics"},{"type":"null"}]},"desktop":{"anyOf":[{"$ref":"#/components/schemas/PerformanceMetrics"},{"type":"null"}]},"recommendations":{"items":{"type":"string"},"type":"array","title":"Recommendations","description":"Actionable optimization suggestions"},"pagespeed_available":{"type":"boolean","title":"Pagespeed Available","description":"False when Google PageSpeed could not be reached (rate limit/timeout).","default":true},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","description":"Client-visible service warnings"},"cached":{"type":"boolean","title":"Cached","default":false},"scan_id":{"type":"string","title":"Scan Id"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"audited_at":{"type":"string","title":"Audited At"}},"type":"object","required":["domain","tier","recommendations","scan_id","audited_at"],"title":"PerformanceResponse"},"PricingResponse":{"properties":{"pricing_model":{"type":"string","title":"Pricing Model","description":"Biling protocol model used"},"endpoints":{"items":{"$ref":"#/components/schemas/RoutePricing"},"type":"array","title":"Endpoints","description":"Structured list of endpoint prices"}},"type":"object","required":["pricing_model","endpoints"],"title":"PricingResponse"},"RoutePricing":{"properties":{"route":{"type":"string","title":"Route","description":"API endpoint route path"},"price":{"type":"string","title":"Price","description":"Human-readable price in USDC (e.g. '$0.02')"},"price_usdc":{"type":"number","title":"Price Usdc","description":"Decimal representation of price in USDC"},"currency":{"type":"string","title":"Currency","description":"Payment currency token name"},"network":{"type":"string","title":"Network","description":"Blockchain network CAIP-2 ID"},"description":{"type":"string","title":"Description","description":"Functional description of the endpoint"}},"type":"object","required":["route","price","price_usdc","currency","network","description"],"title":"RoutePricing"},"ScreenshotRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Absolute http(s) URL to capture.","default":"","example":"https://example.com"},"viewport":{"type":"string","title":"Viewport","description":"Viewport preset: desktop or mobile.","default":"desktop","example":"desktop"}},"type":"object","title":"ScreenshotRequest"},"SslCheckResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"ssl_valid":{"type":"boolean","title":"Ssl Valid"},"issuer":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Issuer"},"expires_in_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Days"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"ISO 8601 UTC timestamp when certificate expires"},"not_before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Not Before","description":"ISO 8601 UTC timestamp when certificate becomes valid"},"hostname_matches":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hostname Matches","description":"True if domain hostname matches SSL CN or SANs"},"sans":{"items":{"type":"string"},"type":"array","title":"Sans"},"issues":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Issues"},"cached":{"type":"boolean","title":"Cached","default":false},"scan_id":{"type":"string","title":"Scan Id"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"Gateway request tracking ID"}},"type":"object","required":["domain","ssl_valid","issuer","expires_in_days","sans","issues","scan_id"],"title":"SslCheckResponse"},"SubdomainsRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Apex domain to enumerate.","default":"","example":"example.com"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","description":"Max hosts to return after discovery.","default":40}},"type":"object","title":"SubdomainsRequest"},"UtilityRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"The domain name to check (e.g. 'example.com'). Do not include http:// or https:// protocol prefixes.","default":"","example":"example.com"}},"type":"object","title":"UtilityRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}