Quickstart
Faro returns one consistent verdict — 🟢 green, 🟡 yellow, or 🔴 red — for a URL, a payee, or a message, with a plain-language reason and a recommended action. This page gets you from zero to your first verdict.
1. Get an API key
Sign up at /signup with your email and location. Faro issues your API key immediately in the browser (shown once), so copy and store it right away. Send it on every request as a bearer token:
Authorization: Bearer <your-key>
2. Make your first call
import asyncio
import os
from faro_client import FaroClient
async def main() -> None:
async with FaroClient(os.environ["FARO_API_KEY"]) as client:
result = await client.verify_url("https://www.google.com")
print(result.verdict, "—", result.reason)
asyncio.run(main())3. Read the verdict
{
"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": [ ... ],
"request_id": "b1946ac92492d2347c6235b4d2611184",
"cached": false
}
Branch on recommended_action (allow / warn / block / review) for logic, and
surface reason to your user — it is always present and written in plain language.
4. Verify payees and messages
The same shape covers all three artifact types:
async with FaroClient(os.environ["FARO_API_KEY"]) as client:
payee = await client.verify_payee("ramesh@okaxis")
message = await client.verify_message("URGENT: share the OTP we just sent")
print(payee.verdict, message.verdict)Next steps
SDKs
Python and TypeScript clients — install, methods, and error handling.
API Reference
Every endpoint, generated from the OpenAPI spec.
Concepts
Verdicts, signals, and the tiers that produce them.
Verify console
Browser UI with verdict cards and local history.
Verify before pay
AP2 / x402 / ACP payment-intent checks.
MCP server
Give your agent the same tools, including verify-before-pay.