Skip to main content
V1 image URLs are publicly accessible without an API key — load them straight from <img> tags. They’re served from the same v1.{sport}.sportsapipro.com host as the JSON API.
This is different from V2 image URLs, which require the x-api-key header. If you’re mixing V1 and V2, use the right host for each.

URL pattern

https://v1.{sport}.sportsapipro.com/images/{entity}/{id}?imageVersion={v}
EntityPathExample
Competition logo/images/competitions/{id}/images/competitions/11?imageVersion=1
Team logo/images/competitors/{id}/images/competitors/131?imageVersion=8
Country flag/images/countries/{id}/images/countries/2?imageVersion=1
Athlete photo/images/athletes/{id}/images/athletes/116097?imageVersion=4
imageVersion comes from the entity’s JSON payload — pass it through to cache-bust when the asset updates.

Caching

The CDN returns Cache-Control: public, max-age=86400. Combined with imageVersion, you can safely cache aggressively at the edge or in a service worker.

Recipes

<!-- FC Barcelona crest -->
<img
  src="https://v1.football.sportsapipro.com/images/competitors/132?imageVersion=8"
  alt="FC Barcelona"
  width="64" height="64"
  loading="lazy"
/>
function TeamLogo({ team }) {
  return (
    <img
      src={`https://v1.football.sportsapipro.com/images/competitors/${team.id}?imageVersion=${team.imageVersion}`}
      alt={team.name}
      width={48}
      height={48}
      loading="lazy"
    />
  );
}
Always set explicit width and height on image tags to avoid layout shift, and use loading="lazy" for off-screen logos.
Last modified on June 12, 2026