curl --request POST \
--url https://api.lumisreach.com/api/v1/videos/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"template": "talking_avatar",
"format": "vertical",
"target_duration_seconds": 30,
"avatar_layout": "center",
"background_mode": "static",
"preset": "<string>",
"title": "<string>",
"brief": "<string>",
"source_url": "<string>",
"source_text": "<string>",
"source_image_urls": [
"<string>"
],
"source_video_urls": [
"<string>"
],
"source_image_kinds": [],
"source_video_kinds": [],
"script": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"replica_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"interview_cast": [
{
"replica_id": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"b_roll": true,
"b_roll_sources": [],
"b_roll_images": [
4503599627370495
],
"b_roll_opening": true,
"b_roll_end_scene": true,
"b_roll_end_scene_text": "<string>",
"b_roll_end_scene_voice_id": "<string>",
"subtitle_emojis": true,
"video_model": "<string>",
"slide_count": 6,
"image_model": "<string>",
"on_screen_caption": "<string>",
"footage_narrated": true,
"meme_clip_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"demo_focus": "<string>"
}
'import requests
url = "https://api.lumisreach.com/api/v1/videos/quote"
payload = {
"template": "talking_avatar",
"format": "vertical",
"target_duration_seconds": 30,
"avatar_layout": "center",
"background_mode": "static",
"preset": "<string>",
"title": "<string>",
"brief": "<string>",
"source_url": "<string>",
"source_text": "<string>",
"source_image_urls": ["<string>"],
"source_video_urls": ["<string>"],
"source_image_kinds": [],
"source_video_kinds": [],
"script": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"replica_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"interview_cast": [
{
"replica_id": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"b_roll": True,
"b_roll_sources": [],
"b_roll_images": [4503599627370495],
"b_roll_opening": True,
"b_roll_end_scene": True,
"b_roll_end_scene_text": "<string>",
"b_roll_end_scene_voice_id": "<string>",
"subtitle_emojis": True,
"video_model": "<string>",
"slide_count": 6,
"image_model": "<string>",
"on_screen_caption": "<string>",
"footage_narrated": True,
"meme_clip_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"demo_focus": "<string>"
}
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({
template: 'talking_avatar',
format: 'vertical',
target_duration_seconds: 30,
avatar_layout: 'center',
background_mode: 'static',
preset: '<string>',
title: '<string>',
brief: '<string>',
source_url: '<string>',
source_text: '<string>',
source_image_urls: ['<string>'],
source_video_urls: ['<string>'],
source_image_kinds: [],
source_video_kinds: [],
script: '<string>',
avatar_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
replica_id: '<string>',
voice_id: '<string>',
voice_model: '<string>',
interview_cast: [{replica_id: '<string>', avatar_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
b_roll: true,
b_roll_sources: [],
b_roll_images: [4503599627370495],
b_roll_opening: true,
b_roll_end_scene: true,
b_roll_end_scene_text: '<string>',
b_roll_end_scene_voice_id: '<string>',
subtitle_emojis: true,
video_model: '<string>',
slide_count: 6,
image_model: '<string>',
on_screen_caption: '<string>',
footage_narrated: true,
meme_clip_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
demo_focus: '<string>'
})
};
fetch('https://api.lumisreach.com/api/v1/videos/quote', 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.lumisreach.com/api/v1/videos/quote",
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([
'template' => 'talking_avatar',
'format' => 'vertical',
'target_duration_seconds' => 30,
'avatar_layout' => 'center',
'background_mode' => 'static',
'preset' => '<string>',
'title' => '<string>',
'brief' => '<string>',
'source_url' => '<string>',
'source_text' => '<string>',
'source_image_urls' => [
'<string>'
],
'source_video_urls' => [
'<string>'
],
'source_image_kinds' => [
],
'source_video_kinds' => [
],
'script' => '<string>',
'avatar_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'replica_id' => '<string>',
'voice_id' => '<string>',
'voice_model' => '<string>',
'interview_cast' => [
[
'replica_id' => '<string>',
'avatar_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'b_roll' => true,
'b_roll_sources' => [
],
'b_roll_images' => [
4503599627370495
],
'b_roll_opening' => true,
'b_roll_end_scene' => true,
'b_roll_end_scene_text' => '<string>',
'b_roll_end_scene_voice_id' => '<string>',
'subtitle_emojis' => true,
'video_model' => '<string>',
'slide_count' => 6,
'image_model' => '<string>',
'on_screen_caption' => '<string>',
'footage_narrated' => true,
'meme_clip_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'demo_focus' => '<string>'
]),
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.lumisreach.com/api/v1/videos/quote"
payload := strings.NewReader("{\n \"template\": \"talking_avatar\",\n \"format\": \"vertical\",\n \"target_duration_seconds\": 30,\n \"avatar_layout\": \"center\",\n \"background_mode\": \"static\",\n \"preset\": \"<string>\",\n \"title\": \"<string>\",\n \"brief\": \"<string>\",\n \"source_url\": \"<string>\",\n \"source_text\": \"<string>\",\n \"source_image_urls\": [\n \"<string>\"\n ],\n \"source_video_urls\": [\n \"<string>\"\n ],\n \"source_image_kinds\": [],\n \"source_video_kinds\": [],\n \"script\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"replica_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"interview_cast\": [\n {\n \"replica_id\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"b_roll\": true,\n \"b_roll_sources\": [],\n \"b_roll_images\": [\n 4503599627370495\n ],\n \"b_roll_opening\": true,\n \"b_roll_end_scene\": true,\n \"b_roll_end_scene_text\": \"<string>\",\n \"b_roll_end_scene_voice_id\": \"<string>\",\n \"subtitle_emojis\": true,\n \"video_model\": \"<string>\",\n \"slide_count\": 6,\n \"image_model\": \"<string>\",\n \"on_screen_caption\": \"<string>\",\n \"footage_narrated\": true,\n \"meme_clip_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"demo_focus\": \"<string>\"\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.lumisreach.com/api/v1/videos/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"template\": \"talking_avatar\",\n \"format\": \"vertical\",\n \"target_duration_seconds\": 30,\n \"avatar_layout\": \"center\",\n \"background_mode\": \"static\",\n \"preset\": \"<string>\",\n \"title\": \"<string>\",\n \"brief\": \"<string>\",\n \"source_url\": \"<string>\",\n \"source_text\": \"<string>\",\n \"source_image_urls\": [\n \"<string>\"\n ],\n \"source_video_urls\": [\n \"<string>\"\n ],\n \"source_image_kinds\": [],\n \"source_video_kinds\": [],\n \"script\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"replica_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"interview_cast\": [\n {\n \"replica_id\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"b_roll\": true,\n \"b_roll_sources\": [],\n \"b_roll_images\": [\n 4503599627370495\n ],\n \"b_roll_opening\": true,\n \"b_roll_end_scene\": true,\n \"b_roll_end_scene_text\": \"<string>\",\n \"b_roll_end_scene_voice_id\": \"<string>\",\n \"subtitle_emojis\": true,\n \"video_model\": \"<string>\",\n \"slide_count\": 6,\n \"image_model\": \"<string>\",\n \"on_screen_caption\": \"<string>\",\n \"footage_narrated\": true,\n \"meme_clip_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"demo_focus\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumisreach.com/api/v1/videos/quote")
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 \"template\": \"talking_avatar\",\n \"format\": \"vertical\",\n \"target_duration_seconds\": 30,\n \"avatar_layout\": \"center\",\n \"background_mode\": \"static\",\n \"preset\": \"<string>\",\n \"title\": \"<string>\",\n \"brief\": \"<string>\",\n \"source_url\": \"<string>\",\n \"source_text\": \"<string>\",\n \"source_image_urls\": [\n \"<string>\"\n ],\n \"source_video_urls\": [\n \"<string>\"\n ],\n \"source_image_kinds\": [],\n \"source_video_kinds\": [],\n \"script\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"replica_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"interview_cast\": [\n {\n \"replica_id\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"b_roll\": true,\n \"b_roll_sources\": [],\n \"b_roll_images\": [\n 4503599627370495\n ],\n \"b_roll_opening\": true,\n \"b_roll_end_scene\": true,\n \"b_roll_end_scene_text\": \"<string>\",\n \"b_roll_end_scene_voice_id\": \"<string>\",\n \"subtitle_emojis\": true,\n \"video_model\": \"<string>\",\n \"slide_count\": 6,\n \"image_model\": \"<string>\",\n \"on_screen_caption\": \"<string>\",\n \"footage_narrated\": true,\n \"meme_clip_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"demo_focus\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"price_cents": 0,
"price_usd": "<string>",
"estimated": true,
"seconds": 123,
"line_items": [
{
"label": "<string>",
"cents": 0
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}Quote a video
The price of a video with these settings (the same body as POST /v1/videos), without making it. Videos are priced at the cost of the providers that make them (presenter renders, generated shots and pictures, narration, rendering) plus a small markup, and charged once, when released to render; retries are free. With your own script the quote is exact. Without one it is an estimate from target_duration_seconds (estimated: true), and the charge at approval is for what was actually written. Free.
curl --request POST \
--url https://api.lumisreach.com/api/v1/videos/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"template": "talking_avatar",
"format": "vertical",
"target_duration_seconds": 30,
"avatar_layout": "center",
"background_mode": "static",
"preset": "<string>",
"title": "<string>",
"brief": "<string>",
"source_url": "<string>",
"source_text": "<string>",
"source_image_urls": [
"<string>"
],
"source_video_urls": [
"<string>"
],
"source_image_kinds": [],
"source_video_kinds": [],
"script": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"replica_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"interview_cast": [
{
"replica_id": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"b_roll": true,
"b_roll_sources": [],
"b_roll_images": [
4503599627370495
],
"b_roll_opening": true,
"b_roll_end_scene": true,
"b_roll_end_scene_text": "<string>",
"b_roll_end_scene_voice_id": "<string>",
"subtitle_emojis": true,
"video_model": "<string>",
"slide_count": 6,
"image_model": "<string>",
"on_screen_caption": "<string>",
"footage_narrated": true,
"meme_clip_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"demo_focus": "<string>"
}
'import requests
url = "https://api.lumisreach.com/api/v1/videos/quote"
payload = {
"template": "talking_avatar",
"format": "vertical",
"target_duration_seconds": 30,
"avatar_layout": "center",
"background_mode": "static",
"preset": "<string>",
"title": "<string>",
"brief": "<string>",
"source_url": "<string>",
"source_text": "<string>",
"source_image_urls": ["<string>"],
"source_video_urls": ["<string>"],
"source_image_kinds": [],
"source_video_kinds": [],
"script": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"replica_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"interview_cast": [
{
"replica_id": "<string>",
"avatar_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"b_roll": True,
"b_roll_sources": [],
"b_roll_images": [4503599627370495],
"b_roll_opening": True,
"b_roll_end_scene": True,
"b_roll_end_scene_text": "<string>",
"b_roll_end_scene_voice_id": "<string>",
"subtitle_emojis": True,
"video_model": "<string>",
"slide_count": 6,
"image_model": "<string>",
"on_screen_caption": "<string>",
"footage_narrated": True,
"meme_clip_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"demo_focus": "<string>"
}
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({
template: 'talking_avatar',
format: 'vertical',
target_duration_seconds: 30,
avatar_layout: 'center',
background_mode: 'static',
preset: '<string>',
title: '<string>',
brief: '<string>',
source_url: '<string>',
source_text: '<string>',
source_image_urls: ['<string>'],
source_video_urls: ['<string>'],
source_image_kinds: [],
source_video_kinds: [],
script: '<string>',
avatar_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
replica_id: '<string>',
voice_id: '<string>',
voice_model: '<string>',
interview_cast: [{replica_id: '<string>', avatar_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
b_roll: true,
b_roll_sources: [],
b_roll_images: [4503599627370495],
b_roll_opening: true,
b_roll_end_scene: true,
b_roll_end_scene_text: '<string>',
b_roll_end_scene_voice_id: '<string>',
subtitle_emojis: true,
video_model: '<string>',
slide_count: 6,
image_model: '<string>',
on_screen_caption: '<string>',
footage_narrated: true,
meme_clip_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
demo_focus: '<string>'
})
};
fetch('https://api.lumisreach.com/api/v1/videos/quote', 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.lumisreach.com/api/v1/videos/quote",
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([
'template' => 'talking_avatar',
'format' => 'vertical',
'target_duration_seconds' => 30,
'avatar_layout' => 'center',
'background_mode' => 'static',
'preset' => '<string>',
'title' => '<string>',
'brief' => '<string>',
'source_url' => '<string>',
'source_text' => '<string>',
'source_image_urls' => [
'<string>'
],
'source_video_urls' => [
'<string>'
],
'source_image_kinds' => [
],
'source_video_kinds' => [
],
'script' => '<string>',
'avatar_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'replica_id' => '<string>',
'voice_id' => '<string>',
'voice_model' => '<string>',
'interview_cast' => [
[
'replica_id' => '<string>',
'avatar_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'b_roll' => true,
'b_roll_sources' => [
],
'b_roll_images' => [
4503599627370495
],
'b_roll_opening' => true,
'b_roll_end_scene' => true,
'b_roll_end_scene_text' => '<string>',
'b_roll_end_scene_voice_id' => '<string>',
'subtitle_emojis' => true,
'video_model' => '<string>',
'slide_count' => 6,
'image_model' => '<string>',
'on_screen_caption' => '<string>',
'footage_narrated' => true,
'meme_clip_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'demo_focus' => '<string>'
]),
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.lumisreach.com/api/v1/videos/quote"
payload := strings.NewReader("{\n \"template\": \"talking_avatar\",\n \"format\": \"vertical\",\n \"target_duration_seconds\": 30,\n \"avatar_layout\": \"center\",\n \"background_mode\": \"static\",\n \"preset\": \"<string>\",\n \"title\": \"<string>\",\n \"brief\": \"<string>\",\n \"source_url\": \"<string>\",\n \"source_text\": \"<string>\",\n \"source_image_urls\": [\n \"<string>\"\n ],\n \"source_video_urls\": [\n \"<string>\"\n ],\n \"source_image_kinds\": [],\n \"source_video_kinds\": [],\n \"script\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"replica_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"interview_cast\": [\n {\n \"replica_id\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"b_roll\": true,\n \"b_roll_sources\": [],\n \"b_roll_images\": [\n 4503599627370495\n ],\n \"b_roll_opening\": true,\n \"b_roll_end_scene\": true,\n \"b_roll_end_scene_text\": \"<string>\",\n \"b_roll_end_scene_voice_id\": \"<string>\",\n \"subtitle_emojis\": true,\n \"video_model\": \"<string>\",\n \"slide_count\": 6,\n \"image_model\": \"<string>\",\n \"on_screen_caption\": \"<string>\",\n \"footage_narrated\": true,\n \"meme_clip_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"demo_focus\": \"<string>\"\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.lumisreach.com/api/v1/videos/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"template\": \"talking_avatar\",\n \"format\": \"vertical\",\n \"target_duration_seconds\": 30,\n \"avatar_layout\": \"center\",\n \"background_mode\": \"static\",\n \"preset\": \"<string>\",\n \"title\": \"<string>\",\n \"brief\": \"<string>\",\n \"source_url\": \"<string>\",\n \"source_text\": \"<string>\",\n \"source_image_urls\": [\n \"<string>\"\n ],\n \"source_video_urls\": [\n \"<string>\"\n ],\n \"source_image_kinds\": [],\n \"source_video_kinds\": [],\n \"script\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"replica_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"interview_cast\": [\n {\n \"replica_id\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"b_roll\": true,\n \"b_roll_sources\": [],\n \"b_roll_images\": [\n 4503599627370495\n ],\n \"b_roll_opening\": true,\n \"b_roll_end_scene\": true,\n \"b_roll_end_scene_text\": \"<string>\",\n \"b_roll_end_scene_voice_id\": \"<string>\",\n \"subtitle_emojis\": true,\n \"video_model\": \"<string>\",\n \"slide_count\": 6,\n \"image_model\": \"<string>\",\n \"on_screen_caption\": \"<string>\",\n \"footage_narrated\": true,\n \"meme_clip_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"demo_focus\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumisreach.com/api/v1/videos/quote")
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 \"template\": \"talking_avatar\",\n \"format\": \"vertical\",\n \"target_duration_seconds\": 30,\n \"avatar_layout\": \"center\",\n \"background_mode\": \"static\",\n \"preset\": \"<string>\",\n \"title\": \"<string>\",\n \"brief\": \"<string>\",\n \"source_url\": \"<string>\",\n \"source_text\": \"<string>\",\n \"source_image_urls\": [\n \"<string>\"\n ],\n \"source_video_urls\": [\n \"<string>\"\n ],\n \"source_image_kinds\": [],\n \"source_video_kinds\": [],\n \"script\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"replica_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"interview_cast\": [\n {\n \"replica_id\": \"<string>\",\n \"avatar_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"b_roll\": true,\n \"b_roll_sources\": [],\n \"b_roll_images\": [\n 4503599627370495\n ],\n \"b_roll_opening\": true,\n \"b_roll_end_scene\": true,\n \"b_roll_end_scene_text\": \"<string>\",\n \"b_roll_end_scene_voice_id\": \"<string>\",\n \"subtitle_emojis\": true,\n \"video_model\": \"<string>\",\n \"slide_count\": 6,\n \"image_model\": \"<string>\",\n \"on_screen_caption\": \"<string>\",\n \"footage_narrated\": true,\n \"meme_clip_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"demo_focus\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"price_cents": 0,
"price_usd": "<string>",
"estimated": true,
"seconds": 123,
"line_items": [
{
"label": "<string>",
"cents": 0
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {},
"doc_url": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
A UUID. When present, deduplicates repeat submissions. See /api-reference/idempotency.
Body
Which recipe makes the video: talking_avatar (a presenter over your site), remotion (motion graphics with a narrator), site_demo (an automated demo: an agent clicks through your website, screen-recorded, with a narrator), freeform_ai (one generated clip per scene), meme_hook (a viral clip into your presenter), interview (2 to 4 avatars in a split screen), phone_mockup (your video, site or photos on a phone in a hand), slideshow (captioned still slides) or real_footage (a real stock clip with a caption).
talking_avatar, remotion, site_demo, freeform_ai, meme_hook, interview, phone_mockup, slideshow, real_footage vertical (9:16) or horizontal (16:9)
vertical, horizontal Roughly how long a written script runs. Ignored when you send script. Each template supports its own subset.
10, 15, 20, 30, 45, 60, 120, 180, 300 Where the presenter sits. audio_only is for an automated demo only.
center, bubble_bottom_left, bubble_bottom_right, audio_only What the presenter stands in front of: static (a still of the site), scrolling (scrolls the site or several images), footage (your uploaded video), automated_demo (an agent clicks through your product), original (the presenter's own set) or image (a photo).
static, scrolling, footage, automated_demo, original, image A style of that template, e.g. imessage for remotion. Omit for the template's default.
Your name for the video. Kept as its title; omit it and the title is written from the script.
1 - 100What you want this video to be, in a sentence or two: the subject, the audience and the feel. The script is written to it. Ignored when you send script.
1 - 1000The website the video is about
A description of the business, product or offer, in your words
1 - 5000Images already uploaded to LumisReach, in the order the video shows them
10Videos already uploaded to LumisReach, in order
5What each of source_image_urls is, in the same order: screen (a screenshot), photo, logo (your logo: shown by the end logo scene and nowhere else in the video) or other (a flyer, a chart, an illustration). null, or leaving the list out, has us read the image and decide.
10screen, photo, logo, other What each of source_video_urls is, in the same order: talking (someone talking to the camera), broll (footage to cut away to) or screen (a screen recording). null, or leaving the list out, has us read the video and decide.
5talking, broll, screen Your own script, spoken word for word. Only for templates that read a script (talking_avatar, meme_hook, phone_mockup, real_footage). The video skips script review and is charged when it is created.
1 - 60000Who renders the presenter. Left out with a replica_id or avatar_id, that presenter is a Tavus one. Left out with neither, it is tavus for an interview (cast from its stock faces) and heygen otherwise. HeyGen without replica_id or avatar_id uses one of its pre-made presenters, chosen to fit the source text where one does; Tavus without them uses the account's default presenter.
heygen, tavus, elevenlabs One of your saved avatars (required for ElevenLabs)
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$A pre-made presenter: a Tavus face or a HeyGen look
1 - 100HeyGen only. Omit for the most advanced engine the look supports.
avatar_iii, avatar_iv, avatar_v An ElevenLabs avatar's voice, or the narrator of a narrated template: an ElevenLabs voice id, or a built-in speaker as openai:<name> (e.g. openai:ash, the default)
1 - 100The ElevenLabs speech model an ElevenLabs narrator is spoken with: eleven_v4 (the default), eleven_v3, eleven_multilingual_v2 or eleven_flash_v2_5. Ignored for a built-in speaker.
interview only: who is in each window, in order. A null window is cast for you.
4Show child attributes
Show child attributes
image background: a built-in photo's slug, or upload:<index> for one of your images
modern-office, classical-hall, library, city-skyline, city-street, mountains, park, beach, cafe, loft talking_avatar: cut away to B-roll while the presenter talks (never while they talk about what is behind them). remotion: cut to B-roll scenes between the drawn ones; each comes on once the scene before it has finished, with the narration over it.
With b_roll: what it is made of; several is a mix, chosen per cutaway or scene. For talking_avatar: stock (filmed stock footage), motion_graphics (one animated scene of the point being made), ai (a 5 second clip generated for the topic, charged per clip) or greenscreen (one of your own screenshots or screen recordings from source_image_urls and source_video_urls, shown on a filmed phone or laptop, whichever fits its shape) or image (one of your own source_image_urls held full frame for a few seconds; see b_roll_images). Or any, alone: the planner picks per cutaway from all of those the video can use, and decides whether the video ends on an end card. For remotion: automated_demo (a recording of your product being clicked through; needs source_url, takes demo_focus and demo_login), stock, ai, talking_avatar (a presenter says that scene on camera in their original background; HeyGen or Tavus, chosen with avatar_provider and replica_id or avatar_id, charged per second) or uploaded (shots cut from source_video_urls). Default ["stock"].
1 - 9 elementsany, stock, motion_graphics, ai, greenscreen, image, automated_demo, talking_avatar, uploaded With the image B-roll source: which of source_image_urls the cutaways may show, by index from 0. Each is shown at most once, on the words about what it shows. Omitted, the planner chooses among your photos.
80 <= x <= 9007199254740991With b_roll: let the video open on a cutaway instead of on the presenter. Default false.
talking_avatar, with or without b_roll: join an end card (a motion-graphics scene, for example a like and follow card, or where to book) to the end of the video, played after it has finished. It is always drawn, never footage. Drawn in b_roll_motion_style. Default false.
With b_roll_end_scene: the line the end card shows. Omitted, it is written for the video.
70With b_roll_end_scene: the sound effect the scene comes on with. Omitted is none.
sparkle, pop, whoosh, ding, chime, success, notification, impact, riser With b_roll_end_scene: the voice that says the end card's line out loud as it plays, an ElevenLabs voice id or a built-in speaker such as openai:ash. Omitted is no voiceover.
1 - 200With motion_graphics B-roll: the remotion style the cutaways are drawn in. Default motion-graphics-1.
motion-graphics-1, launch-video, motion-graphics-2, motion-graphics-3, motion-graphics-4, motion-graphics-5, motion-graphics-6, diorama, clinic, boutique, notebook, newsroom, motion-graphics-7, motion-graphics-8 Captions of what is said, burned in along the bottom of the frame. dynamic adds each word as it is said and clears after a pause or about six words; dynamic_highlight does the same with a black border on the text and only the newest word in colour; emphasis does the same with a black border on the text and the important words in colour; enlarge shows four or five words at a time the same way, with one important word of each set bold and larger; one_word shows only the word being said; highlight shows a few words at a time with the one being said in colour. Default none. Ignored by real_footage, which has written captions instead; on slideshow it styles the slide captions (classic, boxed or bold_words).
none, classic, boxed, bold_words, dynamic, dynamic_highlight, emphasis, enlarge, one_word, highlight Where the captions sit. On real_footage null is the top, on slideshow null keeps each slide's own place, and for spoken captions null is along the bottom.
top, middle, bottom Floats an emoji beside the spoken captions at the few moments that deserve one (a question, a shocking fact, the call to action), chosen from what is said. Needs a subtitle_style other than none. Default false.
How big the captions are drawn, relative to the style's own size. Default medium.
small, medium, large freeform_ai only: <model>@<tier>, e.g. seedance-2.5@720p. Omit for the default.
slideshow only
3 <= x <= 10slideshow only: where the pictures come from. Default ai.
uploaded, website, ai slideshow with AI pictures: the image model. Omit for the default.
real_footage only: the clip, by slug. It must be one filmed in the video's format.
young-woman-braids-portrait, stylish-senior-woman-hat, man-coffee-fedora, woman-curly-hair-turns, taxi-driver-by-cab, bald-man-smiling, asian-woman-laughing, nurse-in-corridor, woman-hijab-smiling, man-dimple-smile, grandmother-on-sofa, man-coat-field, older-man-plants, young-man-glasses-curls, construction-worker-hard-hat, shop-owner-packing-box, barista-iced-coffee, man-making-pancakes, senior-woman-reading, man-driving-car, florist-arranging-bouquet, woman-cooking-spices, woman-laptop-phone-breakfast, woman-morning-coffee, older-man-tea, grandma-baking-with-granddaughter, man-typing-laptop, barista-pouring-milk, builder-hammering-wall, woman-treadmill-gym, older-man-white-beard, man-glasses-sunset, woman-hugging-herself, woman-walks-up-courtyard, woman-laughing-brick-wall, woman-laughing-forest, man-grinning-forest, bald-man-glare, man-chin-thinking, man-gasps-disbelief, woman-glasses-ties-hair, barista-pour-over, market-vendor-tray, builder-shovelling-sand, painter-rolling-wall, support-agent-headset, man-phone-call-laptop, older-man-laptop-park, woman-tablet-cafe, woman-phone-smiling, office-worker-late, pharmacist-typing, woman-blow-drying-hair, cook-lifts-pot-lid, woman-sipping-mug real_footage only: the caption over the clip, or up to 3 captions shown one after another, separated by a blank line (each at most 150 characters). Omit to have one written.
454real_footage only: whether a narrator reads the script. Default true.
meme_hook: a clip from your library...
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$...or a built-in clip, by slug
dramatic-chipmunk, sneezing-panda, keyboard-cat, vibing-cat, screaming-goat, coffin-dance, epic-sax-guy, rick-roll, office-rage, surprised-kitty phone_mockup only: what plays on the device's screen. Omit to pick video, then website, then photos.
video, website, photos phone_mockup only: the device clip (a phone, tablet, laptop or monitor with a green screen), by slug. It must be one filmed in the video's format. Omit to have one picked that suits what is on screen.
hand-phone, phone-shop-floor, phone-scrolling, phone-in-car, phone-sideways-sofa, phone-cafe, tablet-wood-desk, tablet-marble-desk, tablet-coffee-break, tablet-flat-lay, laptop-typing, laptop-alarm-clock, laptop-sideboard, monitor-home-office, phone-sideways-backdrop, phone-backdrop phone_mockup with a device_clip filmed against a green backdrop (a -backdrop slug): the built-in photo behind the device. Omit for the default.
modern-office, classical-hall, library, city-skyline, city-street, mountains, park, beach, cafe, loft Site demos: the features to show, in your words
1000Site demos: sign in first to show the product behind the login
Show child attributes
Show child attributes
Response
Success
Show child attributes
Show child attributes