Seekr
Sign in
FREE PREVIEW · 200 KEYS TOTAL

A seek preview API,
for any video player.

One request in, ready-to-use seek previews

320×180one thumb size
IMDB · TMDBany title
CDN cachedCloudflare edge
Android TVplayer · in dev
NOW PLAYING
Our Last Blue Hour
1080p · HEVC · 5.1
0:39:23
2:03:04
Drag the scrubber — this is what your player sees when sprites load.
DEMO · ILLUSTRATIVE
What's in the box — today

The API ships now. The player ships next.

The seek-preview API is the product you can use this afternoon. The Android TV player below is the reference client we're building on top of it — still in development.

00:42:13
01
One thumbnail size.
320×180 JPEG tiles, always. The format you actually need above a scrubber thumb. About 8KB per tile, packed into sprite sheets your player reads via WebVTT.
IMDB · tt1234567
TMDB · 12345
DURATION · ms
SIGNED URLREADY
02
Any title.
Pass an IMDB or TMDB ID and the video's duration. We match it to the indexed sprite sheet, sign the delivery URLs, and hand back a WebVTT file your player can use immediately.
CACHE
CDN
p50
HIT
03
Edge-cached.
Sprite sheets are content-hashed and served from Cloudflare's edge cache with immutable headers — a cache hit on every repeat request, without touching the origin.
Try it live · Android TV build

Try Seekr previews on a real remote.

NuvioTV is an open-source, Stremio-style app for Android TV by NuvioMedia. We forked it, wired the Seekr SDK into its scrubber and published a build, so once you've claimed a key you can sideload it and feel the 320×180 thumbnails on a real device. The HUD below is our own reference design for that surface, not a screenshot of the fork.

NOW PLAYING · S2 E1
Nightglass
2024·48m·HDR10·Eng · Deu · Fra
16FSK · violence · brief language
HLS · 1080p · HEVC · 5.1 · 6.2 Mb/s
0:29:47
0:48:00
SUBSEnglishAUDIOEN · 5.1SPEED1.00×
SEEDS12812.4 MB/sBUF38s
REFERENCE PLAYER · DESIGN MOCK
Top scrim
Title · advisory · stream readout
Stats lane
Codec · audio track · bandwidth
Transport
⏮ ⏵ ⏭ · subtitles · settings
Timeline
Scrubber + 320×180 peek from Seekr
NuvioTV · Seekr preview fork0.8.14-beta
Sideload the APK, paste your API key, and scrub. Upstream project: NuvioMedia/NuvioTV.
Downloader code
On your TV, open the Downloader app by AFTVnews, go to Browse, and enter the code below to install the build straight from the remote.
3482370
The seek preview API

One endpoint. A frame for any timecode.

Pass a title's IMDB or TMDB ID and its video duration. Get back a WebVTT file and 320×180 sprite sheets, served from Cloudflare's edge cache. Your player maps any timecode to a tile using the VTT.

curl 'https://sprites.seekr.tv/sprites?imdb_id=tt1234567&duration_ms=7200000' \
-H 'Authorization: Bearer sk_live_••••••••••••••••••••••••••••••••'
200 OK
application/json · vtt_url + sprite sheets · edge cached
sample
Sample latency · illustrativeSAMPLE DATA
52 msp50
Illustrative round-trip time — call to first tile rendered.
p50
52 ms
p75
88 ms
p95
164 ms
p99
295 ms
Cloudflare edge cache. Sprite sheets are stored in Backblaze B2 and served through Cloudflare Workers with immutable cache headers. Once warm at the edge, every subsequent request is a pure cache hit with zero origin traffic.
Sample responsevtt_url IS RELATIVE · prepend https://sprites.seekr.tv
// GET /sprites?imdb_id=tt1234567&duration_ms=7200000
// 200 OK · application/json
 
{
"media_type": "movie",
"tmdb_id": 12345,
"title": "Example Movie",
"vtt_url": "/sprites/12345/7200000/thumbnails.vtt",
"source_duration_ms": 7200000,
"scale": 1.000123
}
// GET /sprites?show_imdb_id=tt7654321&season=2&episode=1&duration_ms=2880000
// 200 OK · application/json
 
{
"media_type": "series",
"show_tmdb_id": 67890,
"title": "Nightglass — s02e01",
"season": 2,
"episode": 1,
"episode_title": "Pilot",
"vtt_url": "/sprites/series/67890/s02e01/2880000/thumbnails.vtt",
"source_duration_ms": 2880000,
"scale": 1.0
}
LifecycleCALL → TILE IN 5 STEPS
01
Player ready
Before the first seek, your player calls GET /sprites once with the title's IMDB or TMDB ID and video duration. The JSON response is cached for 5 minutes.
02
Lookup
API key authenticated server-side. The title is matched in the in-memory sprite store — an O(1) map lookup with no database hop.
03
VTT fetched
JSON returns a relative vtt_url. Player fetches the VTT from sprites.seekr.tv — always served fresh, containing signed sheet URLs (6 h TTL) mapping every timecode to a tile.
04
Sheet served
Cloudflare Worker validates the signed token, then streams the sprite sheet from Backblaze B2. Sheets are immutably edge-cached for a year after the first request.
05
Render above thumb
Player extracts the 320×180 tile from the sheet using the VTT's xywh coords. Blit it into the floating frame. The user sees the future.
Sign up · free preview

Claim one of 200 keys.

We're opening the seek-preview API to 200 developers, free for the duration of the preview. One project per key. Confirm your email to claim your slot.

Preview slotsLIVE
163of 200 keys left
37 CLAIMED·resets when the preview closes
Your details
~30 SECONDS
Free preview tier. 5,000 lookups / day · always 320×180 JPEG tiles · no credit card.
Already have one? Sign in (coming soon).
Preview includes
Free
For the duration of the public preview.
5,000 lookups per day
320×180 JPEG sprite tiles
Cloudflare edge cache
Signed tile URLs
Email when the player ships
API RESPONSEapplication/json
{
  "vtt_url": "…/thumbnails.vtt",
  "title": "Interstellar",
  "media_type": "movie"
}
vtt_url → sprite sheets · 320×180 tiles
Free preview · 200 keys

Show your users the next frame.

Free for the first 200 developers. One function call, one fixed thumbnail size, one ~40ms round-trip.