V
Verify AI actions before they run
Verifact evaluates proposals against your sources and returns allow, deny, or needs_review with a tamper proof audit record.
What Verifact does
AI / agent action
Before the agent takes action, a request for approval is sent to Verifact
↓
Verifact
Validates claims against requirements, and returns a decision
verifyrequirementsdecision
↓
Downstream action
Actions that are triggered or blocked after evaluation
allowdenyneeds_review
- Verify
- Check claims against provided sources and references so proposals are grounded.
- Authorize
- Return a clear decision: allow, deny, or needs_review so callers can act predictably.
- Audit
- Record decisions and reasons so actions are traceable and accountable.
Establish your sources
Verifact verifies from the sources you provide — no browsing, no guessing. By default, verify & authorize run deterministically for safer, auditable outcomes.
- You may include a source via inline text with the request
- If you have a URL or document you can ingest it once via POST /v2/sources (fetch + extract + persist), then reuse the returned source_id everywhere.
- If a claim can’t be supported, Verifact returns needs_review or deny with reasons.
{
"claims": [{ "id": "c1", "text": "Customer was charged twice for order #1842." }],
"sources": [
{ "source_id": "s1", "type": "text", "title": "Support note", "content": "Charge posted twice on 2026-01-08 for order #1842." }
]
}Sample request and response
Authorize API: Authorize agent actions
High-stakes example: Approve refunds & require clear auditability
Agent request (example).
const payload = {
action: { type: "refund", params: { order_id: "order_1842", amount: 550, currency: "USD" } },
claims: [{ id: "c1", text: "Order #1842 was charged twice" }],
sources: [
{ source_id: "s1", type: "text", title: "Refund policy", text: "Refunds over $500 require manager approval unless duplicate charge is found." },
{ source_id: "s2", type: "text", title: "Support ticket #1842", text: "Order #1842 was charged twice; recommend full refund of $550." }
],
requirements: { citations: "required" }
};
async function evaluate() {
const res = await fetch("https://verifact-api.fly.dev/v2/authorize", {
method: "POST",
headers: { "Content-Type": "application/json", "Authorization": "Bearer $API_KEY" },
body: JSON.stringify(payload)
});
const artifact = await res.json();
console.log(artifact);
}
evaluate();Verifact response (example).
{
"request_id": "req_001",
"request_hash": "sha256:abcd1234...",
"decision": "allow",
"reason": "coverage_met",
"coverage_score": 0.95,
"diagnostics": [ { "claim_id": "c1", "claim_text": "Order #1842 was charged twice", "coverage": 1.0 } ],
"action_ref": { "type": "refund", "hash": "sha256:efgh5678..." },
"audit": { "record_id": "28fca883-b2f8-4d12-9c6b-0123456789ab", "record_hash": "sha256:32514406a64...", "key_id": "audit_v2", "merkle_root": "sha256:5b0ab5785e0b...", "proof": [ { "hash": "sha256:aaa111...", "position": "left" }, { "hash": "sha256:bbb222...", "position": "right" } ] }
}