Images API
Render locally cached, immutable WebP artwork. StreamCenter validates, converts, hashes, stores, and verifies assets before they become public; image reads perform no remote fetch or generation.
Base URL: https://streamcenter.st
Endpoints
GET /api/images/badge/{assetId}.webp
Serves a team badge. Use the opaque badge value from a match team.
GET /api/images/poster/{assetId}.webp
Serves cached match artwork. The match poster field is an extensionless local path, so append .webp.
Shell
curl --fail-with-body --silent --show-error \
"https://streamcenter.st/api/images/badge/home-badge-id.webp" \
--output home-badge.webpJavaScript
const badgeUrl = `https://streamcenter.st/api/images/badge/${encodeURIComponent(match.teams.home.badge)}.webp`;
const posterUrl = match.poster
? `https://streamcenter.st${match.poster}.webp`
: null;HTML examples
HTML
<img
src="https://streamcenter.st/api/images/badge/home-badge-id.webp"
alt="North City badge"
width="96"
height="96"
loading="lazy"
>
<img
src="https://streamcenter.st/api/images/poster/poster-asset-id.webp"
alt="North City vs. South United"
width="1280"
height="720"
loading="lazy"
>Caching and layout
- Asset IDs are immutable. Successful responses are cacheable for one year and include a strong ETag.
- Preserve the
.webpsuffix and let browsers reuse the immutable response. - Always provide known width and height to prevent layout shift.
- The image limit is 300 requests per minute per client IP.
Limitations
The API does not proxy arbitrary URLs, resize images dynamically, or compose posters at request time. Missing assets and capability mismatches return 404.