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.

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.

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…

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"
  }'

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.

The response

The primary result is first; candidates holds 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.

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": "…" }

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.

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.

ChronoSeek — Find the Exact Moment in Any Video