Send an MP4 in videos and ask Noul, Choice, or Score questions about what is visible. Video is an input — the answer types stay the same.
In the playground, open a video example or choose Image or video to upload your own clip. Preview it before running the request.
Try the examples
The playground includes two 12-second scenes from Big Buck Bunny: tagging a rabbit and its setting, and checking for a butterfly interaction. Play each clip before comparing its answers. The butterfly is a useful difficult case — a small moving subject can be missed or receive a low probability.
What to send
- One inline MP4 data URL. Remote URLs are not accepted.
- Up to 10 MiB, 30 seconds, and 2,073,600 pixels per frame (1080p).
- An image or a video in one request, not both.
- H.264 video is recommended for browser playback. Audio is not processed.
The complete JSON request can be up to 16 MiB. Base64 adds about one third to the file size — a 10 MiB clip becomes about 13.3 MiB before the rest of the request.
Write questions for sampled frames
blnkd samples up to four frames across the clip. It does not inspect every frame. A brief action can fall between samples, especially in a longer clip. Trim to the scene you want to inspect, and include an unclear option when the evidence may be incomplete.
Useful tasks include tagging a scene, choosing a review queue, and checking a visible condition. Do not use a negative answer as proof that an event never happened between sampled frames. Model probabilities are not a substitute for checking accuracy on your own clips.
Send a request
Set BLNKD_URL to your API base URL and BLNKD_API_KEY to your secret key. This example uses raw HTTP. For the Python SDK, pass videos through extra_body — see SDK video requests.
import base64
import json
import os
import urllib.request
from pathlib import Path
clip = base64.b64encode(Path("clip.mp4").read_bytes()).decode()
body = {
"model": "blink-1.0-experimental",
"state": "Tag only what is visible in this clip.",
"videos": ["data:video/mp4;base64," + clip],
"questions": {
"setting": {
"type": "choice",
"instructions": "Where does the visible scene take place?",
"criteria": {
"outdoors": "Outside in an open environment",
"indoors": "Inside a building",
"mixed": "Both indoor and outdoor scenes",
"unclear": "Not enough visible evidence",
},
},
},
}
request = urllib.request.Request(
os.environ["BLNKD_URL"].rstrip("/") + "/v1/systemone",
data=json.dumps(body).encode(),
headers={
"Content-Type": "application/json",
"User-Agent": "blnkd-python/1.0",
"Authorization": "Bearer " + os.environ["BLNKD_API_KEY"],
},
)
with urllib.request.urlopen(request, timeout=280) as response:
print(response.read().decode())Invalid clips return 422. Requests larger than 16 MiB return 413. For context-length errors, shorten the text state and questions as well as trimming the clip.