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.