Docs

Every surface is an endpoint first.

The desk is a client of these routes. Responses are JSON, cached briefly at the edge, and carry the snapshot they were computed from. Public routes are read-only.

Endpoints

  • GET /api/fuse/health

    Snapshot identity, counts, and the time of the last collection run.

  • GET /api/fuse/sources

    Source registry with modality, rights, rate limits, and last-run outcome per adapter. Disabled and planned sources are listed as such and never appear in the corpus.

  • GET /api/fuse/events

    Ranked event summaries.

    • status=corroborated|disputed|candidate
    • type=<event_type>
    • modality=sensor|alert|imagery|telemetry|text
    • min_items=<n>
    • review=1
    • q=<text>
    • limit=<n≤400>
    • offset=<n>
    • view=overview for counts, top, review queue, and cross-modal lists
  • GET /api/fuse/events/{event_id}

    Full dossier: hypothesis, assessment with factors, items with span-level claims, lineage, media checks, forecasts, history, decisions, banners.

    • format=html for a printable dossier
    • format=download for an attachment
  • GET /api/fuse/evidence?artifact={artifact_id}

    One stored item with its claims, lineage edges, media assessment, and the events it belongs to.

  • POST /api/fuse/media/check

    Provenance check for one public image URL: C2PA validation, EXIF, perceptual hashes, reuse against the snapshot. Body {"url"}. Same-origin, 12 per minute. The image is not stored.

  • GET /api/fuse/lab/evaluations

    Gold-scenario runs under four configurations, reproduced on request.

  • POST /api/fuse/review

    Lab identity required.

    Record an analyst decision on an event. Body {event_id, action, justification, target_event_id?}.

Data contracts

  • ArtifactOne collected item: source, modality, canonical URL, raw hash, three clocks (published, observed, collected), media references, rights.
  • ClaimA predicate with optional value and unit, the exact span in the artifact, hedged/negated/attributed flags, and resolved place and time with confidence.
  • LineageEdge / IndependenceGroupDerivation between artifacts (canonical URL, near-duplicate, quotes, publisher family, reused media) and the union that counts as one source.
  • EventHypothesisLinked artifacts with a place (name, footprint, alternatives), a time window with basis, status, version, and config hash.
  • EventAssessmentIndependent support and contradiction counts, nine scored factors with anchors, contradictions with quotes, explanation steps, and media flags.
  • MediaAssessmentC2PA state and signer, EXIF summary, perceptual hashes, reuse matches with first-seen time, detector status.
  • ForecastTarget, horizon, probability or abstention, drivers, persistence baseline, and validation where later snapshots exist.
  • AnalystDecisionAction, justification, actor, the assessment it was made against, and time.

Example

curl -s "https://deadindex.com/api/fuse/events?status=corroborated&modality=sensor&limit=3"

curl -s "https://deadindex.com/api/fuse/events/evt_…?format=html" > dossier.html

Banners are part of the response, not decoration. Clients that display an index without its note are not displaying FUSE output.

Adding a source

An adapter declares its id, modality, rights text, rate limit, and a fetch that returns artifacts in the contract above. Sources that need a licence or a sponsor account are typed but disabled, and the registry shows them that way. Customer deployments add their own adapters in their own environment.

Open the desk · Security