Description
Returns all news, with incremental updates by timestamp.
1. First full sync: page through everything with the id parameter.
2. Afterwards: fetch what changed with the time parameter (suggested frequency: once a minute).
1. First full sync: page through everything with the id parameter.
2. Afterwards: fetch what changed with the time parameter (suggested frequency: once a minute).
Access
- Request
GET https://api.sports.csap.ai/api/v1/news- Auth
- Header X-API-Key: <your key> (Authorization: Bearer <key> also works; ?key= is still accepted but discouraged, because the key ends up in URLs and logs)
- External keys
- AvailableAny valid API key can call this endpoint.
- Rate limits
- 3000 per minute · 200000 per day · Set per key (rate_per_min and quota_daily returned by /api/v1/account are authoritative; the numbers above are a trial key's). Beyond them the answer is 429. In addition, heavy requests such as whole-table snapshots and statistics lists without a match id are processed 2 at a time for the whole platform; a request that cannot get a slot receives 429 with Retry-After. Responses do not carry X-RateLimit-* headers for now. See the general guide
Request parameters 3
| Parameter | Type | required | Example | Description |
|---|---|---|---|---|
| id | integer | optional | 5179 | Records with id greater than or equal to this value, ordered by id |
| time | integer | optional | Records updated at or after this time (timestamp), ordered by update time | |
| limit | integer | optional | 2 | Maximum number of rows, default 200, maximum 200 |
Example request
curl "https://api.sports.csap.ai/api/v1/news?limit=2" \ -H "X-API-Key: YOUR_API_KEY"
Try it
Example response
{
"code": 0,
"data": [
{
"author": null,
"body": null,
"catalog": null,
"content": null,
"cover": null,
"cover_type": null,
"created_at": "2026-11-03T11:30:00Z",
"excerpt": null,
"game_id": null,
"id": 1,
"image": null,
"label": null,
"lang": "eng",
"lang_detected": null,
"limit": null,
"max_id": null,
"max_time": null,
"min_id": null,
"min_time": null,
"published_at": null,
"publisher": null,
"query": null,
"redirect": null,
"seendate": "2026-11-03T11:30:00Z",
"site": "twtd.co.uk",
"source": "SX456135",
"sport_id": null,
"status": null,
"time": null,
"title": "Town Wont Lose Maeda For Month After Asian Cup Postponement",
"type": null,
"updated_at": 1793706790909,
"url": "https://www.twtd.co.uk/ipswich-town-news/53115/town-wont-lose-maeda-for-month-after-asian-cup-postponement"
},
{
"author": null,
"body": null,
"catalog": null,
"content": null,
"cover": null,
"cover_type": null,
"created_at": "2026-11-03T11:30:00Z",
"excerpt": null,
"game_id": null,
"id": 2,
"image": null,
"label": null,
"lang": "eng",
"lang_detected": null,
"limit": null,
"max_id": null,
"max_time": null,
"min_id": null,
"min_time": null,
"published_at": null,
"publisher": null,
"query": null,
"redirect": null,
"seendate": "2026-11-03T11:30:00Z",
"site": "twtd.co.uk",
"source": "SX456135",
"sport_id": null,
"status": null,
"time": null,
"title": "What Is It About Moyes",
"type": null,
"updated_at": 1793706790953,
"url": "https://www.twtd.co.uk/forum/642546/what-is-it-about-moyes-"
}
],
"message": "success",
"success": true
}Response fields 33
authornullnullable
bodynullnullable
catalognullnullableCategories · example: ["综合", "英超"]
contentnullnullableBody text
covernullnullableCover image
cover_typenullnullableIgnore (kept for compatibility)
created_atstringCreation time
Example: "2026-11-03T11:30:00Z"excerptnullnullable
game_idnullnullableEsports id: 1 LOL, 2 CSGO, 3 DOTA2, 6 KOG
idintegerRecord id; paging cursor (the id parameter returns records >= this value). In match endpoints it is the platform match id (gmid)
Example: 1imagenullnullable
labelnullnullableTags
langstringLanguage zh / en
Example: "eng"lang_detectednullnullable
limitnullnullableMaximum number of rows in this response
max_idnullnullableLargest id on this page
max_timenullnullableLatest update time on this page (Unix seconds)
min_idnullnullableSmallest id on this page
min_timenullnullableEarliest update time on this page (Unix seconds)
published_atnullnullable
publishernullnullable
querynullnullableQuery info (paging cursor, totals)
redirectnullnullableRelated items
seendatestring
Example: "2026-11-03T11:30:00Z"sitestring
Example: "twtd.co.uk"sourcestringSource code (S1, S2…)
Example: "gdelt"sport_idnullnullableSport id: 1 football, 2 basketball
statusnullnullableMatch status
timenullnullableTime / minute
titlestringTitle
Example: "Town Wont Lose Maeda For Month After Asian Cup Postponement…typenullnullableType
updated_atintegerLast update time (UTC, ISO 8601; incremental sync with the time parameter goes by it)
Example: 1793706790909urlstringLink
Errors
| HTTP | message | When |
|---|---|---|
| 401 | missing API key / unauthorized | No X-API-Key, or the key is invalid or disabled |
| 400 | bad param … | Malformed parameter (e.g. id is neither a number nor u<uid>) |
| 301 | match merged into <gmid> | Queried by an old match id that has been merged into a new gmid: Location points to the new address and the body carries moved_to |
| 404 | not found | The match / team / competition does not exist, or is outside what this key can see (external keys see only matches inside the open coverage) |
| 429 | rate limit exceeded / daily quota exceeded | The key's per-minute rate or daily quota is exceeded |
| 429 | server busy, retry later | The server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds |
| 500 | query error | The query failed on the server; you may retry |