Sources API
Manage RSS feed sources.
List Sources
GET /api/sources
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
domain | string | Filter by domain |
active | boolean | Filter by active status |
Response:
{
"data": [
{
"id": 1,
"name": "Reuters World",
"url": "https://feeds.reuters.com/reuters/worldNews",
"domain": "geopolitics",
"active": true,
"lastFetch": "2026-02-07T10:30:00Z",
"articleCount": 156,
"createdAt": "2026-02-01T00:00:00Z"
}
],
"meta": {
"total": 80
}
}
Get Source
GET /api/sources/:id
Create Source
POST /api/sources
Request Body:
{
"name": "BBC World",
"url": "https://feeds.bbci.co.uk/news/world/rss.xml",
"domain": "geopolitics"
}
Response: 201 Created
{
"data": {
"id": 81,
"name": "BBC World",
"url": "https://feeds.bbci.co.uk/news/world/rss.xml",
"domain": "geopolitics",
"active": true
}
}
Update Source
PUT /api/sources/:id
Request Body:
{
"name": "BBC World News",
"active": false
}
Delete Source
DELETE /api/sources/:id
Response: 204 No Content
Bulk Create
POST /api/sources/bulk
Request Body:
{
"sources": [
{"name": "Source 1", "url": "...", "domain": "technology"},
{"name": "Source 2", "url": "...", "domain": "economics"}
]
}
Source Stats
GET /api/sources/:id/stats
Response:
{
"data": {
"articleCount": 156,
"verifiedCount": 142,
"avgConfidence": 0.87,
"lastWeekArticles": 23,
"fetchErrors": 0
}
}