MACHINE-READABLE INVESTIGATIVE PROTOCOL REPRODUCIBLE OSINT ARCHITECTURE SPECIFICATION VERSION: 2026.10-RFC

VERDICT emblemVERDICT

Public Research API & Programmatic Intelligence Specification

Developer & Analyst Infrastructure

VERDICT Public Research API

Structured, cryptographic, and epistemic programmatic access for investigative journalists, computational social scientists, legal scholars, and accountability audits.

1. Architecture & Base URLs

VERDICT provides a dual-surface API architecture designed with strict separation between public read-only verification data and the protected mutation pipeline.

LOCAL-FIRST RESEARCH ENGINE

http://127.0.0.1:8787

Default binding for the node research daemon. Serves local query resolution, adaptive web scraping, and research token-authenticated operations.

PUBLIC VERIFICATION MIRROR

https://www.verdict.is-an.org/api

Public projection serving static immutable JSON snapshots, verified evidence manifests, and audited case bundles.

Immutable Projection Rule: The public API exposes only verified, attributable, and publishable records. Internal investigative notes, quarantined Tier-E social media chatter, and private whistleblower leads are strictly ring-fenced behind institutional firewalls.

2. Authentication & Rate Limits

All standard retrieval routes (GET) and public community challenge submissions (POST /api/challenge) are unauthenticated.

Tier Header / Credential Rate Limit Allowed Actions
Public / Academic None required 60 requests / min / IP Read cases, entities, evidence packets, archives, and submit challenges
Desk Researcher x-research-token: <OSINT_RESEARCH_TOKEN> Governed by task budget (100 req/burst) Execute automated research sweeps, ingest claims, record leads

3. Epistemic Schemas & Classifications

Every claim and evidence packet returned by the API embeds strict epistemic state tags:

DOCUMENTED

Supported directly by official statutory filings, gazettes, corporate registries, or signed charters.

REPORTED

Attributable public reporting from established news organizations with editorial oversight.

UNRESOLVED GAP

Public allegation or pledge with zero statutory bank records or official corroboration found in searched corpus.

4. Public Read Routes

GET /api/health

System heartbeat, node timestamp, and mutation lockdown state.

curl -s "http://127.0.0.1:8787/api/health"

// Response (200 OK)
{
  "ok": true,
  "service": "research-api",
  "time": "2026-10-03T16:40:00.000Z",
  "readOnlyMutationsDisabled": false
}

GET /api/cases

Lists all active public accountability investigations with layer metrics.

curl -s "http://127.0.0.1:8787/api/cases"

// Response (200 OK)
{
  "count": 1,
  "cases": [
    {
      "id": "case_abhijeet-dipke",
      "slug": "abhijeet-dipke",
      "title": "The Architecture of the Cockroach Janta Party: Political Past, Legal Funding, and Public Demands",
      "status": "RESEARCHING",
      "claimCount": 6,
      "sourceCount": 6,
      "relationshipCount": 5,
      "eventCount": 4,
      "openQuestionsCount": 4,
      "versionCount": 3
    }
  ]
}

GET /api/cases/:idOrSlug

Fetches the complete investigative case bundle including connected claims, entity network, timeline events, funding ledgers, and open questions.

curl -s "http://127.0.0.1:8787/api/cases/abhijeet-dipke"

GET /api/evidence/:claimId

Fetches a First-Class Evidence Packet for a specific claim. Returns supporting evidence, primary sources, secondary corroboration, retrieval timestamps, cryptographic hash, and verification status.

curl -s "http://127.0.0.1:8787/api/evidence/claim_dipke_cjp_founding"

// Response (200 OK)
{
  "claimId": "claim_dipke_cjp_founding",
  "code": "CLM-001",
  "claim": "Abhijeet Dipke is the publicly declared founder and convenor of the Cockroach Janta Party.",
  "state": "documented",
  "attribution": "Official Charter & Public Declaration (May 2026)",
  "evidencePacket": {
    "primarySourceId": "src_cjp_official",
    "verificationStatus": "VERIFIED_PRIMARY",
    "archiveUrl": "https://web.archive.org/web/20260915120000/https://www.cockroachjantaparty.org/",
    "contentHash": "sha256-a1b2c3d4e5f60718293a4b5c6d7e8f90123456789abcdef0123456789abcdef0",
    "lastChecked": "2026-10-03T04:40:00Z"
  }
}

