Every API here is available over the APIs.io API and to AI agents over MCP.
{"openapi":"3.1.0","info":{"title":"Faro","summary":"A trust API: one red/yellow/green verdict for URLs, payees, and messages.","description":"\nFaro returns **one consistent verdict** — 🟢 green, 🟡 yellow, or 🔴 red — for a\nURL, a payee, or a message, with a plain-language `reason` and a\n`recommended_action` (`allow` / `warn` / `block` / `review`).\n\nA verdict is computed in tiers: fast deterministic checks (Google Safe Browsing,\ndomain age via RDAP, sanctions screening, global payment-handle format) decide the\nclear cases, and an LLM reasons only about the genuinely ambiguous ones — so most\ncalls never touch the model and stay fast and cheap.\n\n**Auth.** Send your key as `Authorization: Bearer <key>`.\n**Caching.** Responses carry `X-Faro-Cache: hit|miss`; every response carries\n`X-Request-ID`.\n","contact":{"name":"Faro","url":"https://farofinance.app/"},"license":{"name":"Proprietary"},"version":"1.3.0"},"paths":{"/v1/pages/claims":{"post":{"tags":["Suite"],"summary":"Start a page claim","operationId":"start_claim_v1_pages_claims_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pages/claims/{claim_id}/prove":{"post":{"tags":["Suite"],"summary":"Prove control (soft auto-verifies on claim; strict checks DNS TXT)","operationId":"prove_v1_pages_claims__claim_id__prove_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProveOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pages/claims/{claim_id}/cloudflare/authorize":{"get":{"tags":["Suite"],"summary":"Start Cloudflare OAuth for domain control (scaffold)","operationId":"cloudflare_authorize_v1_pages_claims__claim_id__cloudflare_authorize_get","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cloudflare Authorize V1 Pages Claims Claim Id Cloudflare Authorize Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pages/cloudflare/callback":{"get":{"tags":["Suite"],"summary":"Cloudflare OAuth callback (scaffold)","operationId":"cloudflare_callback_v1_pages_cloudflare_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cloudflare Callback V1 Pages Cloudflare Callback Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pages/claims/{claim_id}/cloudflare/verify":{"post":{"tags":["Suite"],"summary":"Verify faro-verify TXT via DNS (Cloudflare DoH)","operationId":"cloudflare_verify_v1_pages_claims__claim_id__cloudflare_verify_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProveOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pages/claims/{claim_id}/checks":{"post":{"tags":["Suite"],"summary":"Run sector registry checks via the verify engine","operationId":"checks_v1_pages_claims__claim_id__checks_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","title":"Claim Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChecksOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pages":{"post":{"tags":["Suite"],"summary":"Publish a Faro page (consent)","operationId":"publish_v1_pages_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Suite"],"summary":"List recently published pages","operationId":"list_pages_v1_pages_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":40,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Pages V1 Pages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pages/{slug}":{"get":{"tags":["Suite"],"summary":"Public page standing","operationId":"get_page_v1_pages__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePublicOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents":{"post":{"tags":["Suite"],"summary":"Register a business agent","operationId":"create_agent_v1_agents_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/{agent_id}":{"get":{"tags":["Suite"],"summary":"Agent binding lookup","operationId":"get_agent_v1_agents__agent_id__get","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/guard/checkout":{"post":{"tags":["Suite"],"summary":"Checkout gate — payee + optional buyer agent","operationId":"guard_checkout_v1_guard_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardCheckoutIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Guard Checkout V1 Guard Checkout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/index":{"get":{"tags":["Suite"],"summary":"Trust Index v0 aggregate","operationId":"trust_index_v1_index_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexOut"}}}}}}},"/v1/keepers/cohorts/current":{"get":{"tags":["Suite"],"summary":"Active Keepers cohort","operationId":"current_cohort_v1_keepers_cohorts_current_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Current Cohort V1 Keepers Cohorts Current Get"}}}}}}},"/v1/keepers/cohorts/{cohort_id}/join":{"post":{"tags":["Suite"],"summary":"Join a Keepers cohort","operationId":"join_cohort_v1_keepers_cohorts__cohort_id__join_post","parameters":[{"name":"cohort_id","in":"path","required":true,"schema":{"type":"string","title":"Cohort Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeeperJoinIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Join Cohort V1 Keepers Cohorts Cohort Id Join Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/club/{slug}/badge":{"get":{"tags":["Suite"],"summary":"Live Club / Verified badge (SVG or JSON)","operationId":"club_badge_v1_club__slug__badge_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"svg","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/entitlements":{"post":{"tags":["Suite"],"summary":"Upsert billing entitlement (admin or billing webhook)","operationId":"upsert_entitlement_v1_billing_entitlements_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upsert Entitlement V1 Billing Entitlements Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Suite"],"summary":"List entitlements for email","operationId":"list_entitlements_v1_billing_entitlements_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Entitlements V1 Billing Entitlements Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["System"],"summary":"Liveness check","description":"Returns `{\"status\": \"ok\"}` when the service is up. No auth required.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/v1/verify/url":{"post":{"tags":["Verify"],"summary":"Verify a URL","description":"Check a link before visiting, sharing, or acting on it. Runs Google Safe Browsing and a domain-age (RDAP) check, and — only when those are inconclusive — an LLM that reasons about brand impersonation and deceptive intent.","operationId":"verify_url_v1_verify_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueIn"},"examples":{"clean":{"summary":"A well-known site","value":{"value":"https://www.google.com"}},"phishing":{"summary":"A KYC-impersonation phishing link","value":{"value":"http://sbi-kyc-update.xyz/verify"}}}}},"required":true},"responses":{"200":{"description":"The verdict for the artifact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictResult"},"examples":{"green":{"summary":"A clean, well-established link","value":{"verdict":"green","confidence":0.8,"artifact":{"type":"url","value":"https://www.google.com"},"reason":"No safety problems found for this link.","recommended_action":"allow","signals":[{"name":"safe_browsing_clean","severity":"info","detail":"No Google Safe Browsing match.","source":"safe_browsing"},{"name":"domain_age_days","severity":"info","detail":"Domain has been registered for 9863 day(s).","source":"rdap"}],"request_id":"b1946ac92492d2347c6235b4d2611184","cached":false,"first_seen":"2026-06-01T09:12:44Z","checked_at":"2026-06-19T11:30:05Z"}},"red":{"summary":"A confirmed phishing link","value":{"verdict":"red","confidence":0.97,"artifact":{"type":"url","value":"http://sbi-kyc-update.xyz/verify"},"reason":"Google Safe Browsing flags this URL as Social Engineering.","recommended_action":"block","signals":[{"name":"safe_browsing_threat","severity":"critical","detail":"Google Safe Browsing flags this URL as Social Engineering.","source":"safe_browsing"},{"name":"domain_age_days","severity":"high","detail":"Domain was registered only 3 day(s) ago.","source":"rdap"}],"request_id":"3c59dc048e8850243be8079a5c74d079","cached":false,"first_seen":"2026-06-19T11:31:10Z","checked_at":"2026-06-19T11:31:10Z"}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"unauthorized","message":"Invalid API key.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"422":{"description":"Request body failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"invalid_request","message":"Request body failed validation.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"429":{"description":"Rate limit exceeded — slow down.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"rate_limited","message":"Too many requests. Slow down.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/verify/payee":{"post":{"tags":["Verify"],"summary":"Verify a payee","description":"Check a payee before sending money. Detects the payment-handle format across global rails (UPI, Venmo, Cash App, Pix, IBAN, email/phone) for transparency, screens against sanctions and OffshoreLeaks, and enriches business names with GLEIF (LEI) and GDELT adverse media. **Honest note:** Faro does not confirm an account exists or belongs to anyone — it reads public signals and advises. Format detection is always informational.","operationId":"verify_payee_v1_verify_payee_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueIn"},"examples":{"upi":{"summary":"A UPI VPA (India)","value":{"value":"ramesh@okaxis"}},"venmo":{"summary":"A Venmo username (US)","value":{"value":"@jane-doe-99"}},"cashapp":{"summary":"A Cash App $cashtag (US)","value":{"value":"$JaneDoe"}},"sanctioned":{"summary":"A sanctioned name","value":{"value":"Vladimir Putin"}},"business":{"summary":"A legal entity name (GLEIF + enrichment)","value":{"value":"Apple Inc."}}}}},"required":true},"responses":{"200":{"description":"The verdict for the artifact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictResult"},"examples":{"green":{"summary":"A business with a verified LEI","value":{"verdict":"green","confidence":0.85,"artifact":{"type":"payee","value":"Apple Inc."},"reason":"No safety problems found. Active LEI match found for Apple Inc.: HWUPKR0MPOU8FGXBT394 (US-CA).","recommended_action":"allow","signals":[{"name":"payee_format","severity":"info","detail":"Not a recognized payment-handle format; treated as a name or other identifier.","source":"payee_format"},{"name":"sanctions_clean","severity":"info","detail":"No sanctions-list match for this payee name.","source":"opensanctions"},{"name":"lei_verified","severity":"low","detail":"Active LEI match found for Apple Inc.: HWUPKR0MPOU8FGXBT394 (US-CA).","source":"gleif"}],"request_id":"98f13708210194c475687be6106a3b84","cached":false,"first_seen":"2026-06-10T08:00:00Z","checked_at":"2026-06-19T11:32:00Z"}},"red":{"summary":"A sanctions-list match","value":{"verdict":"red","confidence":0.97,"artifact":{"type":"payee","value":"Vladimir Putin"},"reason":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","recommended_action":"block","signals":[{"name":"sanctions_match","severity":"critical","detail":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","source":"opensanctions"}],"request_id":"aab3238922bcc25a6f606eb525ffdc56","cached":false,"first_seen":"2026-06-19T11:33:00Z","checked_at":"2026-06-19T11:33:00Z"}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"unauthorized","message":"Invalid API key.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"422":{"description":"Request body failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"invalid_request","message":"Request body failed validation.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"429":{"description":"Rate limit exceeded — slow down.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"rate_limited","message":"Too many requests. Slow down.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/verify/message":{"post":{"tags":["Verify"],"summary":"Verify a message","description":"Check inbound text (SMS, chat, email) before acting on it. Extracts any links and verifies each (folding in the worst), then reasons about scam tactics — urgency, impersonation, OTP/PIN solicitation.","operationId":"verify_message_v1_verify_message_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueIn"},"examples":{"otp_scam":{"summary":"An OTP-solicitation scam","value":{"value":"URGENT: Your account is blocked. Share the OTP we just sent to reactivate."}}}}},"required":true},"responses":{"200":{"description":"The verdict for the artifact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictResult"},"examples":{"yellow":{"summary":"An OTP-phishing message (text only)","value":{"verdict":"yellow","confidence":0.5,"artifact":{"type":"message","value":"URGENT: Your account is blocked. Share the OTP we just sent to reactivate."},"reason":"Pressures you to share a one-time passcode — a hallmark of account-takeover scams.","recommended_action":"warn","signals":[{"name":"llm_assessment","severity":"medium","detail":"Pressures you to share a one-time passcode — a hallmark of account-takeover scams. No legitimate service asks for an OTP.","source":"llm"}],"request_id":"9bf31c7ff062936a96d3c8bd1f8f2ff3","cached":false,"first_seen":"2026-06-19T11:34:00Z","checked_at":"2026-06-19T11:34:00Z"}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"unauthorized","message":"Invalid API key.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"422":{"description":"Request body failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"invalid_request","message":"Request body failed validation.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"429":{"description":"Rate limit exceeded — slow down.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"rate_limited","message":"Too many requests. Slow down.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/verify/document":{"post":{"tags":["Verify"],"summary":"Verify a document","description":"Upload a document (PDF, Word/Excel/PowerPoint, HTML, …) as multipart form-data under the field `file`. Faro converts it to compact Markdown with MarkItDown, extracts and verifies any embedded links, and — when the deterministic tiers are inconclusive — reasons about document fraud (forged letterheads, fake invoices / payment-redirects, bogus KYC, OTP/credential solicitation). **Honest note:** Faro reads extracted text only — seals, images, and layout are lost, and scanned/image-only files (which need OCR) cannot be read.","operationId":"verify_document_v1_verify_document_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_verify_document_v1_verify_document_post"}}},"required":true},"responses":{"200":{"description":"The verdict for the document.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictResult"},"examples":{"fraud_invoice":{"summary":"An invoice-redirect fraud document","value":{"verdict":"red","confidence":0.85,"artifact":{"type":"document","value":"# Payment Reminder\n\nDear customer, your invoice is overdue. To avoid account suspension, pay immediately to our UPDATED bank details: A/C 50100XXXXXX, IFSC ABCD0001234. Confirm by sharing the OTP sent to your phone."},"reason":"Document shows invoice-redirect fraud: a last-minute change of bank details, payment urgency, and a request to share an OTP.","recommended_action":"block","signals":[{"name":"llm_assessment","severity":"high","detail":"Pressures immediate payment to newly changed bank details and solicits an OTP — classic invoice-redirect / account-takeover fraud.","source":"llm"}],"request_id":"6f4922f45568161a8cdf4ad2299f6d23","cached":false,"first_seen":"2026-06-19T11:36:00Z","checked_at":"2026-06-19T11:36:00Z"}}}}}},"413":{"description":"Uploaded file exceeds the size limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"file_too_large","message":"Uploaded file is too large.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"422":{"description":"The document could not be read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"document_unreadable","message":"Could not read this document. It may be encrypted, corrupt, or an unsupported format.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"unauthorized","message":"Invalid API key.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"429":{"description":"Rate limit exceeded — slow down.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"rate_limited","message":"Too many requests. Slow down.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}}}}},"/v1/verify":{"post":{"tags":["Verify"],"summary":"Verify any artifact","description":"The generic entry point: the body carries the `type` (`url`, `payee`, or `message`) alongside `value`. Behaves exactly like the typed routes.","operationId":"verify_generic_v1_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyIn"},"examples":{"url":{"summary":"Verify a URL","value":{"type":"url","value":"https://www.google.com"}},"payee":{"summary":"Verify a payee","value":{"type":"payee","value":"ramesh@okaxis"}},"message":{"summary":"Verify a message","value":{"type":"message","value":"Click here to claim your refund: bit.ly/x"}}}}},"required":true},"responses":{"200":{"description":"The verdict for the artifact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictResult"},"examples":{"url_green":{"summary":"A clean URL","value":{"verdict":"green","confidence":0.8,"artifact":{"type":"url","value":"https://www.google.com"},"reason":"No safety problems found for this link.","recommended_action":"allow","signals":[{"name":"safe_browsing_clean","severity":"info","detail":"No Google Safe Browsing match.","source":"safe_browsing"},{"name":"domain_age_days","severity":"info","detail":"Domain has been registered for 9863 day(s).","source":"rdap"}],"request_id":"b1946ac92492d2347c6235b4d2611184","cached":false,"first_seen":"2026-06-01T09:12:44Z","checked_at":"2026-06-19T11:30:05Z"}},"payee_red":{"summary":"A sanctioned payee","value":{"verdict":"red","confidence":0.97,"artifact":{"type":"payee","value":"Vladimir Putin"},"reason":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","recommended_action":"block","signals":[{"name":"sanctions_match","severity":"critical","detail":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","source":"opensanctions"}],"request_id":"aab3238922bcc25a6f606eb525ffdc56","cached":false,"first_seen":"2026-06-19T11:33:00Z","checked_at":"2026-06-19T11:33:00Z"}},"message_yellow":{"summary":"A suspicious message","value":{"verdict":"yellow","confidence":0.5,"artifact":{"type":"message","value":"URGENT: Your account is blocked. Share the OTP we just sent to reactivate."},"reason":"Pressures you to share a one-time passcode — a hallmark of account-takeover scams.","recommended_action":"warn","signals":[{"name":"llm_assessment","severity":"medium","detail":"Pressures you to share a one-time passcode — a hallmark of account-takeover scams. No legitimate service asks for an OTP.","source":"llm"}],"request_id":"9bf31c7ff062936a96d3c8bd1f8f2ff3","cached":false,"first_seen":"2026-06-19T11:34:00Z","checked_at":"2026-06-19T11:34:00Z"}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"unauthorized","message":"Invalid API key.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"422":{"description":"Request body failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"invalid_request","message":"Request body failed validation.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"429":{"description":"Rate limit exceeded — slow down.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"rate_limited","message":"Too many requests. Slow down.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/verify/payment-intent":{"post":{"tags":["Verify"],"summary":"Verify a payment intent","description":"Verify-before-pay adapter for AP2/x402/ACP flows. Maps payment counterparty context (merchant/payee/recipient/domain) to Faro's existing payee/url checks and returns the standard verdict object. Advisory only: Faro does not settle, authorize, or move funds.","operationId":"verify_payment_intent_v1_verify_payment_intent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentIntentIn"},"examples":{"ap2_merchant":{"summary":"AP2 mandate with merchant identity","value":{"protocol":"ap2","merchant":"Apple Inc."}},"x402_recipient_and_domain":{"summary":"x402 challenge with recipient + resource domain","value":{"protocol":"x402","recipient":"Vladimir Putin","resource_domain":"wallet.example"}}}}},"required":true},"responses":{"200":{"description":"The verdict for the artifact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictResult"},"examples":{"green":{"summary":"Trusted merchant context","value":{"verdict":"green","confidence":0.85,"artifact":{"type":"payee","value":"Apple Inc."},"reason":"No safety problems found. Active LEI match found for Apple Inc.: HWUPKR0MPOU8FGXBT394 (US-CA).","recommended_action":"allow","signals":[{"name":"payee_format","severity":"info","detail":"Not a recognized payment-handle format; treated as a name or other identifier.","source":"payee_format"},{"name":"lei_verified","severity":"low","detail":"Active LEI match found for Apple Inc.: HWUPKR0MPOU8FGXBT394 (US-CA).","source":"gleif"}],"explanation":"verify-before-pay (ap2) checked payee:Apple Inc.; returning the riskiest verdict.","request_id":"c20ad4d76fe97759aa27a0c99bff6710","cached":false,"first_seen":"2026-06-19T11:40:00Z","checked_at":"2026-06-19T11:40:00Z"}},"red":{"summary":"Risky counterparty in checkout flow","value":{"verdict":"red","confidence":0.97,"artifact":{"type":"payee","value":"Vladimir Putin"},"reason":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","recommended_action":"block","signals":[{"name":"sanctions_match","severity":"critical","detail":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","source":"opensanctions"}],"explanation":"verify-before-pay (x402) checked payee:Vladimir Putin, url:https://wallet.example; returning the riskiest verdict.","request_id":"c51ce410c124a10e0db5e4b97fc2af39","cached":false,"first_seen":"2026-06-19T11:41:00Z","checked_at":"2026-06-19T11:41:00Z"}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"unauthorized","message":"Invalid API key.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"422":{"description":"Request body failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"invalid_request","message":"Request body failed validation.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}},"429":{"description":"Rate limit exceeded — slow down.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"error":"rate_limited","message":"Too many requests. Slow down.","request_id":"b1946ac92492d2347c6235b4d2611184"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/verify/before-pay":{"post":{"tags":["Verify"],"summary":"Verify before pay (protocol payload)","description":"Verify-before-pay for agent-payment protocols, taking the **raw protocol payload**: an x402 `402 Payment Required` challenge body, an AP2 CartMandate/PaymentMandate, or an ACP merchant + checkout context. Faro extracts the counterparty (merchant → payee check, endpoint/site → URL check, receiving address → payee + on-chain screening), verifies each in parallel, and returns the riskiest verdict. A payload Faro cannot parse degrades to 🟡/`review` — never an error, never a false 🟢. Advisory only: Faro does not settle, authorize, or move funds.","operationId":"verify_before_pay_v1_verify_before_pay_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyBeforePayIn"}}},"required":true},"responses":{"200":{"description":"The verdict for the artifact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictResult"},"examples":{"green":{"summary":"Trusted merchant context","value":{"verdict":"green","confidence":0.85,"artifact":{"type":"payee","value":"Apple Inc."},"reason":"No safety problems found. Active LEI match found for Apple Inc.: HWUPKR0MPOU8FGXBT394 (US-CA).","recommended_action":"allow","signals":[{"name":"payee_format","severity":"info","detail":"Not a recognized payment-handle format; treated as a name or other identifier.","source":"payee_format"},{"name":"lei_verified","severity":"low","detail":"Active LEI match found for Apple Inc.: HWUPKR0MPOU8FGXBT394 (US-CA).","source":"gleif"}],"explanation":"verify-before-pay (ap2) checked payee:Apple Inc.; returning the riskiest verdict.","request_id":"c20ad4d76fe97759aa27a0c99bff6710","cached":false,"first_seen":"2026-06-19T11:40:00Z","checked_at":"2026-06-19T11:40:00Z"}},"red":{"summary":"Risky counterparty in checkout flow","value":{"verdict":"red","confidence":0.97,"artifact":{"type":"payee","value":"Vladimir Putin"},"reason":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","recommended_action":"block","signals":[{"name":"sanctions_match","severity":"critical","detail":"Payee matches a sanctioned entity: Vladimir Vladimirovich PUTIN.","source":"opensanctions"}],"explanation":"verify-before-pay (x402) checked payee:Vladimir Putin, url:https://wallet.example; returning the riskiest verdict.","request_id":"c51ce410c124a10e0db5e4b97fc2af39","cached":false,"first
# --- truncated at 32 KB (95 KB total) ---
# Full source: https://artifacts.apis.io/farofinance-app/openapi/_original/farofinance-app-api-openapi.json