{"openapi":"3.0.3","info":{"title":"Domain & Mail Security API","version":"1.0.0","description":"SPF, DKIM, DMARC, TLS, DNS, RDAP and blacklist checks with a grade.\n\nWritten by a network administrator who was tired of paying per domain. Counts SPF DNS lookups against the RFC 7208 limit of 10 (the usual silent cause of delivery loss), probes 28 DKIM selectors, parses DMARC, grades the result A to F.","contact":{"url":"https://173-249-18-142.sslip.io"}},"servers":[{"url":"https://173-249-18-142.sslip.io"}],"tags":[{"name":"Domain & Mail Security API","description":"SPF, DKIM, DMARC, TLS, DNS, RDAP and blacklist checks with a grade."}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Your Smallapis key. Omit it to use the demo quota."}}},"security":[{"apiKey":[]}],"paths":{"/v1/domain/mail-security":{"post":{"tags":["Domain & Mail Security API"],"summary":"Full SPF, DKIM, DMARC and MX audit with an A-F grade","description":"Counts the SPF DNS lookups against the RFC 7208 limit of 10, walks every include, probes 28 common DKIM selectors, parses the DMARC policy, and checks MTA-STS, TLS-RPT, BIMI and DNSSEC.","operationId":"v1_domain_mail_security","responses":{"200":{"description":"Result payload","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Missing or invalid API key"},"413":{"description":"Payload larger than the plan allows"},"429":{"description":"Plan quota exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain or email address to audit."},"selectors":{"type":"string","description":"Extra DKIM selectors to probe, comma-separated."}},"required":["domain"]}}}}}},"/v1/domain/dns":{"post":{"tags":["Domain & Mail Security API"],"summary":"Look up DNS records","description":"Look up DNS records","operationId":"v1_domain_dns","responses":{"200":{"description":"Result payload","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Missing or invalid API key"},"413":{"description":"Payload larger than the plan allows"},"429":{"description":"Plan quota exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to resolve."},"type":{"type":"string","description":"Comma-separated record types.","default":"A,AAAA,MX,NS,TXT,SOA,CNAME"}},"required":["domain"]}}}}}},"/v1/domain/tls":{"post":{"tags":["Domain & Mail Security API"],"summary":"Inspect the TLS certificate and chain","description":"Returns the issuer, SANs, protocol, cipher and `daysRemaining` — enough to drive an expiry alert.","operationId":"v1_domain_tls","responses":{"200":{"description":"Result payload","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Missing or invalid API key"},"413":{"description":"Payload larger than the plan allows"},"429":{"description":"Plan quota exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Host to connect to."},"port":{"type":"integer","description":"TCP port.","default":443}},"required":["domain"]}}}}}},"/v1/domain/headers":{"post":{"tags":["Domain & Mail Security API"],"summary":"Grade the HTTP security headers","description":"Scores HSTS, CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy and the COOP/CORP pair, and flags version-leaking headers.","operationId":"v1_domain_headers","responses":{"200":{"description":"Result payload","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Missing or invalid API key"},"413":{"description":"Payload larger than the plan allows"},"429":{"description":"Plan quota exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Site to test."},"path":{"type":"string","description":"Path to request.","default":"/"}},"required":["domain"]}}}}}},"/v1/domain/whois":{"post":{"tags":["Domain & Mail Security API"],"summary":"Registration data for a domain","description":"Queries the registry RDAP server found through the IANA bootstrap, and falls back to port-43 WHOIS for the registries that refuse RDAP to data-centre addresses (.io and .de among them), so the lookup works on every TLD. The `source` field says which one answered.","operationId":"v1_domain_whois","responses":{"200":{"description":"Result payload","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Missing or invalid API key"},"413":{"description":"Payload larger than the plan allows"},"429":{"description":"Plan quota exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to look up."}},"required":["domain"]}}}}}},"/v1/domain/availability":{"post":{"tags":["Domain & Mail Security API"],"summary":"Check whether domains are registered","description":"Check whether domains are registered","operationId":"v1_domain_availability","responses":{"200":{"description":"Result payload","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Missing or invalid API key"},"413":{"description":"Payload larger than the plan allows"},"429":{"description":"Plan quota exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"string","description":"Comma-separated list, up to 10."}},"required":["domains"]}}}}}},"/v1/domain/blacklist":{"post":{"tags":["Domain & Mail Security API"],"summary":"Check an IP or domain against 10 DNS blacklists","description":"Check an IP or domain against 10 DNS blacklists","operationId":"v1_domain_blacklist","responses":{"200":{"description":"Result payload","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid parameters"},"401":{"description":"Missing or invalid API key"},"413":{"description":"Payload larger than the plan allows"},"429":{"description":"Plan quota exhausted"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","description":"IPv4 address to check."},"domain":{"type":"string","description":"Domain to resolve and check instead."}}}}}}}}}}