Video search, indexing, and exports for your own product
Use VidScanner from your backend to upload footage, index visual and spoken evidence, run natural-language searches, export clips, and read usage against your plan limits.
Authentication
API requests require a server-side bearer token created from the authenticated API console. Browser session JWTs are rejected on/v1/api/*routes.
Authorization: Bearer vsk_live_YOUR_API_KEYDirect uploads
Signed upload URLs keep large files out of your app server.
Multimodal search
Query visual evidence, spoken transcript, or combined matches.
Usage-aware
Plan limits, overages, and rate limits apply consistently.
Core endpoints
The public API lives under /v1/api and uses API-key auth only.
/v1/api/videos/upload-urlCreate a signed URL for direct-to-storage video upload.
/v1/api/videosFinalize an uploaded video and queue indexing/transcription.
/v1/api/videosList videos in the authenticated account.
/v1/api/searchSearch videos by visual query, transcript query, or both.
/v1/api/exportsQueue a downloadable clip export from a source video.
/v1/api/usageReturn current plan usage and API rate-limit context.
Rate limits and plan capacity
API keys inherit the authenticated account plan. Rate limits are enforced per API key in fixed one-minute windows, and keys that exceed their plan receive 429 responses until the next window. Uploads, indexing, storage, exports, and overages use the same limits shown in the dashboard.
Search example
Combined search returns evidence where the visual query and audio query align in time.
curl -X POST https://vidscanner.com/v1/api/search \
-H "Authorization: Bearer vsk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"search_mode": "combined",
"video_query": "a red backpack entering the lobby",
"audio_query": "visitor badge"
}'Upload example
After uploading bytes to the signed URL, finalize the video to queue indexing.
curl -X POST https://vidscanner.com/v1/api/videos/upload-url \
-H "Authorization: Bearer vsk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filename": "inspection.mp4",
"content_type": "video/mp4",
"size_bytes": 10485760
}'