Skip to main content
Jumper analyzes video, image, and audio files locally on the machine running the backend. The public API lets MAM systems, automation scripts, AI agents, and custom integrations use Jumper’s media analysis engine for semantic visual search, speech transcription, hierarchical summaries, thumbnails, face clustering, watch folders, and exports. Base URL: http://localhost:6699/api/v1

Canonical files

These files are served directly from the docs site and are the best entry points for tools that need to inspect the API.

OpenAPI YAML

Raw OpenAPI 3.0 contract for endpoint discovery, schemas, and generated clients.

OpenAPI JSON

Raw JSON mirror of the OpenAPI contract.

Markdown Reference

Markdown export with examples, workflow notes, and endpoint behavior.

Authentication

Every endpoint except GET /health requires a Jumper Pro license key on every request. The UI and API use the same Pro entitlements; no separate API entitlement is needed. Activating Jumper in the UI does not authenticate your script. Use the X-License-Key header with the raw key. A non-empty JSON license_key takes precedence over the header. The API accepts local requests on the machine running Jumper.
A 403 with error: "Jumper Pro license required" can mean an invalid key. Read the response’s message for the validation reason. A valid non-Pro key can return message: "OK" with 403. Enterprise policy denials return policy_error. For access diagnostics, preserve the HTTP status and complete response body from GET /models/loaded. A successful /health request or Socket.IO connection only establishes connectivity.

Typical workflow

1

Check health

Verify the backend is running with GET /health.
2

Analyze media

Run visual analysis, transcription, optional face clustering, and optional Summary Analysis with POST /analyze. REST analysis runs directly and does not require MCP, an agent, or approval prompts.
3

Track progress

Use the returned task_id with Socket.IO progress events. In Socket.IO terms, emit join with the task_id, then listen for progress.
4

Read summaries

Discover completed analyses with POST /summaries/list or POST /summaries/collections, then read an overview and drill into selected nodes. This step is optional when Summary Analysis was not requested.
5

Load analysis data

Load all analysis data with POST /analysis-data/load, ensure visual data for selected media is loaded with POST /analysis-data/load-for-media, or load transcript-only data with POST /analysis-data/load-transcriptions. Loading selected media can also load the unified visual cache; it does not restrict later searches to those files.
6

Search and retrieve

Search visually, search transcripts, fetch transcriptions, get thumbnails, inspect face clusters, or export clips and transcripts.
Batch many files into one POST /analyze request when possible. Jumper loads ML models per analysis request, so one larger request is much faster than many one-file requests on the same backend.

Endpoint groups

Important behavior notes

Only one analysis task can run at a time per backend instance. A new POST /analyze request first asks the current task to stop. If the previous task is still unwinding, Jumper returns 409. The returned REST task_id identifies a Socket.IO room; there is currently no durable REST status or resume endpoint.
Summary Analysis requires a supported Apple silicon or Windows device, a downloaded Summary model, and complete visual analysis for each file. Include the same path in visual_media_paths to generate the visual dependency in one request. Use the /summaries/* read endpoints instead of depending on private cache files.
POST /search/text, POST /search/image, and POST /search/frame return matches ordered best-first, but they do not return similarity scores. The optional exclude field is a soft ranking signal, not a hard filter.
Use people_filter on POST /search/text to restrict visual search results to named people or cluster IDs. When multiple people are supplied, people_filter_mode defaults to "and", which requires every selected person in the same frame; set it to "or" to match frames containing any selected person.
Visual search matches use frame_idx as a string on the 1-FPS embedding grid, include a base64 JPEG image, and provide scene_start_timestamp, scene_end_timestamp, hash_str, and video_path.
POST /analyze accepts named sample_faces with local image paths or base64 images. Top-level samples supply defaults for all face jobs; a job’s samples override them. Confident matches are named after clustering and before Summary Analysis. See the Markdown reference for limits and examples.
Watch folders support excluded_extensions, excluded_filename_globs, and metadata_filter_request. Glob patterns match the filename only, not the full path. Speech options include channel selection, speaker detection, and Qwen model preference. Saving an enabled folder does not start the service; use POST /watch-folders/service/start.
Use POST /export/transcript to export transcript segments to txt, csv, docx, or pdf. Export rows accept an optional speaker label in their fourth field. Legacy /transcriptions rows use that field for the media path, so drop or replace it before export.

Example requests

Use the generated endpoint reference in the sidebar for request and response schemas.
Last modified on October 11, 2026