curl --request POST \
--url https://api.cloudglue.dev/v1/find-moments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"criterion": {
"name": "<string>",
"instructions": "<string>",
"moment_schema": {},
"finding_schema": {},
"anchors": {}
},
"describe_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signals_required": [
"speech"
],
"boundary_policy": "sentence",
"speaker_filter": {
"include": [
"<string>"
],
"exclude": [
"<string>"
]
},
"min_duration_seconds": 5,
"max_duration_seconds": 300,
"cache_policy": "reuse"
}
'import requests
url = "https://api.cloudglue.dev/v1/find-moments"
payload = {
"url": "<string>",
"criterion": {
"name": "<string>",
"instructions": "<string>",
"moment_schema": {},
"finding_schema": {},
"anchors": {}
},
"describe_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signals_required": ["speech"],
"boundary_policy": "sentence",
"speaker_filter": {
"include": ["<string>"],
"exclude": ["<string>"]
},
"min_duration_seconds": 5,
"max_duration_seconds": 300,
"cache_policy": "reuse"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
criterion: {
name: '<string>',
instructions: '<string>',
moment_schema: {},
finding_schema: {},
anchors: {}
},
describe_job_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
signals_required: ['speech'],
boundary_policy: 'sentence',
speaker_filter: {include: ['<string>'], exclude: ['<string>']},
min_duration_seconds: 5,
max_duration_seconds: 300,
cache_policy: 'reuse'
})
};
fetch('https://api.cloudglue.dev/v1/find-moments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cloudglue.dev/v1/find-moments",
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([
'url' => '<string>',
'criterion' => [
'name' => '<string>',
'instructions' => '<string>',
'moment_schema' => [
],
'finding_schema' => [
],
'anchors' => [
]
],
'describe_job_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'signals_required' => [
'speech'
],
'boundary_policy' => 'sentence',
'speaker_filter' => [
'include' => [
'<string>'
],
'exclude' => [
'<string>'
]
],
'min_duration_seconds' => 5,
'max_duration_seconds' => 300,
'cache_policy' => 'reuse'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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 := "https://api.cloudglue.dev/v1/find-moments"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"criterion\": {\n \"name\": \"<string>\",\n \"instructions\": \"<string>\",\n \"moment_schema\": {},\n \"finding_schema\": {},\n \"anchors\": {}\n },\n \"describe_job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signals_required\": [\n \"speech\"\n ],\n \"boundary_policy\": \"sentence\",\n \"speaker_filter\": {\n \"include\": [\n \"<string>\"\n ],\n \"exclude\": [\n \"<string>\"\n ]\n },\n \"min_duration_seconds\": 5,\n \"max_duration_seconds\": 300,\n \"cache_policy\": \"reuse\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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("https://api.cloudglue.dev/v1/find-moments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"criterion\": {\n \"name\": \"<string>\",\n \"instructions\": \"<string>\",\n \"moment_schema\": {},\n \"finding_schema\": {},\n \"anchors\": {}\n },\n \"describe_job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signals_required\": [\n \"speech\"\n ],\n \"boundary_policy\": \"sentence\",\n \"speaker_filter\": {\n \"include\": [\n \"<string>\"\n ],\n \"exclude\": [\n \"<string>\"\n ]\n },\n \"min_duration_seconds\": 5,\n \"max_duration_seconds\": 300,\n \"cache_policy\": \"reuse\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/find-moments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"criterion\": {\n \"name\": \"<string>\",\n \"instructions\": \"<string>\",\n \"moment_schema\": {},\n \"finding_schema\": {},\n \"anchors\": {}\n },\n \"describe_job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signals_required\": [\n \"speech\"\n ],\n \"boundary_policy\": \"sentence\",\n \"speaker_filter\": {\n \"include\": [\n \"<string>\"\n ],\n \"exclude\": [\n \"<string>\"\n ]\n },\n \"min_duration_seconds\": 5,\n \"max_duration_seconds\": 300,\n \"cache_policy\": \"reuse\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"created_at": 123,
"url": "<string>",
"find_moments_config": {
"criterion": {
"name": "<string>",
"instructions": "<string>",
"moment_schema": {},
"finding_schema": {},
"anchors": {},
"scoring": {
"key": "<string>",
"min": 123,
"max": 123,
"higher_is_better": true,
"description": "<string>"
}
},
"criterion_hash": "<string>",
"describe_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signals_required": [
"<string>"
],
"boundary_policy": "sentence",
"speaker_filter": {},
"min_duration_seconds": 123,
"max_duration_seconds": 123,
"cache_policy": "reuse",
"engine_version": 123
},
"moments": [
{
"moment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"start_time": 123,
"end_time": 123,
"title": "<string>",
"reason": "<string>",
"rank_score": 0.5,
"anchors": {},
"speakers": [
"<string>"
],
"criterion_score": {
"key": "<string>",
"value": 123,
"min": 123,
"max": 123
},
"properties": {},
"evidence": {
"signals": [
"<string>"
]
}
}
],
"findings": [
{
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "absence",
"properties": {}
}
],
"total_moments": 123,
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Find Moments
Runs exhaustive moment discovery for one criterion over one video. Every accepted moment is persisted; ranking and truncation are read-time parameters on GET. Reuses a compatible describe or creates one internally - a missing describe is never an error.
curl --request POST \
--url https://api.cloudglue.dev/v1/find-moments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"criterion": {
"name": "<string>",
"instructions": "<string>",
"moment_schema": {},
"finding_schema": {},
"anchors": {}
},
"describe_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signals_required": [
"speech"
],
"boundary_policy": "sentence",
"speaker_filter": {
"include": [
"<string>"
],
"exclude": [
"<string>"
]
},
"min_duration_seconds": 5,
"max_duration_seconds": 300,
"cache_policy": "reuse"
}
'import requests
url = "https://api.cloudglue.dev/v1/find-moments"
payload = {
"url": "<string>",
"criterion": {
"name": "<string>",
"instructions": "<string>",
"moment_schema": {},
"finding_schema": {},
"anchors": {}
},
"describe_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signals_required": ["speech"],
"boundary_policy": "sentence",
"speaker_filter": {
"include": ["<string>"],
"exclude": ["<string>"]
},
"min_duration_seconds": 5,
"max_duration_seconds": 300,
"cache_policy": "reuse"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
criterion: {
name: '<string>',
instructions: '<string>',
moment_schema: {},
finding_schema: {},
anchors: {}
},
describe_job_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
signals_required: ['speech'],
boundary_policy: 'sentence',
speaker_filter: {include: ['<string>'], exclude: ['<string>']},
min_duration_seconds: 5,
max_duration_seconds: 300,
cache_policy: 'reuse'
})
};
fetch('https://api.cloudglue.dev/v1/find-moments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cloudglue.dev/v1/find-moments",
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([
'url' => '<string>',
'criterion' => [
'name' => '<string>',
'instructions' => '<string>',
'moment_schema' => [
],
'finding_schema' => [
],
'anchors' => [
]
],
'describe_job_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'signals_required' => [
'speech'
],
'boundary_policy' => 'sentence',
'speaker_filter' => [
'include' => [
'<string>'
],
'exclude' => [
'<string>'
]
],
'min_duration_seconds' => 5,
'max_duration_seconds' => 300,
'cache_policy' => 'reuse'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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 := "https://api.cloudglue.dev/v1/find-moments"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"criterion\": {\n \"name\": \"<string>\",\n \"instructions\": \"<string>\",\n \"moment_schema\": {},\n \"finding_schema\": {},\n \"anchors\": {}\n },\n \"describe_job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signals_required\": [\n \"speech\"\n ],\n \"boundary_policy\": \"sentence\",\n \"speaker_filter\": {\n \"include\": [\n \"<string>\"\n ],\n \"exclude\": [\n \"<string>\"\n ]\n },\n \"min_duration_seconds\": 5,\n \"max_duration_seconds\": 300,\n \"cache_policy\": \"reuse\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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("https://api.cloudglue.dev/v1/find-moments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"criterion\": {\n \"name\": \"<string>\",\n \"instructions\": \"<string>\",\n \"moment_schema\": {},\n \"finding_schema\": {},\n \"anchors\": {}\n },\n \"describe_job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signals_required\": [\n \"speech\"\n ],\n \"boundary_policy\": \"sentence\",\n \"speaker_filter\": {\n \"include\": [\n \"<string>\"\n ],\n \"exclude\": [\n \"<string>\"\n ]\n },\n \"min_duration_seconds\": 5,\n \"max_duration_seconds\": 300,\n \"cache_policy\": \"reuse\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/find-moments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"criterion\": {\n \"name\": \"<string>\",\n \"instructions\": \"<string>\",\n \"moment_schema\": {},\n \"finding_schema\": {},\n \"anchors\": {}\n },\n \"describe_job_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signals_required\": [\n \"speech\"\n ],\n \"boundary_policy\": \"sentence\",\n \"speaker_filter\": {\n \"include\": [\n \"<string>\"\n ],\n \"exclude\": [\n \"<string>\"\n ]\n },\n \"min_duration_seconds\": 5,\n \"max_duration_seconds\": 300,\n \"cache_policy\": \"reuse\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"created_at": 123,
"url": "<string>",
"find_moments_config": {
"criterion": {
"name": "<string>",
"instructions": "<string>",
"moment_schema": {},
"finding_schema": {},
"anchors": {},
"scoring": {
"key": "<string>",
"min": 123,
"max": 123,
"higher_is_better": true,
"description": "<string>"
}
},
"criterion_hash": "<string>",
"describe_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signals_required": [
"<string>"
],
"boundary_policy": "sentence",
"speaker_filter": {},
"min_duration_seconds": 123,
"max_duration_seconds": 123,
"cache_policy": "reuse",
"engine_version": 123
},
"moments": [
{
"moment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"start_time": 123,
"end_time": 123,
"title": "<string>",
"reason": "<string>",
"rank_score": 0.5,
"anchors": {},
"speakers": [
"<string>"
],
"criterion_score": {
"key": "<string>",
"value": 123,
"min": 123,
"max": 123
},
"properties": {},
"evidence": {
"signals": [
"<string>"
]
}
}
],
"findings": [
{
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "absence",
"properties": {}
}
],
"total_moments": 123,
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Find-moments run parameters
cloudglue://files/ or an ingestible URL (same resolution rules as describe/extract).
An inline criterion: rubric instructions plus typed output declarations. Snapshotted and hashed onto the run.
Show child attributes
Show child attributes
Optional pin to a specific describe. It must exist for the file and its config must cover signals_required.
1speech, visual_scene_description, scene_text, audio_description sentence, tight, loose Show child attributes
Show child attributes
x > 0x > 0reuse, refresh Response
The created run, or an existing matching run at cost 0 (cache hit).
pending, processing, completed, failed, cancelled Unix timestamp in milliseconds when the run was created
Echo of the request as the run resolved it, plus criterion_hash, the resolved describe_job_id, and the engine version. Defaults the request omitted are filled in here.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Full accepted count, independent of the limit read parameter.
Curated failure message, present on failed runs.