DEVELOPER REFERENCE / V1
Docs
All responses are JSON. API responses preserve existing confidence and status.
Transparency & credibility tracking
Statiq separates the evidence behind a report, its review state and the credibility of its sources. A reviewed article is not automatically a confirmed claim, and a source score is not a guarantee that every report is correct.
Evidence you can inspect
Event responses include the report’s status and confidence, source IDs, original source links and source posting times. Source links identify the supporting report—not necessarily a primary record. Only sources marked public are included in API citations; private intake and administrator review records are not exposed.
posted_at is the source’s reporting time; first_detected_at is Statiq’s detection time. Neither establishes when a claim was verified. Summaries are reading aids, not replacements for the cited original.
What reaches the event feed
Events come from local reporting and official records as well as national and world outlets. Each kind is worded for what it is:
- Local news
- Local and regional outlets' reports of incidents happening now, reviewed by the same live-event rule as every other report.
- Official local records
- Storm and weather reports, road closures and incidents, and transit agencies' service alerts, each with the record's own coordinates where it has them. Transit alerts are live disruptions only: suspensions, and cuts, delays, detours or moved stops caused by an accident, weather, a strike, a demonstration or police activity. Planned work, holiday timetables and elevator or accessibility notices are left out.
- Residents' requests
- City 311 and similar service requests are worded as requests (“a 311 request reports…”) and are not confirmation of an incident. Reporters' names and contact details are never kept.
- Worldwide official records
- Orange and red disaster alerts, earthquakes of magnitude 5 and above, and satellite-observed wildfires, volcanic activity, severe storms, floods and landslides (planned burns are left out).
- Internet outages
- A country or region whose measured connectivity falls below half of normal. This is a measurement, not a report of the cause.
- Grid status
- A status the California grid operator itself declares (a Flex Alert, restricted maintenance or an energy emergency, and the return to normal) is an official record. A forecast of tight supply is sent to subscribers as an energy watch, labelled as a forecast, and never becomes an event.
- Other languages
- Reports in other languages are reviewed by the same rule. Titles and summaries are written in English; the source link points to the original-language report, and the place is taken from how the report itself names it.
Wire copies of one agency story count as one source, and repeated posts or shares never corroborate themselves. Being single-source, brief or unverified is never a reason to leave out a live event, and none of the kinds above confirms a claim on its own.
Article review vs. claim confirmation
Articles enter the published dataset after a recorded AI content review or an audited human claim confirmation. AI review checks source-faithful content, attribution, categorization and explicitly supported locations; it can publish a single-source article while its claim status remains unverified.
- Unverified
- The claim is not independently confirmed, even if the article has passed content review.
- Corroborated
- A recorded supporting-evidence state, not the final confirmation standard. Check the attached citations and their independence.
- Confirmed
- Settled either by the settlement squad on the administrator’s behalf (a corroborated report at least 90 minutes old, three or more independent sources or two including an official one, agreeing in verbatim quotes, with no correction contradicting it; a confirmation made in its first six hours is reopened if a correction appears within a day) or by an administrator’s recorded finding with selected evidence and an attestation. Each report says which, and an administrator can undo a squad settlement. False is settled only when an official source or two independent outlets say the event did not happen, and not before six hours.
- False
- A recorded false-claim outcome. These reports are excluded from the event feed; eligible outcomes can appear in source history or claim-match responses.
Connecting reports or receiving more reposts does not confirm a claim. Confidence is a 0–100 assessment, not a calibrated probability or a percentage guarantee of truth. The v1 event response does not separately expose the article-review timestamp or administrator audit notes.
Source credibility over time
GET /v1/sources/{id} returns a stored reliability_score, confirmed and false claim counts, editorial notes, metric_history and recent_claim_outcomes. Reliability and settled-claim accuracy are different measures; reliability is not automatically recalculated from the counts.
Historical accuracy uses confirmed outcomes as a share of confirmed plus false outcomes, excluding unresolved claims. With no settled outcomes, accuracy is null. A small outcome sample is limited evidence, not a validated track record. Speed compares a source’s own publication times with the earliest other independent source on the same events (how often it was first, and the median minutes behind otherwise); originality is its share of reports that are not agency copies, and of reports no other independent source carried; corroboration is how often independent sources later reported what it reported, which is agreement, not proof. Each is computed over the last 90 days with its counts and sample, and is null below five reports.
Metric history records snapshots when a source is created or its metrics change. recorded_at means the snapshot was recorded then—not that earlier reporting was assessed then. No historical assessments are invented or backdated. The source endpoint returns up to 20 recent snapshots and a bounded selection of recent claim outcomes; this is not a complete history of every claim.
Independence & uncertainty
Distinct source IDs do not prove independent evidence. Shared ownership, syndication, reposts and a common upstream report may connect otherwise separate publishers. These relationships are not automatically established by the current API. Source notes and original reports provide context; repeated coverage alone is insufficient.
Locations use places explicitly supported by the reporting. Country-level markers may be approximate; ambiguous or global reports can remain unmapped. Transit alerts name routes and stops rather than coordinates, so they are placed from the places the alert names or at the agency's city; county-wide weather alerts sit at the county centre and are labelled area-wide. The v1 event response exposes coordinates but not location-precision notes, so coordinates alone should not be treated as exact incident locations.
Claim matching & corrections
POST /v1/verify_claim retrieves related evidence and its recorded status; it does not independently verify a new claim. No match means no sufficiently close eligible report was found—not that the claim is false. An empty contradiction list does not establish that no contradictory evidence exists.
New claim-status transitions are recorded in an append-only internal history. Public source snapshots and eligible outcomes provide a limited view of the record; the v1 API does not expose the complete transition or administrator audit trail. Retain citation URLs, event IDs and retrieval dates when using evidence downstream, and re-check current records before consequential decisions.
Place data
Maps and town names come from open data: Natural Earth (public domain) and US Census places. Strategic places such as canals, straits, ports, border crossings and bridges come from Wikidata (CC0), with their extents from Natural Earth. A report placed on such a place is marked at its centre and labelled that way; it is not an exact incident location.
Authentication
Use your issued customer key. Keys are scoped, stored hashed and can be revoked in your console. Never include a key in a URL.
Base URL: https://statiq.sh/api/public/v1 Authorization: Bearer $STATIQ_API_KEY Content-Type: application/json
Hosted external endpoints use /api/public/v1, not a bare /v1 path. Developer keys receive events delayed 60 minutes and 1,000 calls per UTC calendar month; Team keys allow 50,000 calls. The key’s per-minute rate also applies. Errors are JSON with an error field: 400 invalid request, 401 missing/revoked key, 403 missing scope, 404 unknown source, 429 quota/rate limit (Retry-After), 503 unavailable service.
MCP server for AI agents
Any MCP client (Claude Code, Claude Desktop, or an agent built on the Claude API) can use Statiq as a tool with the same API key. Tools: search_events, get_event, local_events, conflict_events (Team and Enterprise keys), verify_claim, get_source, get_story and geocode_place. Every call passes through the same scopes, quotas, plan delay and audit log as the REST endpoints below; results carry status and confidence exactly as recorded.
claude mcp add --transport http statiq https://statiq.sh/api/public/mcp \ --header "Authorization: Bearer $STATIQ_API_KEY"
curl -s https://statiq.sh/api/public/mcp \
-H "Authorization: Bearer $STATIQ_API_KEY" -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'GET /v1/events
Scope: events:read. Optional filters: region (exact match), category, since (ISO 8601), min_confidence (0–100), bbox (west,south,east,north), ids (up to 20 comma-separated event ids). limit defaults to 50, maximum 100. Only reviewed articles or audited confirmed claims are returned. A single-source AI-reviewed article can still have unverified claim status.
curl 'https://statiq.sh/api/public/v1/events?category=shipping&min_confidence=60&bbox=20,30,40,45' \ -H "Authorization: Bearer $STATIQ_API_KEY"
{
"events": [
{
"id": "00000000-0000-4000-8000-000000000001",
"title": "Example: port operations disrupted",
"summary": "An illustrative source-backed report.",
"category": "shipping",
"lat": 35,
"lon": 30,
"status": "corroborated",
"confidence": 72,
"first_detected_at": "2026-11-10T10:00:00Z",
"sources": [
{
"id": "00000000-0000-4000-8000-000000000002",
"platform": "news",
"reliability_score": 85,
"url": "https://example.org/report",
"posted_at": "2026-11-10T09:58:00Z"
}
]
}
]
}POST /v1/verify_claim
Scope: claims:verify. Send text of 10–2,000 characters. This endpoint retrieves up to five matching reports from at most 500 recent eligible events. Matching is lexical and deterministic (no AI call, so it is fast, free and never paused): a report matches when at least three of the claim’s significant terms appear in its title or summary and they cover at least half of the claim. Responses are labelled "matching": "lexical"; a match is retrieval, not a new AI verdict. No sufficiently close report returns result "no_match". Supporting/contradicting sources reflect the attached report status, not inferred contradictions.
curl 'https://statiq.sh/api/public/v1/verify_claim' \
-H "Authorization: Bearer $STATIQ_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"text":"Port operations disrupted at Northport cargo terminal"}'{
"result": "matches",
"matches": [
{
"id": "00000000-0000-4000-8000-000000000001",
"title": "Example: port operations disrupted",
"status": "corroborated",
"confidence": 72,
"supporting_sources": [
{
"id": "00000000-0000-4000-8000-000000000002",
"platform": "news",
"reliability_score": 85,
"url": "https://example.org/report",
"posted_at": "2026-11-10T09:58:00Z"
}
],
"contradicting_sources": [],
"evidence_note": "Sources are attached reports; no contradiction is inferred from missing evidence."
}
]
}{ "result": "no_match", "matches": [] }GET /v1/local
Scope: events:read. Query: lat, lon, radius_miles (1–50, default 25), optional locality, limit (≤100). Returns reviewed events from the last 14 days ranked by confidence × proximity × a 2-hour freshness half-life, each with distance_miles and relevance. County- or region-level reports are area-wide: they carry no distance and are returned only when locality exactly matches.
curl 'https://statiq.sh/api/public/v1/local?lat=41.88&lon=-87.63&radius_miles=10' \ -H "Authorization: Bearer $STATIQ_API_KEY"
GET /v1/stories/{id}
Scope: stories:read. Returns a public story and its reviewed member events in time order, each with its own attached public sources. An existing cited summary is returned only when its exact eligible member set still matches; otherwise summary is null. Recorded live signal history is included. No AI is called by this endpoint.
GET /v1/sources/{id}
Scope: sources:read. Supply a source UUID. Returns stored reliability, settled outcomes (confirmed and false, settled by the settlement squad on the administrator's behalf or by an administrator) and the accuracy calculated from them, recorded metric history, and three components over the last 90 days: speed (first_share, median_minutes_behind and every report's minutes behind, from publication times), originality (own_reporting_share, exclusive_share) and corroboration (corroborated_share, false_share, single_source_share). Each component carries its method, counts and sample, and its shares are null below five reports. Only public source profiles are exposed.
curl 'https://statiq.sh/api/public/v1/sources/00000000-0000-4000-8000-000000000002' \ -H "Authorization: Bearer $STATIQ_API_KEY"
{
"id": "00000000-0000-4000-8000-000000000002",
"display_name": "Example source",
"reliability_score": 85,
"claims_confirmed": 3,
"claims_false": 0,
"outcomes": {
"confirmed": 3,
"false": 0,
"settled_by_squad_in_sample": 3,
"settled_by_administrator_in_sample": 0
},
"components": {
"accuracy": 100,
"accuracy_method": "statiq-source-accuracy-v1",
"speed": {
"method": "statiq-source-speed-v1",
"sample": 6,
"first": 2,
"first_share": 33,
"minutes_behind": [
0,
0,
4,
12,
31,
58
],
"median_minutes_behind": 8
},
"originality": {
"method": "statiq-source-originality-v1",
"sample": 20,
"own": 17,
"exclusive": 6,
"own_reporting_share": 85,
"exclusive_share": 30
},
"corroboration": {
"method": "statiq-source-corroboration-v1",
"sample": 18,
"corroborated": 9,
"false": 0,
"single_source": 7,
"corroborated_share": 50,
"false_share": 0,
"single_source_share": 39
}
},
"recent_claim_outcomes": []
}All request and response records on this page are illustrative, not live statistics. Signed asset webhooks are planned, not exposed by this API version.