Kivo

Developer docs

Integrate claim-level source-support verification in one review run.

Use Kivo API Deployment for synthetic, sanitized, or approved hosted packets. Use Enterprise Worker Deployment when raw prompts, traces, sources, or embeddings need to stay in your environment.

The five-minute path

Get a Kivo API key

Use a scoped API key issued for your organization and keep the one-time secret in server-side configuration.

Choose deployment mode

Use Enterprise Worker Deployment for sensitive traces and Kivo API Deployment for approved hosted packets.

Submit a hosted packet

For Kivo API Deployment, send synthetic, sanitized, or explicitly approved packets through the REST API.

Poll completion

Use the returned polling URL until extraction, verification, and claim report compilation finish.

Read the claim report

Inspect unsupported claims, citation issues, evidence notes, follow-up questions, and request IDs.

Watch usage

Check the usage endpoint or billing screen for remaining monthly review runs.

Keep humans in control

Use support statuses and gate verdicts as workflow signals, not final high-stakes decisions.

Two deployment paths

Enterprise Worker Deployment

Create a metadata-only run, run the Kivo worker in your environment, store detailed reports in your storage, and send Kivo verdict/count/hash metadata.

Kivo API Deployment

Submit approved packets to `/v1/review-runs`, poll completion, and fetch hosted claims, verification results, and claim reports.

Credential split

API keys create/read hosted resources. Worker credentials are scoped to one private-worker review run and can be rotated or revoked.

What Kivo returns

Kivo returns a queued review-run record first. When processing completes, the run includes extracted claim counts and a source-bounded use status. Fetch the claims, verification results, and claim report for reviewer-facing findings.

