curl --request POST \
--url https://api.cloudglue.dev/v1/transcribe \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"enable_summary": true,
"enable_speech": true,
"enable_visual_scene_description": true,
"enable_scene_text": true,
"enable_audio_description": true,
"include_metadata": false,
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.cloudglue.dev/v1/transcribe"
payload = {
"url": "<string>",
"enable_summary": True,
"enable_speech": True,
"enable_visual_scene_description": True,
"enable_scene_text": True,
"enable_audio_description": True,
"include_metadata": False,
"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>',
enable_summary: true,
enable_speech: true,
enable_visual_scene_description: true,
enable_scene_text: true,
enable_audio_description: true,
include_metadata: false,
segmentation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.cloudglue.dev/v1/transcribe', 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/transcribe",
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>',
'enable_summary' => true,
'enable_speech' => true,
'enable_visual_scene_description' => true,
'enable_scene_text' => true,
'enable_audio_description' => true,
'include_metadata' => false,
'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/transcribe"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"enable_summary\": true,\n \"enable_speech\": true,\n \"enable_visual_scene_description\": true,\n \"enable_scene_text\": true,\n \"enable_audio_description\": true,\n \"include_metadata\": false,\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/transcribe")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"enable_summary\": true,\n \"enable_speech\": true,\n \"enable_visual_scene_description\": true,\n \"enable_scene_text\": true,\n \"enable_audio_description\": true,\n \"include_metadata\": false,\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/transcribe")
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 \"enable_summary\": true,\n \"enable_speech\": true,\n \"enable_visual_scene_description\": true,\n \"enable_scene_text\": true,\n \"enable_audio_description\": true,\n \"include_metadata\": false,\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"url": "<string>",
"created_at": 123,
"transcribe_config": {
"enable_summary": true,
"enable_speech": true,
"enable_visual_scene_description": true,
"enable_scene_text": true
},
"data": {
"content": "<string>",
"title": "<string>",
"summary": "<string>",
"segment_summary": [
{
"title": "<string>",
"summary": "<string>",
"start_time": 123,
"end_time": 123
}
],
"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>",
"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>"
}{
"error": "<string>"
}{
"error": "<string>"
}Transcribe Video
Creates a new transcription job for video content.
Note: For most use cases, you should use the /describe endpoint instead. This API will be deprecated in the future and only supports speech level understanding.
curl --request POST \
--url https://api.cloudglue.dev/v1/transcribe \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"enable_summary": true,
"enable_speech": true,
"enable_visual_scene_description": true,
"enable_scene_text": true,
"enable_audio_description": true,
"include_metadata": false,
"segmentation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.cloudglue.dev/v1/transcribe"
payload = {
"url": "<string>",
"enable_summary": True,
"enable_speech": True,
"enable_visual_scene_description": True,
"enable_scene_text": True,
"enable_audio_description": True,
"include_metadata": False,
"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>',
enable_summary: true,
enable_speech: true,
enable_visual_scene_description: true,
enable_scene_text: true,
enable_audio_description: true,
include_metadata: false,
segmentation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.cloudglue.dev/v1/transcribe', 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/transcribe",
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>',
'enable_summary' => true,
'enable_speech' => true,
'enable_visual_scene_description' => true,
'enable_scene_text' => true,
'enable_audio_description' => true,
'include_metadata' => false,
'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/transcribe"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"enable_summary\": true,\n \"enable_speech\": true,\n \"enable_visual_scene_description\": true,\n \"enable_scene_text\": true,\n \"enable_audio_description\": true,\n \"include_metadata\": false,\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/transcribe")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"enable_summary\": true,\n \"enable_speech\": true,\n \"enable_visual_scene_description\": true,\n \"enable_scene_text\": true,\n \"enable_audio_description\": true,\n \"include_metadata\": false,\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudglue.dev/v1/transcribe")
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 \"enable_summary\": true,\n \"enable_speech\": true,\n \"enable_visual_scene_description\": true,\n \"enable_scene_text\": true,\n \"enable_audio_description\": true,\n \"include_metadata\": false,\n \"segmentation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"job_id": "<string>",
"url": "<string>",
"created_at": 123,
"transcribe_config": {
"enable_summary": true,
"enable_speech": true,
"enable_visual_scene_description": true,
"enable_scene_text": true
},
"data": {
"content": "<string>",
"title": "<string>",
"summary": "<string>",
"segment_summary": [
{
"title": "<string>",
"summary": "<string>",
"start_time": 123,
"end_time": 123
}
],
"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>",
"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>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Transcription job parameters
Input video URL. Supports URIs of files uploaded to Cloudglue Files endpoint, public YouTube video URLs, public TikTok video URLs, public Loom share URLs, public HTTP URLs, and files which have been granted access to Cloudglue via data connectors.
Note that YouTube videos are currently limited to speech level understanding only. Public TikTok video URLs will be scraped and stored automatically — subject to charges. For files via our Data connectors, see our documentation on data connectors for setup information.
Whether to generate video-level and segment-level (moment-level) summaries and titles
Whether to generate speech transcript
Whether to generate visual scene description
Whether to generate scene text extraction
Whether to generate audio description
Show child attributes
Show child attributes
Include the file's user-defined metadata and source metadata on the returned file object.
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 response
pending, processing, completed, failed, not_applicable The URL of the processed video
Unix timestamp in milliseconds when the job was created
Configuration for rich transcription from videos
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Error message if status is 'failed'
The file this document describes. metadata and source_metadata are only included when include_metadata is true.
Show child attributes
Show child attributes