{"openapi":"3.0.3","info":{"title":"Watchtower — Compliance & Data-Integrity API","version":"1.1.0","description":"Deterministic compliance & data-integrity APIs for AI agents: sanctions/watchlist screening (10 official lists, ~229k parties, daily), one-call KYB, identifier validation, FATF+EU jurisdiction risk, PII/secret detection, and LEI resolution. Pay per call via x402, MCP, or card."},"servers":[{"url":"https://justin-pacific-exchange-revelation.trycloudflare.com"}],"paths":{"/v1/keys":{"post":{"summary":"Create API key (free trial credit included)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string"}}}}}},"responses":{"200":{"description":"API key"}}}},"/v1/screen":{"post":{"summary":"Screen a name against sanctions lists ($0.02)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":2,"maxLength":500},"threshold":{"type":"number","minimum":0.5,"maximum":1,"default":0.82},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10},"types":{"type":"array","items":{"type":"string","enum":["person","entity","vessel","aircraft"]}},"dob":{"type":"string","maxLength":40,"description":"Optional date of birth or birth year. Candidates whose known DOB contradicts it are excluded; a matching DOB is confirmed and ranked first."},"nationality":{"type":"string","maxLength":60,"description":"Optional nationality/country. Candidates whose known nationality contradicts it are excluded."},"as_of":{"type":"string","maxLength":40,"description":"Optional ISO date/time. Screen against the lists as they stood then (point-in-time audit). See GET /v1/history."},"snapshot_version":{"type":"string","maxLength":40,"description":"Optional exact historical snapshot version to screen against."}}}}}},"responses":{"200":{"description":"Matches with scores, per-match corroboration, snapshot + algorithm versions"},"402":{"description":"Insufficient credit — top up"}}}},"/v1/screen/address":{"post":{"summary":"Screen a crypto address ($0.01)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"properties":{"address":{"type":"string"}}}}}},"responses":{"200":{"description":"Match result"},"402":{"description":"Insufficient credit"}}}},"/v1/screen/batch":{"post":{"summary":"Batch-screen up to 500 names ($0.015/name)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["names"],"properties":{"names":{"type":"array","minItems":1,"maxItems":500,"items":{"oneOf":[{"type":"string"},{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"dob":{"type":"string"},"nationality":{"type":"string"}}}],"description":"Each item is a name string, or {name, dob?, nationality?} to disambiguate that record."}},"threshold":{"type":"number"},"types":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Per-name results"},"402":{"description":"Payment required (price scales with count)"}}}},"/v1/watch":{"post":{"summary":"Watch a name for sanctions-list changes ($0.01/day, webhook alerts)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","webhook_url"],"properties":{"name":{"type":"string"},"webhook_url":{"type":"string","description":"Public https endpoint; receives watch_created and watch_changed events"},"days":{"type":"integer","minimum":1,"maximum":90,"default":30},"threshold":{"type":"number"}}}}}},"responses":{"200":{"description":"Watch created"},"402":{"description":"Payment required (days × $0.01)"}}},"get":{"summary":"List your watches (free)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Watches"}}}},"/v1/balance":{"get":{"summary":"Remaining credit (free)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Balance"}}}},"/v1/topup":{"post":{"summary":"Buy credit via Stripe Checkout","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"pack":{"type":"string","enum":["small","medium","large"]}}}}}},"responses":{"200":{"description":"Checkout URL"}}}},"/v1/validate":{"post":{"summary":"Validate & normalize an identifier ($0.005)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["value"],"properties":{"value":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","enum":["iban","lei","isin","bic","vat","card","eth","btc","cusip","sedol","imei","email","domain","phone","uuid"],"description":"Optional; auto-detected if omitted"}}}}}},"responses":{"200":{"description":"{type, value, valid, normalized}"},"402":{"description":"Payment required"}}}},"/v1/validate/batch":{"post":{"summary":"Validate up to 500 identifiers ($0.003/item)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":500}}}}}},"responses":{"200":{"description":"Per-item results"},"402":{"description":"Payment required"}}}},"/v1/jurisdiction":{"post":{"summary":"FATF + EU high-risk AML classification of a country ($0.005)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["country"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code or country name"}}}}}},"responses":{"200":{"description":"{iso2, name, fatf_status, risk_level, as_of, source}"},"402":{"description":"Payment required"}}}},"/v1/scan":{"post":{"summary":"Detect & redact PII and secrets in text ($0.005)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":1,"maxLength":100000}}}}}},"responses":{"200":{"description":"{findings[], counts, has_secrets, has_pii, redacted}"},"402":{"description":"Payment required"}}}},"/v1/lei":{"post":{"summary":"Resolve a Legal Entity Identifier via GLEIF ($0.01)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lei"],"properties":{"lei":{"type":"string","description":"20-char ISO 17442 LEI"}}}}}},"responses":{"200":{"description":"{lei, resolved, legal_name, status, jurisdiction, country}"},"400":{"description":"Invalid LEI checksum (free)"},"402":{"description":"Payment required"}}}},"/v1/lists":{"get":{"summary":"List versions, hashes, freshness, pricing (free)","responses":{"200":{"description":"Metadata"}}}},"/v1/history":{"get":{"summary":"Available points-in-time (list versions + in-effect windows) for as_of screening (free)","responses":{"200":{"description":"Points in time"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}}}