GET /api/sources/archive

Returns the Source Preservation Archive: immutable cold-storage snapshot URLs, original publication sources, and SHA-256 verification digests.

curl -s "http://127.0.0.1:8787/api/sources/archive"

GET /api/coverage

Dynamic research coverage index: sources swept, documents examined, claims verified, and explicitly declared investigative limitations.

curl -s "http://127.0.0.1:8787/api/coverage"

// Response (200 OK)
{
  "summary": {
    "sourcesSearched": 38,
    "sourcesYieldingData": 24,
    "documentsReviewed": 183,
    "claimsExtracted": 6,
    "claimsVerified": 5,
    "openQuestionsCount": 4,
    "contradictionsCount": 2
  },
  "epistemicRule": "No evidence found in searched corpus ≠ evidence does not exist.",
  "totalEntitiesResolved": 10,
  "totalSourcesPreserved": 6,
  "activeCasesCount": 1
}

GET /api/entities/:id

Full entity dossier projection with associated claims, corporate relationships, financial interactions, and resolved aliases.

curl -s "http://127.0.0.1:8787/api/entities/person_abhijeet-dipke"

GET /api/research/contradictions

Real-time contradiction detection engine identifying statements, public pledges, and official records that cannot simultaneously be accurate.

curl -s "http://127.0.0.1:8787/api/research/contradictions"

5. Factual Challenge Submission

POST /api/challenge

VERDICT invites external researchers, subjects, and institutional representatives to challenge any published claim. Submissions enter a non-mutating analyst verification queue and log a cryptographic audit event.

Field Type Required Description
claimId string Yes ID of the claim or case being challenged (e.g. claim_dipke_sibal_legal_fund)
reason string Yes Specific explanation of factual error, date omission, or counter-evidence (min 5 chars)
evidenceUrl string Optional Primary gazette link, court docket number, or archived order supporting the correction
name string Optional Challenger's name or institutional affiliation
contact string Optional Contact email for follow-up by the VERDICT ombudsman desk
curl -X POST "http://127.0.0.1:8787/api/challenge" \
  -H "Content-Type: application/json" \
  -d '{
    "claimId": "claim_dipke_sibal_legal_fund",
    "name": "Bar Council Observer",
    "reason": "Clarify that the fund was announced as pro-bono counsel commitments rather than a direct bank wire.",
    "evidenceUrl": "https://delhihighcourt.nic.in/case-order/2026/...",
    "contact": "observer@legalresearch.org"
  }'

// Response (202 Accepted)
{
  "ok": true,
  "challengeId": "challenge_4fa2e1c9-7681-4235-862a-e6a6428c9462",
  "status": "queued_for_review",
  "message": "Challenge submitted to editorial review queue. Canonical data is protected and not directly mutated."
}

6. Autonomous Research Execution

POST /api/research/run REQUIRES x-research-token

Autonomous micro-agent sweep running across official gazettes, corporate registries (MCA), Wayback archives, and social platforms under strict verification budgets.

curl -X POST "http://127.0.0.1:8787/api/research/run" \
  -H "Content-Type: application/json" \
  -H "x-research-token: $OSINT_RESEARCH_TOKEN" \
  -d '{
    "target": {
      "canonicalName": "Sharjeel Imam",
      "usernames": ["@sharjeel_imam"],
      "organizations": ["Jawaharlal Nehru University"]
    },
    "question": "What public court filings and judicial statements are documented regarding bail hearings?",
    "maxRounds": 3,
    "taskBudget": 25
  }'

7. Cryptographic Manifest & Tamper Protection

VERDICT uses cryptographic SHA-256 content addressing for every archived document. Before any web page or PDF is cited in an Evidence Packet, its body bytes are digested:

// Integrity Digest Verification Example
const crypto = require('node:crypto');
const fs = require('node:fs');

const rawDocument = fs.readFileSync('archive/2026-cjp-charter.html');
const hash = 'sha256-' + crypto.createHash('sha256').update(rawDocument).digest('hex');
console.log('Document Verified:', hash === packet.contentHash);

8. Terms of Use & Attribution

VERDICT data is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Mandatory Attribution: Any newsroom, legal brief, academic paper, or public visualization citing VERDICT API records must include:

"Source: VERDICT Public Accountability Desk (verdict.is-an.org), Investigation ID #[ID]."