SDKs

Official typed clients for the Faro API. Both mirror the same VerdictResult contract as the REST API and MCP server — verdict, reason, recommended_action, and signals.

Prefer raw HTTP? The quickstart still shows curl; the API reference is generated from the OpenAPI spec.

Python — faro-client

Install from PyPI when published, or from the repo while developing:

pip install faro-client
# or, from the faro_AI repo:
pip install -e sdk/python
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, result.recommended_action)

asyncio.run(main())

Errors raise FaroError with status_code, code, and request_id — the same envelope as the REST API.

TypeScript — @faro/client

npm install @faro/client
import { FaroClient } from "@faro/client";

const client = new FaroClient({ apiKey: process.env.FARO_API_KEY! });

const result = await client.verifyUrl("https://www.google.com");
console.log(result.verdict, result.reason, result.recommended_action);

Errors throw FaroError with status, code, and requestId.

Methods

Both clients expose the same verify surface:

MethodEndpoint
verify_url / verifyUrlPOST /v1/verify/url
verify_payee / verifyPayeePOST /v1/verify/payee
verify_message / verifyMessagePOST /v1/verify/message
verify(type, value) / verify(type, value)POST /v1/verify
report(type, value, kind) / report(type, value, kind)POST /v1/reports