Skip to main content

Articles API

Query and manage ingested articles.

List Articles

GET /api/articles

Query Parameters:

ParameterTypeDescription
domainstringFilter by domain
sourceIdnumberFilter by source
verifiedbooleanOnly verified articles
minConfidencenumberMinimum confidence (0-1)
fromstringStart date (ISO 8601)
tostringEnd date (ISO 8601)
pagenumberPage number
limitnumberItems per page

Response:

{
"data": [
{
"id": 1234,
"title": "Major Trade Agreement Announced",
"url": "https://example.com/article",
"source": {
"id": 1,
"name": "Reuters"
},
"domain": "economics",
"summary": "...",
"confidence": 0.94,
"verified": true,
"publishedAt": "2026-02-07T08:00:00Z",
"ingestedAt": "2026-02-07T08:15:00Z"
}
],
"meta": {
"total": 4852,
"page": 1,
"limit": 20
}
}

Get Article

GET /api/articles/:id

Response:

{
"data": {
"id": 1234,
"title": "Major Trade Agreement Announced",
"url": "https://example.com/article",
"content": "Full article text...",
"source": {
"id": 1,
"name": "Reuters",
"domain": "economics"
},
"confidence": 0.94,
"verified": true,
"verification": {
"score": 0.94,
"sources": ["AP", "BBC"],
"claims": [
{"text": "Agreement signed", "verified": true}
]
},
"publishedAt": "2026-02-07T08:00:00Z"
}
}

Article Stats

GET /api/articles/stats

Query Parameters:

ParameterTypeDescription
hoursnumberTime window (default: 24)
sourceListIdnumberFilter by source list

Response:

{
"data": {
"total": 4852,
"verified": 2246,
"last24h": 127,
"byDomain": {
"geopolitics": 45,
"technology": 38,
"economics": 22
},
"isFiltered": false
}
}

Update Verification

PUT /api/articles/:id/verification

Request Body:

{
"verified": true,
"notes": "Confirmed via official statement"
}