Bittensor
Subnet

ChronoSeek is in active development — try the playground on a sample clip

ChronoSeek
//Developer documentation · v1

One request in.
One timestamp out.

The ChronoSeek API turns natural language into frame-accurate video timestamps. This page covers everything you need to make your first call and ship.

//01

Getting started

This is the proposed v1 contract. The public API will be backed by the ChronoSeek subnet once validator and gateway implementation is complete.

Base URL
https://api.chronoseek.org/v1

Authentication examples below are part of the preview contract; public API keys are not being issued yet.

//02

Authentication

Authenticate every request with a bearer token in the Authorization header. Requests without a valid key return 401.

Header
Authorization: Bearer cs_live_9f2e…
//03

Quickstart

Find a moment in a hosted video with one call.

curl
curl -X POST https://api.chronoseek.org/v1/seek \
  -H "Authorization: Bearer $CHRONOSEEK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://example.com/match.mp4",
    "query": "the moment the goalkeeper saves the shot"
  }'
//04

POST /v1/seek

Search one video for one described moment.

FieldTypeDescription
video_urlstringPublic or signed URL of the video. MP4, WebM, MOV, HLS.
video_idstringID of a previously indexed video. Use instead of video_url for long footage.
querystringPlain-language description of the moment. Be concrete: actions, objects, sounds.
top_kintCandidate moments to return. Default 3, max 10.
min_confidencefloatDrop candidates below this score. Default 0.3.
//05

The response

The primary result is first; candidatesholds the runner-up moments so you can offer "did you mean this scene?" navigation.

200 OK
{
  "timestamp": "00:47:12.480",
  "timestamp_seconds": 2832.48,
  "confidence": 0.97,
  "window": ["00:47:09.100", "00:47:18.220"],
  "candidates": [
    { "t": "00:47:12.480", "confidence": 0.97, "miner_uid": 26 },
    { "t": "00:12:48.960", "confidence": 0.44, "miner_uid": 9 }
  ],
  "miners_queried": 42,
  "latency_ms": 812
}

window is the span the network agrees contains the full action — seek there when you want context, to timestamp when you want the frame.

//06

Indexing long videos

For footage over ~30 minutes, index once and query many times. Indexing runs asynchronously; poll the job or register a webhook.

POST /v1/videos
curl -X POST https://api.chronoseek.org/v1/videos \
  -H "Authorization: Bearer $CHRONOSEEK_KEY" \
  -d '{ "video_url": "https://example.com/full-match.mp4" }'

# → { "video_id": "vid_8f31c2", "status": "indexing" }
# then query it forever:
# POST /v1/seek  { "video_id": "vid_8f31c2", "query": "…" }
//07

Errors

CodeMeaningWhat to do
400Malformed requestCheck required fields; exactly one of video_url / video_id.
401Invalid API keyRegenerate the key from your account page.
404Video not reachableThe URL must be publicly fetchable or a signed link.
422No confident momentThe network found nothing above min_confidence. Rephrase with concrete detail.
429Rate limitedBack off per Retry-After; see limits below.
//08

Rate limits

PlanSeeks / minIndexing hours / day
Developer202
Scale30050
Network partnercustomcustom

Every response carries X-RateLimit-Remaining. Need more? Follow the GitHub organization or run your own validator for priority access.