curl --request PATCH \
--url https://api.cloudglue.dev/v1/describe/{job_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"use_in_default_index": true
}
'import requests
url = "https://api.cloudglue.dev/v1/describe/{job_id}"
payload = { "use_in_default_index": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({use_in_default_index: true})
};
fetch('https://api.cloudglue.dev/v1/describe/{job_id}', 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/describe/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'use_in_default_index' => true
]),
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/describe/{job_id}"
payload := strings.NewReader("{\n \"use_in_default_index\": true\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.cloudglue.dev/v1/describe/{job_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"use_in_default_index\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/describe/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"use_in_default_index\": true\n}"
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"url": "<string>",
"duration_seconds": 123,
"thumbnail_url": "<string>",
"created_at": 123,
"describe_config": {
"enable_summary": true,
"enable_speech": true,
"enable_visual_scene_description": true,
"enable_scene_text": true,
"enable_audio_description": true,
"participants": [
{
"name": "<string>",
"scope": "<string>"
}
]
},
"use_in_default_index": true,
"data": {
"content": "<string>",
"title": "<string>",
"summary": "<string>",
"segment_summary": [
{
"title": "<string>",
"summary": "<string>",
"start_time": 123,
"end_time": 123,
"thumbnail_url": "<string>"
}
],
"visual_scene_description": [
{
"text": "<string>",
"start_time": 123,
"end_time": 123
}
],
"scene_text": [
{
"text": "<string>",
"start_time": 123,
"end_time": 123
}
],
"speech": [
{
"speaker": "<string>",
"text": "<string>",
"start_time": 123,
"end_time": 123,
"words": [
{
"word": "<string>",
"start_time": 123,
"end_time": 123
}
]
}
],
"audio_description": [
{
"text": "<string>",
"start_time": 123,
"end_time": 123
}
]
},
"error": "<string>",
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chapters": [
{
"index": 1,
"start_time": 1,
"end_time": 1,
"description": "<string>"
}
],
"shots": [
{
"index": 1,
"start_time": 1,
"end_time": 1
}
],
"total_chapters": 1,
"total_shots": 1,
"file": {
"id": "<string>",
"uri": "<string>",
"bytes": 123,
"created_at": 123,
"filename": "<string>",
"metadata": {},
"media_info": {
"duration_seconds": 123,
"width": 123,
"height": 123,
"sample_rate": 123,
"channels": 123,
"bitrate": 123,
"format": "<string>",
"has_audio": true
},
"video_info": {
"duration_seconds": 123,
"height": 123,
"width": 123,
"format": "<string>",
"has_audio": true
},
"thumbnail_url": "<string>",
"source_metadata": {
"source_type": "grain",
"grain_recording_id": "<string>",
"title": "<string>",
"start_datetime": "2023-11-07T05:31:56Z",
"end_datetime": "2023-11-07T05:31:56Z",
"duration_ms": 123,
"grain_url": "<string>",
"thumbnail_url": "<string>",
"tags": [
"<string>"
],
"teams": [
{
"id": "<string>",
"name": "<string>"
}
],
"meeting_type": {
"id": "<string>",
"name": "<string>",
"scope": "<string>"
},
"participants": [
{
"id": "<string>",
"name": "<string>",
"email": "<string>",
"confirmed_attendee": true,
"hs_contact_id": "<string>"
}
],
"highlights": [
{}
],
"ai_summary": {
"text": "<string>"
},
"ai_action_items": [
{
"timestamp_ms": 123,
"text": "<string>",
"assignee": {
"id": "<string>",
"name": "<string>",
"user_id": "<string>"
}
}
],
"ai_template_sections": [
{}
],
"calendar_event": {
"ical_uid": "<string>"
},
"hubspot": {
"hubspot_company_ids": [
"<string>"
],
"hubspot_deal_ids": [
"<string>"
]
}
}
}
}{
"error": "<string>"
}{
"error": "<string>"
}Update Describe Job
Toggle the use_in_default_index flag on an existing describe job. Enabling this makes the file searchable by default in the deep search and response APIs.
curl --request PATCH \
--url https://api.cloudglue.dev/v1/describe/{job_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"use_in_default_index": true
}
'import requests
url = "https://api.cloudglue.dev/v1/describe/{job_id}"
payload = { "use_in_default_index": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({use_in_default_index: true})
};
fetch('https://api.cloudglue.dev/v1/describe/{job_id}', 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/describe/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'use_in_default_index' => true
]),
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/describe/{job_id}"
payload := strings.NewReader("{\n \"use_in_default_index\": true\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.cloudglue.dev/v1/describe/{job_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"use_in_default_index\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/describe/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"use_in_default_index\": true\n}"
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"url": "<string>",
"duration_seconds": 123,
"thumbnail_url": "<string>",
"created_at": 123,
"describe_config": {
"enable_summary": true,
"enable_speech": true,
"enable_visual_scene_description": true,
"enable_scene_text": true,
"enable_audio_description": true,
"participants": [
{
"name": "<string>",
"scope": "<string>"
}
]
},
"use_in_default_index": true,
"data": {
"content": "<string>",
"title": "<string>",
"summary": "<string>",
"segment_summary": [
{
"title": "<string>",
"summary": "<string>",
"start_time": 123,
"end_time": 123,
"thumbnail_url": "<string>"
}
],
"visual_scene_description": [
{
"text": "<string>",
"start_time": 123,
"end_time": 123
}
],
"scene_text": [
{
"text": "<string>",
"start_time": 123,
"end_time": 123
}
],
"speech": [
{
"speaker": "<string>",
"text": "<string>",
"start_time": 123,
"end_time": 123,
"words": [
{
"word": "<string>",
"start_time": 123,
"end_time": 123
}
]
}
],
"audio_description": [
{
"text": "<string>",
"start_time": 123,
"end_time": 123
}
]
},
"error": "<string>",
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chapters": [
{
"index": 1,
"start_time": 1,
"end_time": 1,
"description": "<string>"
}
],
"shots": [
{
"index": 1,
"start_time": 1,
"end_time": 1
}
],
"total_chapters": 1,
"total_shots": 1,
"file": {
"id": "<string>",
"uri": "<string>",
"bytes": 123,
"created_at": 123,
"filename": "<string>",
"metadata": {},
"media_info": {
"duration_seconds": 123,
"width": 123,
"height": 123,
"sample_rate": 123,
"channels": 123,
"bitrate": 123,
"format": "<string>",
"has_audio": true
},
"video_info": {
"duration_seconds": 123,
"height": 123,
"width": 123,
"format": "<string>",
"has_audio": true
},
"thumbnail_url": "<string>",
"source_metadata": {
"source_type": "grain",
"grain_recording_id": "<string>",
"title": "<string>",
"start_datetime": "2023-11-07T05:31:56Z",
"end_datetime": "2023-11-07T05:31:56Z",
"duration_ms": 123,
"grain_url": "<string>",
"thumbnail_url": "<string>",
"tags": [
"<string>"
],
"teams": [
{
"id": "<string>",
"name": "<string>"
}
],
"meeting_type": {
"id": "<string>",
"name": "<string>",
"scope": "<string>"
},
"participants": [
{
"id": "<string>",
"name": "<string>",
"email": "<string>",
"confirmed_attendee": true,
"hs_contact_id": "<string>"
}
],
"highlights": [
{}
],
"ai_summary": {
"text": "<string>"
},
"ai_action_items": [
{
"timestamp_ms": 123,
"text": "<string>",
"assignee": {
"id": "<string>",
"name": "<string>",
"user_id": "<string>"
}
}
],
"ai_template_sections": [
{}
],
"calendar_event": {
"ical_uid": "<string>"
},
"hubspot": {
"hubspot_company_ids": [
"<string>"
],
"hubspot_deal_ids": [
"<string>"
]
}
}
}
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The unique identifier of the description job
Body
When true, the video's search documents will be added to the account's default index. When false, existing default index search documents are removed.
Response
Successful response
pending, processing, completed, failed, not_applicable The URL of the processed video
Duration of the video in seconds
URL of the file-level thumbnail for the video. Only present when include_thumbnails=true.
Unix timestamp in milliseconds when the job was created
Configuration for media description from videos
Show child attributes
Show child attributes
Whether this describe job's search documents are included in the default index.
Show child attributes
Show child attributes
Error message if status is 'failed'
The ID of the segmentation job if the describe was run with a segmentation
Array of narrative chapters (only present when include_chapters=true and segmentation strategy is 'narrative')
Show child attributes
Show child attributes
Array of shot boundaries (only present when include_shots=true and segmentation strategy is 'shot-detector')
Show child attributes
Show child attributes
Total number of chapters (only present when include_chapters=true and segmentation strategy is 'narrative')
x >= 0Total number of shots (only present when include_shots=true and segmentation strategy is 'shot-detector')
x >= 0The file this document describes. metadata and source_metadata are only included when include_metadata is true.
Show child attributes
Show child attributes