Home · Docs · Pricing · OpenAPI
Base URL: http://pseo.rovy.tech/api. All responses JSON, CORS *.
Anonymous access works out of the box (30 req/min/IP). For higher limits pass a key
either as a header X-API-Key: df_... or query ?key=df_....
Mint a free key at /v1/keys/new.
| Code | Meaning |
|---|---|
| 400 | missing/invalid parameter |
| 403 | target blocked (non-public address — SSRF guard) |
| 429 | rate limit exceeded |
| 502 | upstream fetch failed |
# SSL expiry watch
curl "http://pseo.rovy.tech/api/v1/ssl?host=example.com"
# → {"days_left": 84, "issuer": {"organizationName": "Let's Encrypt"}, ...}
# Security header audit
curl "http://pseo.rovy.tech/api/v1/security-headers?url=https://example.com"
# → {"grade": "F", "missing": ["content-security-policy", ...]}
Please cache results and avoid hammering targets. Abusive volumes may be throttled. Targets must resolve to public IPs; private/loopback addresses are rejected by design.
The composite endpoint /v1/paid/audit?url= is priced per call and settles on-chain
in USDC — no signup, no API key, no invoice. It speaks the
x402 v2 exact scheme over HTTP 402.
# 1) Ask for the price curl -i "http://pseo.rovy.tech/api/v1/paid/audit?url=https://example.com" # HTTP/1.1 402 Payment Required # PAYMENT-REQUIRED: <base64 PaymentRequired JSON> # 2) Pay with a wallet and retry (the SDK does steps 2-3 for you) # python: pip install x402 # node: npm install @x402/fetch # 3) On success you get the audit + a settlement receipt # PAYMENT-RESPONSE: <base64 SettleResponse JSON>
Machine-readable offer: /v1/x402.json.