Usage and exports

Aggregated usage for dashboards, and the full decision log for your controller.

Two read surfaces: aggregates for watching, exports for evidence. You own the data in both — the log is exportable at any time, in full.

Usage

GET/v1/usage?from=2026-08-01&to=2026-09-01&group_by=agent

group_by: agent, category, verdict, protocol, day. In every window on this page, from is inclusive and to is exclusive, so back-to-back windows never count a day twice. The response aggregates evaluated requests and settled volume over the window:

{
  "from": "2026-08-01",
  "to": "2026-09-01",
  "group_by": "agent",
  "data": [
    {
      "agent": "agt_procurement_01",
      "evaluated": 1418,
      "verdicts": { "allow": 1361, "review": 9, "deny_limit": 31, "deny_category": 17 },
      "settled_volume": 48210.50,
      "currency": "USD"
    }
  ]
}

Every evaluated request counts as one decision whatever the verdict, and settled volume is counted separately. Both lines here reconcile against the monthly invoice described in pricing.

Export the decision log

GET/v1/exports/records?from=2026-08-01&to=2026-09-01

Streams NDJSON: one decision record per line, in the shape authorizations documents, including the verdict_token. This is the export the audit answer is built from — who paid whom, under which policy, approved by which rule, with identity, decision, and settlement joined per transaction.

curl -s "https://api.saifuro.com/v1/exports/records?from=2026-08-01&to=2026-09-01" \
  -H "Authorization: Bearer sk_live_..." > august.ndjson
wc -l august.ndjson

Records are append-only: a correction appears as a new record pointing at the one it corrects, and nothing is ever rewritten or missing from an export. Exports of the same window are byte-stable unless a correction landed in between — which the log will show.

Agent conversation content is not in the export, because it was never collected. We see the spend request, not the reasoning that produced it.

On this page