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