SportsAPI Pro provides image endpoints for all visual assets across both V1 and V2 APIs.
V2 images require authentication. V2 image endpoints require an x-api-key header and count against your daily rate limit, just like data endpoints. V1 image endpoints remain free and publicly accessible.
All 25 V2 sport APIs serve images at the same path pattern. Replace {sport} with the sport subdomain (e.g., football, basketball, tennis).V2 image requests require an x-api-key header and count against your daily usage quota.
V1 image endpoints are free and publicly accessible — no API key required. The V1 image proxy supports cache-busting via the imageVersion parameter returned in API responses.
Heat map images are returned from the API with tokenized URLs:
GET /images/heatmaps/{token}
The heatMap field in lineup data from the /game endpoint automatically returns this tokenized format. Simply use the URL as-is — no manual construction needed.
Now reserved for genuine upstream pipeline failures, which are rare. Recommended action: retry once after ~2 seconds. If it persists, contact support — it indicates an actual infrastructure issue, not a bad ID.
When an image endpoint returns 404, work through these in order:
Verify the ID exists. Call the corresponding data endpoint first:
Players → GET /api/players/{id}
Teams → GET /api/teams/{id}
Tournaments → GET /api/tournaments/{id}
If the data endpoint also returns 404, the ID is invalid.
Find the correct ID via search.
curl "https://v1.football.sportsapipro.com/search?query=Messi&filter=athletes" \ -H "x-api-key: YOUR_API_KEY"# → athletes[0].id is the canonical SportsAPI Pro player ID
For tournaments, confirm you’re using uniqueTournament.id, not tournament.id. The per-season tournament.id won’t resolve against the image endpoint. See Canonical IDs.
If the data endpoint returns 200 but the image returns 502, that’s a real pipeline issue. Retry once; if it persists, contact support with the request ID.
A recent customer migration shipped player IDs from a different provider:
Step
Request
Result
1
GET /images/players/30981
404 Image not found upstream
2
GET /api/players/30981
404 — confirms the ID isn’t ours
3
GET /search?query=Messi&filter=athletes
athletes[0].id = 12994
4
GET /images/players/12994
200 OK — 2.8 KB WebP
The fix in every case was the same: discover the canonical ID via /search and store it. For a step-by-step migration playbook, see the One-Time ID Migration Guide.