Score a transcript and return the moments worth cutting — chosen on meaning, not clock position.
curl --request POST \
--url https://api.sigmora.org/v1/video/moments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"projectId": "<string>",
"transcript": [
{
"id": "<string>",
"start": 1,
"end": 1,
"text": "<string>"
}
],
"assetId": "<string>",
"channel": "<string>",
"niche": "<string>",
"thresholds": {
"standalone": 0.5,
"hook": 0.5,
"payoff": 0.5
}
}
'import requests
url = "https://api.sigmora.org/v1/video/moments"
payload = {
"projectId": "<string>",
"transcript": [
{
"id": "<string>",
"start": 1,
"end": 1,
"text": "<string>"
}
],
"assetId": "<string>",
"channel": "<string>",
"niche": "<string>",
"thresholds": {
"standalone": 0.5,
"hook": 0.5,
"payoff": 0.5
}
}
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({
projectId: '<string>',
transcript: [{id: '<string>', start: 1, end: 1, text: '<string>'}],
assetId: '<string>',
channel: '<string>',
niche: '<string>',
thresholds: {standalone: 0.5, hook: 0.5, payoff: 0.5}
})
};
fetch('https://api.sigmora.org/v1/video/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.sigmora.org/v1/video/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([
'projectId' => '<string>',
'transcript' => [
[
'id' => '<string>',
'start' => 1,
'end' => 1,
'text' => '<string>'
]
],
'assetId' => '<string>',
'channel' => '<string>',
'niche' => '<string>',
'thresholds' => [
'standalone' => 0.5,
'hook' => 0.5,
'payoff' => 0.5
]
]),
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.sigmora.org/v1/video/moments"
payload := strings.NewReader("{\n \"projectId\": \"<string>\",\n \"transcript\": [\n {\n \"id\": \"<string>\",\n \"start\": 1,\n \"end\": 1,\n \"text\": \"<string>\"\n }\n ],\n \"assetId\": \"<string>\",\n \"channel\": \"<string>\",\n \"niche\": \"<string>\",\n \"thresholds\": {\n \"standalone\": 0.5,\n \"hook\": 0.5,\n \"payoff\": 0.5\n }\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.sigmora.org/v1/video/moments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"<string>\",\n \"transcript\": [\n {\n \"id\": \"<string>\",\n \"start\": 1,\n \"end\": 1,\n \"text\": \"<string>\"\n }\n ],\n \"assetId\": \"<string>\",\n \"channel\": \"<string>\",\n \"niche\": \"<string>\",\n \"thresholds\": {\n \"standalone\": 0.5,\n \"hook\": 0.5,\n \"payoff\": 0.5\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmora.org/v1/video/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 \"projectId\": \"<string>\",\n \"transcript\": [\n {\n \"id\": \"<string>\",\n \"start\": 1,\n \"end\": 1,\n \"text\": \"<string>\"\n }\n ],\n \"assetId\": \"<string>\",\n \"channel\": \"<string>\",\n \"niche\": \"<string>\",\n \"thresholds\": {\n \"standalone\": 0.5,\n \"hook\": 0.5,\n \"payoff\": 0.5\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"projectId": "<string>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}video
Score a transcript and return the moments worth cutting — chosen on meaning, not clock position.
Score a transcript and return the moments worth cutting — chosen on meaning, not clock position.
6 credits per transcript-minute.
POST
/
v1
/
video
/
moments
Score a transcript and return the moments worth cutting — chosen on meaning, not clock position.
curl --request POST \
--url https://api.sigmora.org/v1/video/moments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"projectId": "<string>",
"transcript": [
{
"id": "<string>",
"start": 1,
"end": 1,
"text": "<string>"
}
],
"assetId": "<string>",
"channel": "<string>",
"niche": "<string>",
"thresholds": {
"standalone": 0.5,
"hook": 0.5,
"payoff": 0.5
}
}
'import requests
url = "https://api.sigmora.org/v1/video/moments"
payload = {
"projectId": "<string>",
"transcript": [
{
"id": "<string>",
"start": 1,
"end": 1,
"text": "<string>"
}
],
"assetId": "<string>",
"channel": "<string>",
"niche": "<string>",
"thresholds": {
"standalone": 0.5,
"hook": 0.5,
"payoff": 0.5
}
}
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({
projectId: '<string>',
transcript: [{id: '<string>', start: 1, end: 1, text: '<string>'}],
assetId: '<string>',
channel: '<string>',
niche: '<string>',
thresholds: {standalone: 0.5, hook: 0.5, payoff: 0.5}
})
};
fetch('https://api.sigmora.org/v1/video/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.sigmora.org/v1/video/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([
'projectId' => '<string>',
'transcript' => [
[
'id' => '<string>',
'start' => 1,
'end' => 1,
'text' => '<string>'
]
],
'assetId' => '<string>',
'channel' => '<string>',
'niche' => '<string>',
'thresholds' => [
'standalone' => 0.5,
'hook' => 0.5,
'payoff' => 0.5
]
]),
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.sigmora.org/v1/video/moments"
payload := strings.NewReader("{\n \"projectId\": \"<string>\",\n \"transcript\": [\n {\n \"id\": \"<string>\",\n \"start\": 1,\n \"end\": 1,\n \"text\": \"<string>\"\n }\n ],\n \"assetId\": \"<string>\",\n \"channel\": \"<string>\",\n \"niche\": \"<string>\",\n \"thresholds\": {\n \"standalone\": 0.5,\n \"hook\": 0.5,\n \"payoff\": 0.5\n }\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.sigmora.org/v1/video/moments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"<string>\",\n \"transcript\": [\n {\n \"id\": \"<string>\",\n \"start\": 1,\n \"end\": 1,\n \"text\": \"<string>\"\n }\n ],\n \"assetId\": \"<string>\",\n \"channel\": \"<string>\",\n \"niche\": \"<string>\",\n \"thresholds\": {\n \"standalone\": 0.5,\n \"hook\": 0.5,\n \"payoff\": 0.5\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sigmora.org/v1/video/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 \"projectId\": \"<string>\",\n \"transcript\": [\n {\n \"id\": \"<string>\",\n \"start\": 1,\n \"end\": 1,\n \"text\": \"<string>\"\n }\n ],\n \"assetId\": \"<string>\",\n \"channel\": \"<string>\",\n \"niche\": \"<string>\",\n \"thresholds\": {\n \"standalone\": 0.5,\n \"hook\": 0.5,\n \"payoff\": 0.5\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"projectId": "<string>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}{
"success": false,
"error": "<string>",
"details": "<unknown>"
}Authorizations
A workspace API key (sk_live_...), minted from workspace settings.
Body
application/json
The project to file this work under. Required — create one with POST /v1/projects. A project this workspace does not own answers not_found; the work is never silently filed somewhere else.
Maximum string length:
200The segments to score. Send exactly one of transcript or assetId.
Required array length:
1 - 20000 elementsShow child attributes
Show child attributes
Score a transcript this workspace has already had transcribed instead of sending one. Send exactly one of transcript or assetId. An asset in another workspace is reported as not found.
Required string length:
1 - 200Required string length:
1 - 120Required string length:
1 - 200Show child attributes
Show child attributes
Send raw footage and a brief; receive an edited cut plus shorts.Synthesise one original script from up to ten reference videos or transcripts.
⌘I