curl --request POST \
--url http://localhost:6699/api/v1/search/transcript \
--header 'Content-Type: application/json' \
--header 'X-License-Key: <api-key>' \
--data '
{
"query": "hello world",
"cache_dir": "<string>",
"max_results": 50,
"media_paths": [
"<string>"
],
"search_all": true,
"speaker": "Anna",
"speaker_name": "Anna",
"metadata_filter_request": {
"scope": {
"mode": "paths",
"media_type": "any",
"media_paths": [
"<string>"
],
"hash_strs": [
"<string>"
],
"expected_count": 123
},
"filters": []
},
"segments_to_time_ranges": {}
}
'import requests
url = "http://localhost:6699/api/v1/search/transcript"
payload = {
"query": "hello world",
"cache_dir": "<string>",
"max_results": 50,
"media_paths": ["<string>"],
"search_all": True,
"speaker": "Anna",
"speaker_name": "Anna",
"metadata_filter_request": {
"scope": {
"mode": "paths",
"media_type": "any",
"media_paths": ["<string>"],
"hash_strs": ["<string>"],
"expected_count": 123
},
"filters": []
},
"segments_to_time_ranges": {}
}
headers = {
"X-License-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-License-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: 'hello world',
cache_dir: '<string>',
max_results: 50,
media_paths: ['<string>'],
search_all: true,
speaker: 'Anna',
speaker_name: 'Anna',
metadata_filter_request: {
scope: {
mode: 'paths',
media_type: 'any',
media_paths: ['<string>'],
hash_strs: ['<string>'],
expected_count: 123
},
filters: []
},
segments_to_time_ranges: {}
})
};
fetch('http://localhost:6699/api/v1/search/transcript', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "6699",
CURLOPT_URL => "http://localhost:6699/api/v1/search/transcript",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => 'hello world',
'cache_dir' => '<string>',
'max_results' => 50,
'media_paths' => [
'<string>'
],
'search_all' => true,
'speaker' => 'Anna',
'speaker_name' => 'Anna',
'metadata_filter_request' => [
'scope' => [
'mode' => 'paths',
'media_type' => 'any',
'media_paths' => [
'<string>'
],
'hash_strs' => [
'<string>'
],
'expected_count' => 123
],
'filters' => [
]
],
'segments_to_time_ranges' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-License-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:6699/api/v1/search/transcript"
payload := strings.NewReader("{\n \"query\": \"hello world\",\n \"cache_dir\": \"<string>\",\n \"max_results\": 50,\n \"media_paths\": [\n \"<string>\"\n ],\n \"search_all\": true,\n \"speaker\": \"Anna\",\n \"speaker_name\": \"Anna\",\n \"metadata_filter_request\": {\n \"scope\": {\n \"mode\": \"paths\",\n \"media_type\": \"any\",\n \"media_paths\": [\n \"<string>\"\n ],\n \"hash_strs\": [\n \"<string>\"\n ],\n \"expected_count\": 123\n },\n \"filters\": []\n },\n \"segments_to_time_ranges\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-License-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:6699/api/v1/search/transcript")
.header("X-License-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"hello world\",\n \"cache_dir\": \"<string>\",\n \"max_results\": 50,\n \"media_paths\": [\n \"<string>\"\n ],\n \"search_all\": true,\n \"speaker\": \"Anna\",\n \"speaker_name\": \"Anna\",\n \"metadata_filter_request\": {\n \"scope\": {\n \"mode\": \"paths\",\n \"media_type\": \"any\",\n \"media_paths\": [\n \"<string>\"\n ],\n \"hash_strs\": [\n \"<string>\"\n ],\n \"expected_count\": 123\n },\n \"filters\": []\n },\n \"segments_to_time_ranges\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:6699/api/v1/search/transcript")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["X-License-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"hello world\",\n \"cache_dir\": \"<string>\",\n \"max_results\": 50,\n \"media_paths\": [\n \"<string>\"\n ],\n \"search_all\": true,\n \"speaker\": \"Anna\",\n \"speaker_name\": \"Anna\",\n \"metadata_filter_request\": {\n \"scope\": {\n \"mode\": \"paths\",\n \"media_type\": \"any\",\n \"media_paths\": [\n \"<string>\"\n ],\n \"hash_strs\": [\n \"<string>\"\n ],\n \"expected_count\": 123\n },\n \"filters\": []\n },\n \"segments_to_time_ranges\": {}\n}"
response = http.request(request)
puts response.read_body{
"matches": [
{
"hash_str": "<string>",
"start_seconds": 123,
"end_seconds": 123,
"text": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"media_path": "<string>",
"media_type": "audio",
"speaker": "SPEAKER_00",
"speaker_name": "Anna",
"speakers": [
"<string>"
]
}
]
}Search transcriptions by text
Searches through loaded speech transcriptions for segments containing the query string.
Uses case-insensitive substring matching. Transcriptions must be loaded into memory first
(via /analysis-data/load or /analysis-data/load-transcriptions).
Optionally filter to transcript segments assigned to a named speaker by passing
speaker or speaker_name. Speaker filtering uses transcript speaker names,
not face-clustering person names.
curl --request POST \
--url http://localhost:6699/api/v1/search/transcript \
--header 'Content-Type: application/json' \
--header 'X-License-Key: <api-key>' \
--data '
{
"query": "hello world",
"cache_dir": "<string>",
"max_results": 50,
"media_paths": [
"<string>"
],
"search_all": true,
"speaker": "Anna",
"speaker_name": "Anna",
"metadata_filter_request": {
"scope": {
"mode": "paths",
"media_type": "any",
"media_paths": [
"<string>"
],
"hash_strs": [
"<string>"
],
"expected_count": 123
},
"filters": []
},
"segments_to_time_ranges": {}
}
'import requests
url = "http://localhost:6699/api/v1/search/transcript"
payload = {
"query": "hello world",
"cache_dir": "<string>",
"max_results": 50,
"media_paths": ["<string>"],
"search_all": True,
"speaker": "Anna",
"speaker_name": "Anna",
"metadata_filter_request": {
"scope": {
"mode": "paths",
"media_type": "any",
"media_paths": ["<string>"],
"hash_strs": ["<string>"],
"expected_count": 123
},
"filters": []
},
"segments_to_time_ranges": {}
}
headers = {
"X-License-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-License-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
query: 'hello world',
cache_dir: '<string>',
max_results: 50,
media_paths: ['<string>'],
search_all: true,
speaker: 'Anna',
speaker_name: 'Anna',
metadata_filter_request: {
scope: {
mode: 'paths',
media_type: 'any',
media_paths: ['<string>'],
hash_strs: ['<string>'],
expected_count: 123
},
filters: []
},
segments_to_time_ranges: {}
})
};
fetch('http://localhost:6699/api/v1/search/transcript', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "6699",
CURLOPT_URL => "http://localhost:6699/api/v1/search/transcript",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => 'hello world',
'cache_dir' => '<string>',
'max_results' => 50,
'media_paths' => [
'<string>'
],
'search_all' => true,
'speaker' => 'Anna',
'speaker_name' => 'Anna',
'metadata_filter_request' => [
'scope' => [
'mode' => 'paths',
'media_type' => 'any',
'media_paths' => [
'<string>'
],
'hash_strs' => [
'<string>'
],
'expected_count' => 123
],
'filters' => [
]
],
'segments_to_time_ranges' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-License-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:6699/api/v1/search/transcript"
payload := strings.NewReader("{\n \"query\": \"hello world\",\n \"cache_dir\": \"<string>\",\n \"max_results\": 50,\n \"media_paths\": [\n \"<string>\"\n ],\n \"search_all\": true,\n \"speaker\": \"Anna\",\n \"speaker_name\": \"Anna\",\n \"metadata_filter_request\": {\n \"scope\": {\n \"mode\": \"paths\",\n \"media_type\": \"any\",\n \"media_paths\": [\n \"<string>\"\n ],\n \"hash_strs\": [\n \"<string>\"\n ],\n \"expected_count\": 123\n },\n \"filters\": []\n },\n \"segments_to_time_ranges\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-License-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:6699/api/v1/search/transcript")
.header("X-License-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"hello world\",\n \"cache_dir\": \"<string>\",\n \"max_results\": 50,\n \"media_paths\": [\n \"<string>\"\n ],\n \"search_all\": true,\n \"speaker\": \"Anna\",\n \"speaker_name\": \"Anna\",\n \"metadata_filter_request\": {\n \"scope\": {\n \"mode\": \"paths\",\n \"media_type\": \"any\",\n \"media_paths\": [\n \"<string>\"\n ],\n \"hash_strs\": [\n \"<string>\"\n ],\n \"expected_count\": 123\n },\n \"filters\": []\n },\n \"segments_to_time_ranges\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:6699/api/v1/search/transcript")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["X-License-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"hello world\",\n \"cache_dir\": \"<string>\",\n \"max_results\": 50,\n \"media_paths\": [\n \"<string>\"\n ],\n \"search_all\": true,\n \"speaker\": \"Anna\",\n \"speaker_name\": \"Anna\",\n \"metadata_filter_request\": {\n \"scope\": {\n \"mode\": \"paths\",\n \"media_type\": \"any\",\n \"media_paths\": [\n \"<string>\"\n ],\n \"hash_strs\": [\n \"<string>\"\n ],\n \"expected_count\": 123\n },\n \"filters\": []\n },\n \"segments_to_time_ranges\": {}\n}"
response = http.request(request)
puts response.read_body{
"matches": [
{
"hash_str": "<string>",
"start_seconds": 123,
"end_seconds": 123,
"text": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"media_path": "<string>",
"media_type": "audio",
"speaker": "SPEAKER_00",
"speaker_name": "Anna",
"speakers": [
"<string>"
]
}
]
}Authorizations
Raw Jumper Pro license key on every authenticated request, without a Bearer prefix
Body
Text to search for (case-insensitive substring match)
"hello world"
Restrict search to these files (ignored if search_all is true)
Search across all loaded transcriptions
Optional named transcript speaker to search within. Matches speaker display names assigned in transcript speaker metadata.
"Anna"
Alias for speaker.
"Anna"
Metadata filters to apply to a search. If scope is omitted, Jumper derives it
from the endpoint's search_all and media_paths values.
Show child attributes
Show child attributes
Media-path or media-hash keys mapped to non-empty half-open
[start_seconds, end_seconds) ranges, or lists of ranges. Each end
must exceed its start. Keys must be inside the selected media scope;
global searches accept loaded media hashes. Only overlapping transcript
segments from these media are considered, before query matching and max_results.
Show child attributes
Show child attributes
Response
Matching transcript segments
Show child attributes
Show child attributes
Was this page helpful?

