← Back to API docs

GET/api/v1/logos

List logo assets (team / competition / player / category logos)
AssetsPlatform extensionsactivebetacoreAvailable

Description

Logo assets hosted by this platform (team, competition, player and category logos); returns addresses you can load directly.

Access

Request
GET https://api.sports.csap.ai/api/v1/logos
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

ParameterTyperequiredExampleDescription
idintegeroptional5179Cursor: rows with id (= uid) >= this value, ordered by id, for paging through everything
timeintegeroptionalIncremental: rows updated at or after this Unix time (seconds)
limitintegeroptional2Maximum number of rows, default 1000, maximum 1000

Example request

curl "https://api.sports.csap.ai/api/v1/logos?limit=2" \
  -H "X-API-Key: YOUR_API_KEY"

Try it

Example response

Real response with an external key at 09/11/2026, 14:28 UTC: HTTP 200, 2 rows, 170 ms (data cut to 2 rows)

{
  "code": 0,
  "data": [
    {
      "bytes": 12508,
      "content_type": "image/webp",
      "entity_id": "1",
      "entity_type": "team",
      "source": "S2",
      "uid": 1,
      "updated_at": "2026-11-08T09:19:07.94311Z",
      "url": "http://43.99.60.51:8080/logos/8a07f32aecbcdf442fa1fdce6450245abf5b754af3ce2c57dc8eefde9487bc95.webp"
    },
    {
      "bytes": 9166,
      "content_type": "image/webp",
      "entity_id": "10",
      "entity_type": "team",
      "source": "S2",
      "uid": 2,
      "updated_at": "2026-11-08T09:19:07.94311Z",
      "url": "http://43.99.60.51:8080/logos/b7fee41aca340c21c6a6f2548d0b87251c441c2f87482d221a3d200ab9a24b91.webp"
    }
  ],
  "message": "success",
  "success": true
}

Response fields 8

bytesintegerFile size in bytesExample: 12508
content_typestringMIME type, e.g. image/pngExample: "image/webp"
entity_idstringSource entity idExample: "1"
entity_typestringEntity type: team / competition / player / categoryExample: "team"
sourcestringSource code (S1, S2…)Example: "S2"
uidintegerUnique cursor id of the recordExample: 1
updated_atstringLast update time (UTC, ISO 8601; incremental sync with the time parameter goes by it)Example: "2026-11-08T09:19:07.94311Z"
urlstringLink

Errors

HTTPmessageWhen
401missing API key / unauthorizedNo X-API-Key, or the key is invalid or disabled
400bad param …Malformed parameter (e.g. id is neither a number nor u<uid>)
301match 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
404not foundThe match / team / competition does not exist, or is outside what this key can see (external keys see only matches inside the open coverage)
429rate limit exceeded / daily quota exceededThe key's per-minute rate or daily quota is exceeded
429server busy, retry laterThe server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds
500query errorThe query failed on the server; you may retry