Accepted response
{
  "review_run": {
    "id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f",
    "project_id": "9fd60878-b3a3-45ff-9ccf-7504c47a2c21",
    "status": "queued",
    "intended_use": "customer_facing",
    "strictness": "standard",
    "source_count": 1,
    "claim_count": 0,
    "unsupported_claim_count": 0,
    "safe_use_status": null,
    "gate_verdict": null,
    "created_at": "2026-04-27T16:20:18.000Z",
    "completed_at": null,
    "capture_method": "api",
    "question": null,
    "metadata": {
      "workflow": "support_answer",
      "environment": "quickstart"
    }
  },
  "queued": {
    "review_run_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f",
    "status": "queued",
    "polling_url": "https://api.trykivo.co/v1/review-runs/run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f",
    "recommended_poll_interval_seconds": 2
  },
  "polling_url": "https://api.trykivo.co/v1/review-runs/run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f",
  "request_id": "req_01hw87ffx88w7m4a4qn1v2z7g0"
}
Completed run
{
  "id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f",
  "project_id": "9fd60878-b3a3-45ff-9ccf-7504c47a2c21",
  "status": "completed",
  "intended_use": "customer_facing",
  "strictness": "standard",
  "source_count": 1,
  "claim_count": 1,
  "unsupported_claim_count": 1,
  "safe_use_status": "needs_repair",
  "gate_verdict": {
    "id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_gate_verdict",
    "review_run_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f",
    "verdict": "needs_repair",
    "safe_use_status": "needs_repair",
    "reasons": [
      {
        "code": "unsupported",
        "message": "One or more claims are not supported by the supplied sources.",
        "claim_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1"
      }
    ],
    "strictness": "standard",
    "mode": "advisory",
    "metadata": {
      "intended_use": "customer_facing",
      "policy_version": "gate-policy.2026-04-27.v1"
    },
    "created_at": "2026-04-27T16:20:24.000Z"
  },
  "created_at": "2026-04-27T16:20:18.000Z",
  "completed_at": "2026-04-27T16:20:24.000Z",
  "capture_method": "api",
  "question": null,
  "metadata": {
    "workflow": "support_answer",
    "environment": "quickstart"
  },
  "error_code": null,
  "error_message": null,
  "ai_output": "Customers can request refunds for any order within 60 days, including international orders.",
  "sources": [
    {
      "id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_source_1",
      "title": "Refund policy",
      "uri": null,
      "citation_label": "source 1",
      "media_type": "text/plain",
      "content_sha256": "9f37b0f8e5f4b8a0a7c8948ecdf7d927650f5b5a46c44dd1de44f771d5df3a41"
    }
  ],
  "source_spans": [
    {
      "id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_span_1",
      "source_document_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_source_1",
      "quote": "Customers may request a refund within 30 days of purchase.",
      "start_offset": 0,
      "end_offset": 59,
      "metadata": {
        "source_title": "Refund policy",
        "citation_label": "source 1"
      },
      "created_at": "2026-04-27T16:20:24.000Z"
    }
  ],
  "verification_results": [
    {
      "id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_verification_1",
      "atomic_claim_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1",
      "support_status": "unsupported",
      "primary_source_span": null,
      "verifier_name": "bravo-deterministic-source-verifier",
      "verifier_version": "source-verification.2026-04-27.v1",
      "verifier_provider": "deterministic",
      "verifier_model": "source-verification-rules-v1",
      "confidence": 0.74,
      "rationale": "The supplied source states a 30-day refund window, not 60 days.",
      "metadata": {
        "citation_issue": "no_citation_required",
        "candidate_count": 1
      },
      "created_at": "2026-04-27T16:20:24.000Z"
    }
  ],
  "claim_report": {
    "id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_report",
    "review_run_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f",
    "safe_use_status": "needs_repair",
    "title": "Claim report",
    "summary": "This review found 1 unsupported claim(s) and 0 citation issue(s) in the captured output.",
    "unsupported_claims": [
      {
        "claim_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1",
        "claim_text": "Customers can request refunds for any order within 60 days",
        "support_status": "unsupported",
        "output_start_offset": 0,
        "output_end_offset": 60,
        "source_span_id": null,
        "source_quote": null,
        "reviewer_follow_up": "Should the output remove or revise claim `run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1`?"
      }
    ],
    "citation_issues": [],
    "evidence_notes": [],
    "follow_ups": [
      {
        "claim_id": "run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1",
        "question": "Should the output remove or revise claim `run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1`?"
      },
      {
        "claim_id": null,
        "question": "Is the intended use still correct for this output?"
      }
    ],
    "markdown": "# Claim report\n\nUse status: Needs Repair\nUnsupported claims: 1\nCitation issues: 0\nSource coverage: 0/1 claims\n\n## Summary\nThis review found 1 unsupported claim(s) and 0 citation issue(s) in the captured output.\n\n## Unsupported claims\n- Claim `run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1`: The supplied sources do not support this claim: \"Customers can request refunds for any order within 60 days\"\n\n## Citation issues\n- No citation issues were found in the structured verification results.\n\n## Evidence notes\n- No partially supported claims were found in the structured verification results.\n\n## Follow-up questions\n- Should the output remove or revise claim `run_7f4f21e2-3d40-48a3-85f0-9f97e5f61b2f_claim_1`?\n- Is the intended use still correct for this output?\n",
    "compiler_version": "claim-report.2026-04-27.v1",
    "policy_version": "claim-report-policy.2026-04-27.v1",
    "metadata": {
      "source_coverage": {
        "claims_with_primary_source": 0,
        "total_claims": 1
      }
    },
    "created_at": "2026-04-27T16:20:24.000Z",
    "updated_at": "2026-04-27T16:20:24.000Z"
  },
  "request_id": "req_01hw87j6q7a27ez6p4dk4g0nsn"
}

Docs map

Deployment

Enterprise Worker vs Kivo API deployment modes, event flow, and raw-field boundaries.

Quickstart

Copyable curl commands for a free first hosted review run.

Core concepts

Terminology for review runs, atomic claims, source spans, claim reports, and gate verdicts.

Authentication

API key headers, scopes, project scoping, rotation, and server-side handling.

Review runs

Lifecycle states, polling, claims, verification results, and markdown claim reports.

API reference

Launched endpoint surface with request, response, error, and rate-limit notes.

AI agents

Copy a Kivo integration prompt into Codex, Claude Code, Cursor, or your AI harness.

Webhooks

Current webhook availability and the polling path for review-run completion.