curl --request POST \
--url https://api.cloudglue.dev/v1/collections/{collection_id}/youtube \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"metadata": {},
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.cloudglue.dev/v1/collections/{collection_id}/youtube"
payload = {
"url": "<string>",
"metadata": {},
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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>',
metadata: {},
segmentation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.cloudglue.dev/v1/collections/{collection_id}/youtube', 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/collections/{collection_id}/youtube",
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>',
'metadata' => [
],
'segmentation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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/collections/{collection_id}/youtube"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"metadata\": {},\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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/collections/{collection_id}/youtube")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"metadata\": {},\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/collections/{collection_id}/youtube")
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 \"metadata\": {},\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"collection_id": "<string>",
"file_id": "<string>",
"object": "collection_file",
"added_at": 123,
"status": "pending",
"searchable_status": "pending",
"file": {
"id": "<string>",
"status": "pending",
"uri": "<string>",
"bytes": 123,
"created_at": 123,
"filename": "<string>",
"metadata": {},
"media_type": "video",
"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": "video",
"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,
"media_type": "audio",
"upstream_source": "aircall",
"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>",
"scope": "internal",
"confirmed_attendee": true,
"hs_contact_id": "<string>"
}
],
"highlights": [
{}
],
"ai_summary": {
"text": "<string>"
},
"ai_action_items": [
{
"status": "pending",
"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>"
]
}
}
},
"segmentation": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"segmentation_config": {
"strategy": "uniform",
"uniform_config": {
"window_seconds": 60.5,
"hop_seconds": 60.5
},
"shot_detector_config": {
"detector": "adaptive",
"threshold": 123,
"min_seconds": 300.3,
"max_seconds": 300.5,
"fill_gaps": true
},
"manual_config": {
"segments": [
{
"start_time": 123,
"end_time": 123
}
]
},
"narrative_config": {
"prompt": "<string>",
"strategy": "comprehensive",
"number_of_chapters": 2,
"min_chapters": 2,
"max_chapters": 2
},
"keyframe_config": {
"frames_per_segment": 4,
"max_width": 2232
},
"start_time_seconds": 1,
"end_time_seconds": 1
}
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Add YouTube Video to Collection
Add a YouTube video to a collection by URL
curl --request POST \
--url https://api.cloudglue.dev/v1/collections/{collection_id}/youtube \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"metadata": {},
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.cloudglue.dev/v1/collections/{collection_id}/youtube"
payload = {
"url": "<string>",
"metadata": {},
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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>',
metadata: {},
segmentation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.cloudglue.dev/v1/collections/{collection_id}/youtube', 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/collections/{collection_id}/youtube",
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>',
'metadata' => [
],
'segmentation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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/collections/{collection_id}/youtube"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"metadata\": {},\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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/collections/{collection_id}/youtube")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"metadata\": {},\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/collections/{collection_id}/youtube")
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 \"metadata\": {},\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"collection_id": "<string>",
"file_id": "<string>",
"object": "collection_file",
"added_at": 123,
"status": "pending",
"searchable_status": "pending",
"file": {
"id": "<string>",
"status": "pending",
"uri": "<string>",
"bytes": 123,
"created_at": 123,
"filename": "<string>",
"metadata": {},
"media_type": "video",
"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": "video",
"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,
"media_type": "audio",
"upstream_source": "aircall",
"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>",
"scope": "internal",
"confirmed_attendee": true,
"hs_contact_id": "<string>"
}
],
"highlights": [
{}
],
"ai_summary": {
"text": "<string>"
},
"ai_action_items": [
{
"status": "pending",
"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>"
]
}
}
},
"segmentation": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"segmentation_config": {
"strategy": "uniform",
"uniform_config": {
"window_seconds": 60.5,
"hop_seconds": 60.5
},
"shot_detector_config": {
"detector": "adaptive",
"threshold": 123,
"min_seconds": 300.3,
"max_seconds": 300.5,
"fill_gaps": true
},
"manual_config": {
"segments": [
{
"start_time": 123,
"end_time": 123
}
]
},
"narrative_config": {
"prompt": "<string>",
"strategy": "comprehensive",
"number_of_chapters": 2,
"min_chapters": 2,
"max_chapters": 2
},
"keyframe_config": {
"frames_per_segment": 4,
"max_width": 2232
},
"start_time_seconds": 1,
"end_time_seconds": 1
}
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The ID of the collection to add the YouTube video to
Body
YouTube video URL parameters
The URL of the YouTube video to add to the collection.
Note that YouTube videos are currently limited to speech and metadata level understanding, for fully fledge multimodal video understanding please upload a file instead to the Files API and use that object instead as input.
User-provided metadata about the YouTube video
Segmentation job id to use. If not provided will use default to uniform 20s segmentation. Cannot be provided together with segmentation_config.
Configuration for video segmentation. Cannot be provided together with segmentation_id.
Show child attributes
Show child attributes
Response
Successful video addition
ID of the collection
ID of the file
Object type, always 'collection_file'
collection_file Unix timestamp in milliseconds when the file was added to the collection
Overall processing status of the file in this collection
pending, processing, completed, failed, not_applicable Indexing status of the file's search documents in this collection. Only present for media-descriptions, rich-transcripts, metadata, and entities collections. For entities collections it tracks entity indexing: file-level collections index one document per file, segment-level collections one per segment.
pending, processing, completed, failed The file object
Show child attributes
Show child attributes
Segmentation information for this file in the collection. Only present when the file has been segmented.
Show child attributes
Show child attributes