{"components":{"headers":{"PaymentRequired":{"description":"Base64-encoded JSON copy of the 402 body (x402 v2).","schema":{"type":"string"}},"PaymentResponse":{"description":"Base64-encoded settlement receipt (x402 v2) for a paid result.","schema":{"type":"string"}},"RequestId":{"description":"Request id, also in the body.","schema":{"type":"string"}},"RetryAfter":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"parameters":{"PaymentSignature":{"description":"Base64-encoded x402 v2 payment payload (EIP-3009 'exact' on USDC). Without it the API answers 402 with the price; send the same request again with it to pay.","in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string"}}},"schemas":{"BulkItemResult_MailCheckData_":{"additionalProperties":false,"properties":{"error":{"anyOf":[{"$ref":"#/components/schemas/ItemError"},{"type":"null"}],"default":null},"index":{"minimum":0,"title":"Index","type":"integer"},"item":{"maxLength":1024,"minLength":1,"title":"Item","type":"string"},"result":{"anyOf":[{"$ref":"#/components/schemas/CheckResponse_MailCheckData_"},{"type":"null"}],"default":null}},"required":["index","item"],"title":"BulkItemResult[MailCheckData]","type":"object"},"BulkResponse_MailCheckData_":{"additionalProperties":false,"properties":{"checked_at":{"format":"date-time","title":"Checked At","type":"string"},"endpoint":{"maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$","title":"Endpoint","type":"string"},"failed_count":{"minimum":0,"title":"Failed Count","type":"integer"},"item_count":{"minimum":1,"title":"Item Count","type":"integer"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"},"results":{"items":{"$ref":"#/components/schemas/BulkItemResult_MailCheckData_"},"maxItems":20,"title":"Results","type":"array"},"retry_token":{"anyOf":[{"maxLength":256,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},{"type":"null"}],"default":null,"title":"Retry Token"},"schema_version":{"const":"1.0","default":"1.0","title":"Schema Version","type":"string"},"succeeded_count":{"minimum":0,"title":"Succeeded Count","type":"integer"}},"required":["request_id","endpoint","checked_at","results","item_count","succeeded_count","failed_count"],"title":"BulkResponse[MailCheckData]","type":"object"},"CheckResponse_DkimData_":{"additionalProperties":false,"properties":{"checked_at":{"format":"date-time","title":"Checked At","type":"string"},"data":{"$ref":"#/components/schemas/DkimData"},"endpoint":{"maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$","title":"Endpoint","type":"string"},"findings":{"default":[],"items":{"$ref":"#/components/schemas/Finding"},"maxItems":100,"title":"Findings","type":"array"},"meta":{"$ref":"#/components/schemas/Meta"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"},"schema_version":{"const":"1.0","default":"1.0","title":"Schema Version","type":"string"},"status":{"$ref":"#/components/schemas/Status"}},"required":["request_id","endpoint","checked_at","status","data","meta"],"title":"CheckResponse[DkimData]","type":"object"},"CheckResponse_DmarcData_":{"additionalProperties":false,"properties":{"checked_at":{"format":"date-time","title":"Checked At","type":"string"},"data":{"$ref":"#/components/schemas/DmarcData"},"endpoint":{"maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$","title":"Endpoint","type":"string"},"findings":{"default":[],"items":{"$ref":"#/components/schemas/Finding"},"maxItems":100,"title":"Findings","type":"array"},"meta":{"$ref":"#/components/schemas/Meta"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"},"schema_version":{"const":"1.0","default":"1.0","title":"Schema Version","type":"string"},"status":{"$ref":"#/components/schemas/Status"}},"required":["request_id","endpoint","checked_at","status","data","meta"],"title":"CheckResponse[DmarcData]","type":"object"},"CheckResponse_DnsLookupData_":{"additionalProperties":false,"properties":{"checked_at":{"format":"date-time","title":"Checked At","type":"string"},"data":{"$ref":"#/components/schemas/DnsLookupData"},"endpoint":{"maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$","title":"Endpoint","type":"string"},"findings":{"default":[],"items":{"$ref":"#/components/schemas/Finding"},"maxItems":100,"title":"Findings","type":"array"},"meta":{"$ref":"#/components/schemas/Meta"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"},"schema_version":{"const":"1.0","default":"1.0","title":"Schema Version","type":"string"},"status":{"$ref":"#/components/schemas/Status"}},"required":["request_id","endpoint","checked_at","status","data","meta"],"title":"CheckResponse[DnsLookupData]","type":"object"},"CheckResponse_MailCheckData_":{"additionalProperties":false,"properties":{"checked_at":{"format":"date-time","title":"Checked At","type":"string"},"data":{"$ref":"#/components/schemas/MailCheckData"},"endpoint":{"maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$","title":"Endpoint","type":"string"},"findings":{"default":[],"items":{"$ref":"#/components/schemas/Finding"},"maxItems":100,"title":"Findings","type":"array"},"meta":{"$ref":"#/components/schemas/Meta"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"},"schema_version":{"const":"1.0","default":"1.0","title":"Schema Version","type":"string"},"status":{"$ref":"#/components/schemas/Status"}},"required":["request_id","endpoint","checked_at","status","data","meta"],"title":"CheckResponse[MailCheckData]","type":"object"},"CheckResponse_MxData_":{"additionalProperties":false,"properties":{"checked_at":{"format":"date-time","title":"Checked At","type":"string"},"data":{"$ref":"#/components/schemas/MxData"},"endpoint":{"maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$","title":"Endpoint","type":"string"},"findings":{"default":[],"items":{"$ref":"#/components/schemas/Finding"},"maxItems":100,"title":"Findings","type":"array"},"meta":{"$ref":"#/components/schemas/Meta"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"},"schema_version":{"const":"1.0","default":"1.0","title":"Schema Version","type":"string"},"status":{"$ref":"#/components/schemas/Status"}},"required":["request_id","endpoint","checked_at","status","data","meta"],"title":"CheckResponse[MxData]","type":"object"},"CheckResponse_SpfData_":{"additionalProperties":false,"properties":{"checked_at":{"format":"date-time","title":"Checked At","type":"string"},"data":{"$ref":"#/components/schemas/SpfData"},"endpoint":{"maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$","title":"Endpoint","type":"string"},"findings":{"default":[],"items":{"$ref":"#/components/schemas/Finding"},"maxItems":100,"title":"Findings","type":"array"},"meta":{"$ref":"#/components/schemas/Meta"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"},"schema_version":{"const":"1.0","default":"1.0","title":"Schema Version","type":"string"},"status":{"$ref":"#/components/schemas/Status"}},"required":["request_id","endpoint","checked_at","status","data","meta"],"title":"CheckResponse[SpfData]","type":"object"},"DkimData":{"additionalProperties":false,"properties":{"domain":{"maxLength":255,"minLength":1,"title":"Domain","type":"string"},"key_bits":{"anyOf":[{"maximum":65536,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Key Bits"},"key_bytes":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Key Bytes"},"key_type":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"title":"Key Type"},"name":{"maxLength":255,"minLength":1,"title":"Name","type":"string"},"record":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"title":"Record"},"revoked":{"default":false,"title":"Revoked","type":"boolean"},"selector":{"maxLength":200,"minLength":1,"title":"Selector","type":"string"},"tags":{"default":[],"items":{"$ref":"#/components/schemas/Tag"},"maxItems":32,"title":"Tags","type":"array"},"testing":{"default":false,"title":"Testing","type":"boolean"}},"required":["domain","selector","name"],"title":"DkimData","type":"object"},"DmarcData":{"additionalProperties":false,"properties":{"adkim":{"anyOf":[{"enum":["r","s"],"type":"string"},{"type":"null"}],"default":null,"title":"Adkim"},"applied_policy":{"anyOf":[{"enum":["none","quarantine","reject"],"type":"string"},{"type":"null"}],"default":null,"title":"Applied Policy"},"aspf":{"anyOf":[{"enum":["r","s"],"type":"string"},{"type":"null"}],"default":null,"title":"Aspf"},"domain":{"maxLength":255,"minLength":1,"title":"Domain","type":"string"},"org_domain":{"maxLength":255,"minLength":1,"title":"Org Domain","type":"string"},"pct":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Pct"},"policy":{"anyOf":[{"enum":["none","quarantine","reject"],"type":"string"},{"type":"null"}],"default":null,"title":"Policy"},"record":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"title":"Record"},"record_domain":{"anyOf":[{"maxLength":255,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Record Domain"},"rua":{"default":[],"items":{"maxLength":512,"type":"string"},"maxItems":20,"title":"Rua","type":"array"},"ruf":{"default":[],"items":{"maxLength":512,"type":"string"},"maxItems":20,"title":"Ruf","type":"array"},"subdomain_policy":{"anyOf":[{"enum":["none","quarantine","reject"],"type":"string"},{"type":"null"}],"default":null,"title":"Subdomain Policy"},"tags":{"default":[],"items":{"$ref":"#/components/schemas/Tag"},"maxItems":32,"title":"Tags","type":"array"}},"required":["domain","org_domain"],"title":"DmarcData","type":"object"},"DnsLookupData":{"additionalProperties":false,"properties":{"answers":{"items":{"$ref":"#/components/schemas/DnsRecordSet"},"maxItems":9,"title":"Answers","type":"array"},"name":{"maxLength":255,"minLength":1,"title":"Name","type":"string"}},"required":["name","answers"],"title":"DnsLookupData","type":"object"},"DnsRecordSet":{"additionalProperties":false,"properties":{"rcode":{"enum":["NOERROR","NXDOMAIN","SERVFAIL","REFUSED","OTHER"],"title":"Rcode","type":"string"},"records":{"default":[],"items":{"maxLength":4096,"type":"string"},"maxItems":50,"title":"Records","type":"array"},"ttl":{"anyOf":[{"maximum":2147483647,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"title":"Ttl"},"type":{"enum":["A","AAAA","CNAME","MX","NS","TXT","SOA","CAA","SRV"],"title":"Type","type":"string"}},"required":["type","rcode"],"title":"DnsRecordSet","type":"object"},"ErrorBody":{"additionalProperties":false,"properties":{"details":{"default":[],"items":{"$ref":"#/components/schemas/ErrorDetail"},"maxItems":50,"title":"Details","type":"array"},"error":{"pattern":"^[a-z][a-z0-9_]{1,63}$","title":"Error","type":"string"},"message":{"maxLength":500,"minLength":1,"title":"Message","type":"string"},"request_id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Request Id","type":"string"}},"required":["error","message","request_id"],"title":"ErrorBody","type":"object"},"ErrorDetail":{"additionalProperties":false,"properties":{"loc":{"default":[],"items":{"anyOf":[{"maxLength":128,"type":"string"},{"minimum":0,"type":"integer"}]},"maxItems":10,"title":"Loc","type":"array"},"message":{"maxLength":300,"minLength":1,"title":"Message","type":"string"}},"required":["message"],"title":"ErrorDetail","type":"object"},"Finding":{"additionalProperties":false,"properties":{"code":{"maxLength":64,"pattern":"^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)+$","title":"Code","type":"string"},"evidence":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"maxProperties":32,"title":"Evidence","type":"object"},"explanation":{"maxLength":2000,"minLength":1,"title":"Explanation","type":"string"},"message":{"maxLength":300,"minLength":1,"title":"Message","type":"string"},"recommendation":{"anyOf":[{"maxLength":2000,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Recommendation"},"severity":{"$ref":"#/components/schemas/Severity"}},"required":["code","severity","message","explanation"],"title":"Finding","type":"object"},"ItemError":{"additionalProperties":false,"properties":{"code":{"maxLength":64,"pattern":"^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)+$","title":"Code","type":"string"},"message":{"maxLength":300,"minLength":1,"title":"Message","type":"string"}},"required":["code","message"],"title":"ItemError","type":"object"},"JsonValue":{},"MailCheckData":{"additionalProperties":false,"properties":{"dkim":{"default":[],"items":{"$ref":"#/components/schemas/DkimData"},"maxItems":5,"title":"Dkim","type":"array"},"dmarc":{"anyOf":[{"$ref":"#/components/schemas/DmarcData"},{"type":"null"}],"default":null},"domain":{"maxLength":255,"minLength":1,"title":"Domain","type":"string"},"mx":{"anyOf":[{"$ref":"#/components/schemas/MxData"},{"type":"null"}],"default":null},"spf":{"anyOf":[{"$ref":"#/components/schemas/SpfData"},{"type":"null"}],"default":null}},"required":["domain"],"title":"MailCheckData","type":"object"},"Meta":{"additionalProperties":false,"properties":{"cache_hit":{"title":"Cache Hit","type":"boolean"},"duration_ms":{"minimum":0,"title":"Duration Ms","type":"integer"},"fresh_until":{"format":"date-time","title":"Fresh Until","type":"string"},"observed_at":{"format":"date-time","title":"Observed At","type":"string"},"resolver":{"anyOf":[{"maxLength":128,"minLength":1,"type":"string"},{"type":"null"}],"default":null,"title":"Resolver"},"source":{"maxLength":64,"minLength":1,"title":"Source","type":"string"}},"required":["duration_ms","cache_hit","source","observed_at","fresh_until"],"title":"Meta","type":"object"},"MxData":{"additionalProperties":false,"properties":{"domain":{"maxLength":255,"minLength":1,"title":"Domain","type":"string"},"hosts":{"default":[],"items":{"$ref":"#/components/schemas/MxHost"},"maxItems":50,"title":"Hosts","type":"array"},"implicit_mx":{"default":false,"title":"Implicit Mx","type":"boolean"},"null_mx":{"default":false,"title":"Null Mx","type":"boolean"}},"required":["domain"],"title":"MxData","type":"object"},"MxHost":{"additionalProperties":false,"properties":{"addresses":{"default":[],"items":{"maxLength":45,"type":"string"},"maxItems":32,"title":"Addresses","type":"array"},"exchange":{"maxLength":255,"minLength":1,"title":"Exchange","type":"string"},"preference":{"maximum":65535,"minimum":0,"title":"Preference","type":"integer"},"resolved":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Resolved"}},"required":["preference","exchange"],"title":"MxHost","type":"object"},"Severity":{"enum":["info","warning","error"],"title":"Severity","type":"string"},"SpfData":{"additionalProperties":false,"properties":{"all_qualifier":{"anyOf":[{"enum":["+","-","~","?"],"type":"string"},{"type":"null"}],"default":null,"title":"All Qualifier"},"dns_lookup_count":{"default":0,"minimum":0,"title":"Dns Lookup Count","type":"integer"},"domain":{"maxLength":255,"minLength":1,"title":"Domain","type":"string"},"lookup_count_complete":{"default":true,"title":"Lookup Count Complete","type":"boolean"},"record":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"title":"Record"},"tree":{"anyOf":[{"$ref":"#/components/schemas/SpfNode"},{"type":"null"}],"default":null},"void_lookup_count":{"default":0,"minimum":0,"title":"Void Lookup Count","type":"integer"}},"required":["domain"],"title":"SpfData","type":"object"},"SpfNode":{"additionalProperties":false,"properties":{"children":{"default":[],"items":{"$ref":"#/components/schemas/SpfNode"},"maxItems":20,"title":"Children","type":"array"},"domain":{"maxLength":255,"minLength":1,"title":"Domain","type":"string"},"error":{"anyOf":[{"maxLength":512,"type":"string"},{"type":"null"}],"default":null,"title":"Error"},"record":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"default":null,"title":"Record"},"terms":{"default":[],"items":{"$ref":"#/components/schemas/SpfTerm"},"maxItems":100,"title":"Terms","type":"array"},"via":{"enum":["root","include","redirect"],"title":"Via","type":"string"}},"required":["domain","via"],"title":"SpfNode","type":"object"},"SpfTerm":{"additionalProperties":false,"properties":{"kind":{"enum":["mechanism","modifier"],"title":"Kind","type":"string"},"name":{"maxLength":64,"minLength":1,"title":"Name","type":"string"},"qualifier":{"anyOf":[{"enum":["+","-","~","?"],"type":"string"},{"type":"null"}],"default":null,"title":"Qualifier"},"raw":{"maxLength":512,"title":"Raw","type":"string"},"value":{"anyOf":[{"maxLength":512,"type":"string"},{"type":"null"}],"default":null,"title":"Value"}},"required":["raw","kind","name"],"title":"SpfTerm","type":"object"},"Status":{"enum":["ok","info","warning","error","unknown"],"title":"Status","type":"string"},"Tag":{"additionalProperties":false,"properties":{"name":{"maxLength":32,"minLength":1,"title":"Name","type":"string"},"value":{"maxLength":4096,"title":"Value","type":"string"}},"required":["name","value"],"title":"Tag","type":"object"},"X402PaymentRequired":{"properties":{"accepts":{"items":{"$ref":"#/components/schemas/X402PaymentRequirements"},"type":"array"},"error":{"description":"Why an attached payment was refused.","type":"string"},"extensions":{"additionalProperties":true,"type":"object"},"resource":{"$ref":"#/components/schemas/X402ResourceInfo"},"x402Version":{"const":2,"type":"integer"}},"required":["x402Version","accepts"],"type":"object"},"X402PaymentRequirements":{"properties":{"amount":{"description":"Price in USDC atomic units.","type":"string"},"asset":{"description":"USDC contract address.","type":"string"},"extra":{"additionalProperties":true,"type":"object"},"maxTimeoutSeconds":{"type":"integer"},"network":{"description":"CAIP-2 network id.","type":"string"},"payTo":{"description":"Recipient address.","type":"string"},"scheme":{"description":"Payment scheme, always 'exact'.","type":"string"}},"required":["scheme","network","asset","amount","payTo","maxTimeoutSeconds"],"type":"object"},"X402ResourceInfo":{"properties":{"description":{"type":"string"},"iconUrl":{"type":"string"},"mimeType":{"type":"string"},"serviceName":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"url":{"type":"string"}},"required":["url"],"type":"object"}}},"externalDocs":{"description":"API reference","url":"https://probekit.dev/docs/api"},"info":{"description":"Mail and DNS checks for developers and AI agents, paid per request with x402 (USDC). A request without payment is answered with 402 and the exact price.","title":"ProbeKit API","version":"1.0","x-pricing-version":"pv1-a6f14ac58f604331"},"openapi":"3.1.0","paths":{"/v1/dns/lookup":{"get":{"description":"Queries the chosen record types for a name and returns the answers with TTL, observation time and which public resolver answered.","operationId":"dns.lookup","parameters":[{"example":"example.com","in":"query","name":"name","required":true,"schema":{"examples":["_dmarc.example.com"],"maxLength":1024,"minLength":1,"title":"Name","type":"string"}},{"example":["A","MX"],"explode":true,"in":"query","name":"types","required":false,"schema":{"default":["A"],"items":{"enum":["A","AAAA","CNAME","MX","NS","TXT","SOA","CAA","SRV"],"title":"RecordType","type":"string"},"maxItems":9,"minItems":1,"title":"Types","type":"array"},"style":"form"},{"$ref":"#/components/parameters/PaymentSignature"}],"responses":{"200":{"content":{"application/json":{"example":{"checked_at":"2026-10-24T12:00:00Z","data":{"answers":[{"rcode":"NOERROR","records":["192.0.2.10"],"ttl":300,"type":"A"},{"rcode":"NOERROR","records":["10 mx1.example.com.","20 mx2.example.com."],"ttl":300,"type":"MX"}],"name":"example.com"},"endpoint":"dns.lookup","findings":[],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"ok"},"schema":{"$ref":"#/components/schemas/CheckResponse_DnsLookupData_"}}},"description":"The check result. A result with negative findings is still delivered.","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}},"description":"Payment required: the exact price and how to pay (x402 v2).","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payment_in_progress, payment_bound_to_other_request: This payment is already being processed, or it is bound to a different request. No new payment is taken. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The input failed validation on a request that carries a payment; nothing is charged. Without a payment, invalid input gets a 402 whose error field names the problem. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address or payer. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"check_failed: The check could not be completed. Nothing is charged."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable, payments_unavailable: The service is busy or temporarily unavailable. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"deadline_exceeded: The check ran out of time. Nothing is charged."}},"summary":"DNS lookup","tags":["dns"],"x-data-class":"public","x-deadline-ms":10000,"x-finding-codes":["CHECK_QUERY_BUDGET_EXCEEDED","DNS_DOMAIN_NOT_FOUND","DNS_RESOLVER_FAILURE","DNS_RESOLVER_TIMEOUT"],"x-payment":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","scheme":"exact"},"x-price":{"display":{"single":"0.005"},"rule":{"amount":5000,"kind":"fixed"}}}},"/v1/mail/check":{"get":{"description":"Runs the MX, SPF and DMARC checks together and checks DKIM for any selectors you supply. DKIM is only checked for given selectors; a missing selector is not proof of missing DKIM.","operationId":"mail.check","parameters":[{"example":"example.com","in":"query","name":"domain","required":true,"schema":{"examples":["example.com"],"maxLength":1024,"minLength":1,"title":"Domain","type":"string"}},{"example":["selector1"],"explode":true,"in":"query","name":"dkim_selectors","required":false,"schema":{"default":[],"items":{"examples":["selector1"],"maxLength":200,"minLength":1,"type":"string"},"maxItems":5,"title":"Dkim Selectors","type":"array"},"style":"form"},{"$ref":"#/components/parameters/PaymentSignature"}],"responses":{"200":{"content":{"application/json":{"example":{"checked_at":"2026-10-24T12:00:00Z","data":{"dkim":[{"domain":"example.com","key_bits":2048,"key_bytes":294,"key_type":"rsa","name":"selector1._domainkey.example.com","record":"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs6ZX/GhLgrfk4EWkcLHLsAA/sQpuwePEUAD14pyq8i99ADfMijZm/6TcqsTnpjDtgAgZ8UR5WAOeY8V5E07QFzvrYrm+Yxv++MVwRgxn5pG4IASlD+gvXY56Pqx553B4GD7ktrskcBZJbPBgshVmzJyP+wrCy8UHfa4wF/AOjWFAUvVkI1iuxTcz3w/P2n0GKqiMh/KfURMc1RPVTqbFuSsoLzZjTAY5K8gLxPIffaXdwN9BQpzr+YSQSjf0gFTCo2CoBByxCR/7Me4yAyIyy7OKORBsvLsCwCFJxlU73QAwzuPW19NKdTHuv20wP+MsW4OXkgy9xmmDU6wvzBcmmwIDAQAB","revoked":false,"selector":"selector1","tags":[{"name":"v","value":"DKIM1"},{"name":"k","value":"rsa"},{"name":"p","value":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs6ZX/GhLgrfk4EWkcLHLsAA/sQpuwePEUAD14pyq8i99ADfMijZm/6TcqsTnpjDtgAgZ8UR5WAOeY8V5E07QFzvrYrm+Yxv++MVwRgxn5pG4IASlD+gvXY56Pqx553B4GD7ktrskcBZJbPBgshVmzJyP+wrCy8UHfa4wF/AOjWFAUvVkI1iuxTcz3w/P2n0GKqiMh/KfURMc1RPVTqbFuSsoLzZjTAY5K8gLxPIffaXdwN9BQpzr+YSQSjf0gFTCo2CoBByxCR/7Me4yAyIyy7OKORBsvLsCwCFJxlU73QAwzuPW19NKdTHuv20wP+MsW4OXkgy9xmmDU6wvzBcmmwIDAQAB"}],"testing":false}],"dmarc":{"adkim":"r","applied_policy":"reject","aspf":"r","domain":"example.com","org_domain":"example.com","pct":100,"policy":"reject","record":"v=DMARC1; p=reject; rua=mailto:dmarc@example.com","record_domain":"example.com","rua":["mailto:dmarc@example.com"],"ruf":[],"subdomain_policy":"reject","tags":[{"name":"v","value":"DMARC1"},{"name":"p","value":"reject"},{"name":"rua","value":"mailto:dmarc@example.com"}]},"domain":"example.com","mx":{"domain":"example.com","hosts":[{"addresses":["192.0.2.25"],"exchange":"mx1.example.com","preference":10,"resolved":true},{"addresses":["192.0.2.26"],"exchange":"mx2.example.com","preference":20,"resolved":true}],"implicit_mx":false,"null_mx":false},"spf":{"all_qualifier":"-","dns_lookup_count":1,"domain":"example.com","lookup_count_complete":true,"record":"v=spf1 ip4:192.0.2.0/24 include:_spf.example.net -all","tree":{"children":[{"children":[],"domain":"_spf.example.net","error":null,"record":"v=spf1 ip4:198.51.100.0/24 -all","terms":[{"kind":"mechanism","name":"ip4","qualifier":null,"raw":"ip4:198.51.100.0/24","value":"198.51.100.0/24"},{"kind":"mechanism","name":"all","qualifier":"-","raw":"-all","value":null}],"via":"include"}],"domain":"example.com","error":null,"record":"v=spf1 ip4:192.0.2.0/24 include:_spf.example.net -all","terms":[{"kind":"mechanism","name":"ip4","qualifier":null,"raw":"ip4:192.0.2.0/24","value":"192.0.2.0/24"},{"kind":"mechanism","name":"include","qualifier":null,"raw":"include:_spf.example.net","value":"_spf.example.net"},{"kind":"mechanism","name":"all","qualifier":"-","raw":"-all","value":null}],"via":"root"},"void_lookup_count":0}},"endpoint":"mail.check","findings":[],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"ok"},"schema":{"$ref":"#/components/schemas/CheckResponse_MailCheckData_"}}},"description":"The check result. A result with negative findings is still delivered.","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}},"description":"Payment required: the exact price and how to pay (x402 v2).","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payment_in_progress, payment_bound_to_other_request: This payment is already being processed, or it is bound to a different request. No new payment is taken. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The input failed validation on a request that carries a payment; nothing is charged. Without a payment, invalid input gets a 402 whose error field names the problem. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address or payer. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"check_failed: The check could not be completed. Nothing is charged."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable, payments_unavailable: The service is busy or temporarily unavailable. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"deadline_exceeded: The check ran out of time. Nothing is charged."}},"summary":"Mail configuration check","tags":["mail"],"x-data-class":"public","x-deadline-ms":10000,"x-finding-codes":["CHECK_QUERY_BUDGET_EXCEEDED","DKIM_INVALID_KEY","DKIM_KEY_REVOKED","DKIM_MULTIPLE_RECORDS","DKIM_NOT_FOUND","DKIM_SYNTAX_ERROR","DKIM_TESTING_MODE","DKIM_WEAK_KEY","DMARC_INHERITED","DMARC_INVALID_POLICY","DMARC_MULTIPLE_RECORDS","DMARC_NOT_FOUND","DMARC_NO_RUA","DMARC_PARTIAL_PCT","DMARC_POLICY_NONE","DMARC_SYNTAX_ERROR","DMARC_UNKNOWN_TAG","DMARC_UNSUPPORTED_REPORT_URI","DNS_DOMAIN_NOT_FOUND","DNS_RESOLVER_FAILURE","DNS_RESOLVER_TIMEOUT","MX_NOT_FOUND","MX_NULL","MX_NULL_WITH_OTHERS","MX_TARGET_IS_IP","MX_TARGET_UNRESOLVABLE","SPF_INCLUDE_LOOP","SPF_INCLUDE_NOT_FOUND","SPF_MACRO_NOT_EVALUATED","SPF_MULTIPLE_RECORDS","SPF_NEUTRAL_ALL","SPF_NOT_FOUND","SPF_NO_ALL","SPF_PASS_ALL","SPF_PTR_MECHANISM","SPF_SOFTFAIL_ALL","SPF_SYNTAX_ERROR","SPF_TOO_MANY_LOOKUPS","SPF_TOO_MANY_VOID_LOOKUPS"],"x-payment":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","scheme":"exact"},"x-price":{"display":{"single":"0.03"},"rule":{"amount":30000,"kind":"fixed"}}}},"/v1/mail/check/bulk":{"post":{"description":"Same engine as the single mail check. Results keep input order; duplicates count as items. Items that fail for technical reasons can be retried free for 15 minutes.","operationId":"mail.check.bulk","parameters":[{"$ref":"#/components/parameters/PaymentSignature"}],"requestBody":{"content":{"application/json":{"example":{"domains":["example.com","example.org"]},"schema":{"additionalProperties":false,"properties":{"domains":{"items":{"examples":["example.com"],"maxLength":1024,"minLength":1,"type":"string"},"maxItems":20,"minItems":1,"title":"Domains","type":"array"}},"required":["domains"],"title":"BulkDomainsInput","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"checked_at":"2026-10-24T12:00:00Z","endpoint":"mail.check.bulk","failed_count":0,"item_count":2,"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","results":[{"error":null,"index":0,"item":"example.com","result":{"checked_at":"2026-10-24T12:00:00Z","data":{"dkim":[],"dmarc":{"adkim":"r","applied_policy":"reject","aspf":"r","domain":"example.com","org_domain":"example.com","pct":100,"policy":"reject","record":"v=DMARC1; p=reject; rua=mailto:dmarc@example.com","record_domain":"example.com","rua":["mailto:dmarc@example.com"],"ruf":[],"subdomain_policy":"reject","tags":[{"name":"v","value":"DMARC1"},{"name":"p","value":"reject"},{"name":"rua","value":"mailto:dmarc@example.com"}]},"domain":"example.com","mx":{"domain":"example.com","hosts":[{"addresses":["192.0.2.25"],"exchange":"mx1.example.com","preference":10,"resolved":true},{"addresses":["192.0.2.26"],"exchange":"mx2.example.com","preference":20,"resolved":true}],"implicit_mx":false,"null_mx":false},"spf":{"all_qualifier":"-","dns_lookup_count":1,"domain":"example.com","lookup_count_complete":true,"record":"v=spf1 ip4:192.0.2.0/24 include:_spf.example.net -all","tree":{"children":[{"children":[],"domain":"_spf.example.net","error":null,"record":"v=spf1 ip4:198.51.100.0/24 -all","terms":[{"kind":"mechanism","name":"ip4","qualifier":null,"raw":"ip4:198.51.100.0/24","value":"198.51.100.0/24"},{"kind":"mechanism","name":"all","qualifier":"-","raw":"-all","value":null}],"via":"include"}],"domain":"example.com","error":null,"record":"v=spf1 ip4:192.0.2.0/24 include:_spf.example.net -all","terms":[{"kind":"mechanism","name":"ip4","qualifier":null,"raw":"ip4:192.0.2.0/24","value":"192.0.2.0/24"},{"kind":"mechanism","name":"include","qualifier":null,"raw":"include:_spf.example.net","value":"_spf.example.net"},{"kind":"mechanism","name":"all","qualifier":"-","raw":"-all","value":null}],"via":"root"},"void_lookup_count":0}},"endpoint":"mail.check","findings":[],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"ok"}},{"error":null,"index":1,"item":"example.org","result":{"checked_at":"2026-10-24T12:00:00Z","data":{"dkim":[],"dmarc":{"adkim":null,"applied_policy":null,"aspf":null,"domain":"example.org","org_domain":"example.org","pct":null,"policy":null,"record":null,"record_domain":null,"rua":[],"ruf":[],"subdomain_policy":null,"tags":[]},"domain":"example.org","mx":{"domain":"example.org","hosts":[],"implicit_mx":false,"null_mx":false},"spf":{"all_qualifier":null,"dns_lookup_count":0,"domain":"example.org","lookup_count_complete":true,"record":null,"tree":null,"void_lookup_count":0}},"endpoint":"mail.check","findings":[{"code":"DMARC_NOT_FOUND","evidence":{"count":1,"items":[{"domain":"example.org","org_domain":"example.org"}]},"explanation":"Without DMARC, receivers apply their own handling to mail that fails SPF and DKIM alignment, and the domain owner receives no reports.","message":"No DMARC record was found for the domain or its organisational domain.","recommendation":"Publish a DMARC record, for example with p=none and a rua address, and use the reports to plan further steps.","severity":"warning"},{"code":"DNS_DOMAIN_NOT_FOUND","evidence":{"count":2,"items":[{"name":"example.org"},{"name":"example.org"}]},"explanation":"The resolver answered NXDOMAIN: it found no records for this name. Another resolver or a recent registration or delegation change could give a different answer.","message":"The DNS resolver reported that the domain does not exist.","recommendation":"Check the spelling and that the domain is registered and delegated.","severity":"error"}],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"error"}}],"retry_token":null,"schema_version":"1.0","succeeded_count":2},"schema":{"$ref":"#/components/schemas/BulkResponse_MailCheckData_"}}},"description":"The check result. A result with negative findings is still delivered.","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}},"description":"Payment required: the exact price and how to pay (x402 v2).","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payment_in_progress, payment_bound_to_other_request: This payment is already being processed, or it is bound to a different request. No new payment is taken. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payload_too_large: The body is larger than 64 KB. Nothing is charged."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The input failed validation on a request that carries a payment; nothing is charged. Without a payment, invalid input gets a 402 whose error field names the problem. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address or payer. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"check_failed: The check could not be completed. Nothing is charged."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable, payments_unavailable: The service is busy or temporarily unavailable. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"deadline_exceeded: The check ran out of time. Nothing is charged."}},"summary":"Bulk mail configuration check","tags":["mail"],"x-data-class":"public","x-deadline-ms":30000,"x-finding-codes":["CHECK_DEADLINE_EXCEEDED","CHECK_INTERNAL_ERROR","CHECK_QUERY_BUDGET_EXCEEDED","DKIM_INVALID_KEY","DKIM_KEY_REVOKED","DKIM_MULTIPLE_RECORDS","DKIM_NOT_FOUND","DKIM_SYNTAX_ERROR","DKIM_TESTING_MODE","DKIM_WEAK_KEY","DMARC_INHERITED","DMARC_INVALID_POLICY","DMARC_MULTIPLE_RECORDS","DMARC_NOT_FOUND","DMARC_NO_RUA","DMARC_PARTIAL_PCT","DMARC_POLICY_NONE","DMARC_SYNTAX_ERROR","DMARC_UNKNOWN_TAG","DMARC_UNSUPPORTED_REPORT_URI","DNS_DOMAIN_NOT_FOUND","DNS_RESOLVER_FAILURE","DNS_RESOLVER_TIMEOUT","MX_NOT_FOUND","MX_NULL","MX_NULL_WITH_OTHERS","MX_TARGET_IS_IP","MX_TARGET_UNRESOLVABLE","SPF_INCLUDE_LOOP","SPF_INCLUDE_NOT_FOUND","SPF_MACRO_NOT_EVALUATED","SPF_MULTIPLE_RECORDS","SPF_NEUTRAL_ALL","SPF_NOT_FOUND","SPF_NO_ALL","SPF_PASS_ALL","SPF_PTR_MECHANISM","SPF_SOFTFAIL_ALL","SPF_SYNTAX_ERROR","SPF_TOO_MANY_LOOKUPS","SPF_TOO_MANY_VOID_LOOKUPS"],"x-payment":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","scheme":"exact"},"x-price":{"display":{"max_items":20,"minimum":"0.03","per_item":"0.024"},"rule":{"kind":"per_item","max_items":20,"minimum":30000,"per_item":24000}}}},"/v1/mail/check/bulk/retry":{"post":{"description":"Send the retry_token from a paid bulk response. Only the items that failed for a technical reason are run again, with the domains from the paid request; the input cannot be changed and nothing is charged. A token is valid for 15 minutes and 3 attempts in total. Each attempt that still has failed items returns a new token that replaces the old one.","operationId":"mail.check.bulk.retry","requestBody":{"content":{"application/json":{"example":{"retry_token":"Ex4mpleRetryToken_doNotUse-0123456789abcdef"},"schema":{"additionalProperties":false,"description":"Body of a free bulk retry: only the token from the paid response, never new input.","properties":{"retry_token":{"maxLength":256,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","title":"Retry Token","type":"string"}},"required":["retry_token"],"title":"BulkRetryInput","type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkResponse_MailCheckData_"}}},"description":"The bulk result with the retried items merged in. While items still fail and attempts are left, it holds a new retry_token that replaces the old one.","headers":{"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"retry_token_invalid: The retry token is unknown, or a newer token from a later attempt has replaced it. Nothing is charged."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"retry_in_progress: An attempt with this retry token is already running. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"retry_token_expired: The retry token has expired (15 minutes after it was issued), all 3 attempts are used, or no failed items are left. Nothing is charged."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payload_too_large: The body is larger than 64 KB. Nothing is charged."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The body is invalid: it must hold only retry_token. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable: The service is busy or temporarily unavailable. The attempt does not count. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}}},"summary":"Free retry of failed bulk items","tags":["mail"],"x-data-class":"public","x-deadline-ms":30000,"x-free":true,"x-retry-of":"mail.check.bulk","x-retry-token":{"max-attempts":3,"ttl-seconds":900}}},"/v1/mail/dkim":{"get":{"description":"Looks up selector._domainkey for the domain and validates the key record. This checks the published record only; verifying a message signature needs the message itself.","operationId":"mail.dkim","parameters":[{"example":"example.com","in":"query","name":"domain","required":true,"schema":{"examples":["example.com"],"maxLength":1024,"minLength":1,"title":"Domain","type":"string"}},{"example":"selector1","in":"query","name":"selector","required":true,"schema":{"examples":["selector1"],"maxLength":200,"minLength":1,"title":"Selector","type":"string"}},{"$ref":"#/components/parameters/PaymentSignature"}],"responses":{"200":{"content":{"application/json":{"example":{"checked_at":"2026-10-24T12:00:00Z","data":{"domain":"example.com","key_bits":2048,"key_bytes":294,"key_type":"rsa","name":"selector1._domainkey.example.com","record":"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs6ZX/GhLgrfk4EWkcLHLsAA/sQpuwePEUAD14pyq8i99ADfMijZm/6TcqsTnpjDtgAgZ8UR5WAOeY8V5E07QFzvrYrm+Yxv++MVwRgxn5pG4IASlD+gvXY56Pqx553B4GD7ktrskcBZJbPBgshVmzJyP+wrCy8UHfa4wF/AOjWFAUvVkI1iuxTcz3w/P2n0GKqiMh/KfURMc1RPVTqbFuSsoLzZjTAY5K8gLxPIffaXdwN9BQpzr+YSQSjf0gFTCo2CoBByxCR/7Me4yAyIyy7OKORBsvLsCwCFJxlU73QAwzuPW19NKdTHuv20wP+MsW4OXkgy9xmmDU6wvzBcmmwIDAQAB","revoked":false,"selector":"selector1","tags":[{"name":"v","value":"DKIM1"},{"name":"k","value":"rsa"},{"name":"p","value":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs6ZX/GhLgrfk4EWkcLHLsAA/sQpuwePEUAD14pyq8i99ADfMijZm/6TcqsTnpjDtgAgZ8UR5WAOeY8V5E07QFzvrYrm+Yxv++MVwRgxn5pG4IASlD+gvXY56Pqx553B4GD7ktrskcBZJbPBgshVmzJyP+wrCy8UHfa4wF/AOjWFAUvVkI1iuxTcz3w/P2n0GKqiMh/KfURMc1RPVTqbFuSsoLzZjTAY5K8gLxPIffaXdwN9BQpzr+YSQSjf0gFTCo2CoBByxCR/7Me4yAyIyy7OKORBsvLsCwCFJxlU73QAwzuPW19NKdTHuv20wP+MsW4OXkgy9xmmDU6wvzBcmmwIDAQAB"}],"testing":false},"endpoint":"mail.dkim","findings":[],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"ok"},"schema":{"$ref":"#/components/schemas/CheckResponse_DkimData_"}}},"description":"The check result. A result with negative findings is still delivered.","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}},"description":"Payment required: the exact price and how to pay (x402 v2).","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payment_in_progress, payment_bound_to_other_request: This payment is already being processed, or it is bound to a different request. No new payment is taken. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The input failed validation on a request that carries a payment; nothing is charged. Without a payment, invalid input gets a 402 whose error field names the problem. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address or payer. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"check_failed: The check could not be completed. Nothing is charged."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable, payments_unavailable: The service is busy or temporarily unavailable. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"deadline_exceeded: The check ran out of time. Nothing is charged."}},"summary":"DKIM record check","tags":["mail"],"x-data-class":"public","x-deadline-ms":10000,"x-finding-codes":["DKIM_INVALID_KEY","DKIM_KEY_REVOKED","DKIM_MULTIPLE_RECORDS","DKIM_NOT_FOUND","DKIM_SYNTAX_ERROR","DKIM_TESTING_MODE","DKIM_WEAK_KEY"],"x-payment":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","scheme":"exact"},"x-price":{"display":{"single":"0.01"},"rule":{"amount":10000,"kind":"fixed"}}}},"/v1/mail/dmarc":{"get":{"description":"Finds the DMARC record for the domain or its organisational domain, validates the tags and explains policy, subdomain policy, alignment and reporting addresses.","operationId":"mail.dmarc","parameters":[{"example":"example.com","in":"query","name":"domain","required":true,"schema":{"examples":["example.com"],"maxLength":1024,"minLength":1,"title":"Domain","type":"string"}},{"$ref":"#/components/parameters/PaymentSignature"}],"responses":{"200":{"content":{"application/json":{"example":{"checked_at":"2026-10-24T12:00:00Z","data":{"adkim":"r","applied_policy":"reject","aspf":"r","domain":"example.com","org_domain":"example.com","pct":100,"policy":"reject","record":"v=DMARC1; p=reject; rua=mailto:dmarc@example.com","record_domain":"example.com","rua":["mailto:dmarc@example.com"],"ruf":[],"subdomain_policy":"reject","tags":[{"name":"v","value":"DMARC1"},{"name":"p","value":"reject"},{"name":"rua","value":"mailto:dmarc@example.com"}]},"endpoint":"mail.dmarc","findings":[],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"ok"},"schema":{"$ref":"#/components/schemas/CheckResponse_DmarcData_"}}},"description":"The check result. A result with negative findings is still delivered.","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}},"description":"Payment required: the exact price and how to pay (x402 v2).","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payment_in_progress, payment_bound_to_other_request: This payment is already being processed, or it is bound to a different request. No new payment is taken. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The input failed validation on a request that carries a payment; nothing is charged. Without a payment, invalid input gets a 402 whose error field names the problem. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address or payer. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"check_failed: The check could not be completed. Nothing is charged."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable, payments_unavailable: The service is busy or temporarily unavailable. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"deadline_exceeded: The check ran out of time. Nothing is charged."}},"summary":"DMARC check","tags":["mail"],"x-data-class":"public","x-deadline-ms":10000,"x-finding-codes":["CHECK_QUERY_BUDGET_EXCEEDED","DNS_RESOLVER_FAILURE","DNS_RESOLVER_TIMEOUT","DMARC_INHERITED","DMARC_INVALID_POLICY","DMARC_MULTIPLE_RECORDS","DMARC_NOT_FOUND","DMARC_NO_RUA","DMARC_PARTIAL_PCT","DMARC_POLICY_NONE","DMARC_SYNTAX_ERROR","DMARC_UNKNOWN_TAG","DMARC_UNSUPPORTED_REPORT_URI"],"x-payment":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","scheme":"exact"},"x-price":{"display":{"single":"0.01"},"rule":{"amount":10000,"kind":"fixed"}}}},"/v1/mail/mx":{"get":{"description":"Resolves MX records, orders them by preference, and detects null MX (RFC 7505) and MX targets that do not resolve.","operationId":"mail.mx","parameters":[{"example":"example.com","in":"query","name":"domain","required":true,"schema":{"examples":["example.com"],"maxLength":1024,"minLength":1,"title":"Domain","type":"string"}},{"$ref":"#/components/parameters/PaymentSignature"}],"responses":{"200":{"content":{"application/json":{"example":{"checked_at":"2026-10-24T12:00:00Z","data":{"domain":"example.com","hosts":[{"addresses":["192.0.2.25"],"exchange":"mx1.example.com","preference":10,"resolved":true},{"addresses":["192.0.2.26"],"exchange":"mx2.example.com","preference":20,"resolved":true}],"implicit_mx":false,"null_mx":false},"endpoint":"mail.mx","findings":[],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"ok"},"schema":{"$ref":"#/components/schemas/CheckResponse_MxData_"}}},"description":"The check result. A result with negative findings is still delivered.","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}},"description":"Payment required: the exact price and how to pay (x402 v2).","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payment_in_progress, payment_bound_to_other_request: This payment is already being processed, or it is bound to a different request. No new payment is taken. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The input failed validation on a request that carries a payment; nothing is charged. Without a payment, invalid input gets a 402 whose error field names the problem. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address or payer. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"check_failed: The check could not be completed. Nothing is charged."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable, payments_unavailable: The service is busy or temporarily unavailable. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"deadline_exceeded: The check ran out of time. Nothing is charged."}},"summary":"MX lookup","tags":["mail"],"x-data-class":"public","x-deadline-ms":10000,"x-finding-codes":["CHECK_QUERY_BUDGET_EXCEEDED","DNS_DOMAIN_NOT_FOUND","DNS_RESOLVER_FAILURE","DNS_RESOLVER_TIMEOUT","MX_NOT_FOUND","MX_NULL","MX_NULL_WITH_OTHERS","MX_TARGET_IS_IP","MX_TARGET_UNRESOLVABLE"],"x-payment":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","scheme":"exact"},"x-price":{"display":{"single":"0.01"},"rule":{"amount":10000,"kind":"fixed"}}}},"/v1/mail/spf":{"get":{"description":"Fetches the SPF record, follows include and redirect chains, detects loops and multiple records, and counts DNS-querying mechanisms against the RFC 7208 limit of ten.","operationId":"mail.spf","parameters":[{"example":"example.com","in":"query","name":"domain","required":true,"schema":{"examples":["example.com"],"maxLength":1024,"minLength":1,"title":"Domain","type":"string"}},{"$ref":"#/components/parameters/PaymentSignature"}],"responses":{"200":{"content":{"application/json":{"example":{"checked_at":"2026-10-24T12:00:00Z","data":{"all_qualifier":"-","dns_lookup_count":1,"domain":"example.com","lookup_count_complete":true,"record":"v=spf1 ip4:192.0.2.0/24 include:_spf.example.net -all","tree":{"children":[{"children":[],"domain":"_spf.example.net","error":null,"record":"v=spf1 ip4:198.51.100.0/24 -all","terms":[{"kind":"mechanism","name":"ip4","qualifier":null,"raw":"ip4:198.51.100.0/24","value":"198.51.100.0/24"},{"kind":"mechanism","name":"all","qualifier":"-","raw":"-all","value":null}],"via":"include"}],"domain":"example.com","error":null,"record":"v=spf1 ip4:192.0.2.0/24 include:_spf.example.net -all","terms":[{"kind":"mechanism","name":"ip4","qualifier":null,"raw":"ip4:192.0.2.0/24","value":"192.0.2.0/24"},{"kind":"mechanism","name":"include","qualifier":null,"raw":"include:_spf.example.net","value":"_spf.example.net"},{"kind":"mechanism","name":"all","qualifier":"-","raw":"-all","value":null}],"via":"root"},"void_lookup_count":0},"endpoint":"mail.spf","findings":[],"meta":{"cache_hit":false,"duration_ms":42,"fresh_until":"2026-10-24T12:05:00Z","observed_at":"2026-10-24T12:00:00Z","resolver":"example","source":"dns"},"request_id":"req_aaaaaaaaaaaaaaaaaaaaaaaaaa","schema_version":"1.0","status":"ok"},"schema":{"$ref":"#/components/schemas/CheckResponse_SpfData_"}}},"description":"The check result. A result with negative findings is still delivered.","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-Request-ID":{"$ref":"#/components/headers/RequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"bad_request: The request is malformed. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}},"description":"Payment required: the exact price and how to pay (x402 v2).","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"payment_in_progress, payment_bound_to_other_request: This payment is already being processed, or it is bound to a different request. No new payment is taken. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"invalid_input: The input failed validation on a request that carries a payment; nothing is charged. Without a payment, invalid input gets a 402 whose error field names the problem. Nothing is charged."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"rate_limited: Too many requests from this IP address or payer. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"check_failed: The check could not be completed. Nothing is charged."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"busy, unavailable, payments_unavailable: The service is busy or temporarily unavailable. Nothing is charged.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"504":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorBody"}}},"description":"deadline_exceeded: The check ran out of time. Nothing is charged."}},"summary":"SPF check","tags":["mail"],"x-data-class":"public","x-deadline-ms":10000,"x-finding-codes":["CHECK_QUERY_BUDGET_EXCEEDED","DNS_DOMAIN_NOT_FOUND","DNS_RESOLVER_FAILURE","DNS_RESOLVER_TIMEOUT","SPF_INCLUDE_LOOP","SPF_INCLUDE_NOT_FOUND","SPF_MACRO_NOT_EVALUATED","SPF_MULTIPLE_RECORDS","SPF_NEUTRAL_ALL","SPF_NOT_FOUND","SPF_NO_ALL","SPF_PASS_ALL","SPF_PTR_MECHANISM","SPF_SOFTFAIL_ALL","SPF_SYNTAX_ERROR","SPF_TOO_MANY_LOOKUPS","SPF_TOO_MANY_VOID_LOOKUPS"],"x-payment":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","scheme":"exact"},"x-price":{"display":{"single":"0.01"},"rule":{"amount":10000,"kind":"fixed"}}}}},"servers":[{"url":"https://api.probekit.dev"}],"tags":[{"name":"dns"},{"name":"mail"}]}