Get Smart Layouts
curl --request GET \
--url https://api.pictory.ai/pictoryapis/v1/smartlayouts \
--header 'Authorization: <authorization>'import requests
url = "https://api.pictory.ai/pictoryapis/v1/smartlayouts"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.pictory.ai/pictoryapis/v1/smartlayouts', 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.pictory.ai/pictoryapis/v1/smartlayouts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pictory.ai/pictoryapis/v1/smartlayouts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pictory.ai/pictoryapis/v1/smartlayouts")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pictory.ai/pictoryapis/v1/smartlayouts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"items": [
{
"templateId": "202507141030549677ylq8k8gu44vy1y",
"templateName": "Modern minimalist",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adhg7",
"templateName": "Kinetic",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adaa3",
"templateName": "Chic",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adcf7",
"templateName": "Wanderlust",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adtd3",
"templateName": "Bulletin",
"schemaVersion": "v3"
}
]
}
{
"message": "Unauthorized"
}
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Smart Layouts
Get Smart Layouts
Retrieve all smart layout templates available for video creation
GET
/
pictoryapis
/
v1
/
smartlayouts
Get Smart Layouts
curl --request GET \
--url https://api.pictory.ai/pictoryapis/v1/smartlayouts \
--header 'Authorization: <authorization>'import requests
url = "https://api.pictory.ai/pictoryapis/v1/smartlayouts"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.pictory.ai/pictoryapis/v1/smartlayouts', 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.pictory.ai/pictoryapis/v1/smartlayouts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pictory.ai/pictoryapis/v1/smartlayouts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pictory.ai/pictoryapis/v1/smartlayouts")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pictory.ai/pictoryapis/v1/smartlayouts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"items": [
{
"templateId": "202507141030549677ylq8k8gu44vy1y",
"templateName": "Modern minimalist",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adhg7",
"templateName": "Kinetic",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adaa3",
"templateName": "Chic",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adcf7",
"templateName": "Wanderlust",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adtd3",
"templateName": "Bulletin",
"schemaVersion": "v3"
}
]
}
{
"message": "Unauthorized"
}
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Overview
Fetch all smart layout templates available in your Pictory account. Smart layouts are pre-designed visual templates that define how text, visuals, and other elements are arranged in your video scenes. They provide professional styling with consistent positioning, animations, and visual effects. Use this endpoint to retrieve available smart layouts for video creation, allowing users to select from pre-defined layout options that match their content style.You need a valid API key to use this endpoint. Get your API key from the API Access page in your Pictory dashboard.
What Are Smart Layouts?
Smart layouts are visual templates that control:Text Positioning
Where subtitles and captions appear on screen
Visual Arrangement
How background media is displayed and cropped
Animations
Entry, exit, and emphasis animations for elements
Styling
Colors, fonts, and visual effects applied to scenes
API Endpoint
GET https://api.pictory.ai/pictoryapis/v1/smartlayouts
Request Parameters
Headers
string
required
API key for authentication
Authorization: YOUR_API_KEY
Response
Returns an object containing an array of smart layout templates.array of objects
List of available smart layout templates
Response Examples
{
"items": [
{
"templateId": "202507141030549677ylq8k8gu44vy1y",
"templateName": "Modern minimalist",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adhg7",
"templateName": "Kinetic",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adaa3",
"templateName": "Chic",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adcf7",
"templateName": "Wanderlust",
"schemaVersion": "v3"
},
{
"templateId": "20250813042630669e658e159aa60455692c1dad5473adtd3",
"templateName": "Bulletin",
"schemaVersion": "v3"
}
]
}
{
"message": "Unauthorized"
}
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Default Smart Layouts
The following smart layouts are available by default:| Layout Name | Style | Best Used For |
|---|---|---|
| Modern minimalist | Clean, simple design with subtle animations | Professional content, corporate videos, tutorials |
| Kinetic | Dynamic, energetic with bold movements | Social media content, promotional videos, engaging clips |
| Chic | Elegant, sophisticated styling | Fashion, lifestyle, premium brand content |
| Wanderlust | Travel-inspired, adventurous feel | Travel content, adventure videos, outdoor themes |
| Bulletin | News-style, informative layout | News updates, announcements, educational content |
You can also create custom smart layouts in the Pictory App. Custom layouts will appear in your API response alongside the default layouts.
Code Examples
Replace
YOUR_API_KEY with your actual API keycurl --request GET \
--url 'https://api.pictory.ai/pictoryapis/v1/smartlayouts' \
--header 'Authorization: YOUR_API_KEY' \
--header 'accept: application/json' | python -m json.tool
import requests
url = "https://api.pictory.ai/pictoryapis/v1/smartlayouts"
headers = {
"Authorization": "YOUR_API_KEY",
"accept": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(f"Total smart layouts available: {len(data['items'])}\n")
# Display all layouts
for layout in data['items']:
print(f"- {layout['templateName']} (ID: {layout['templateId']})")
const response = await fetch(
'https://api.pictory.ai/pictoryapis/v1/smartlayouts',
{
method: 'GET',
headers: {
'Authorization': 'YOUR_API_KEY',
'accept': 'application/json'
}
}
);
const data = await response.json();
console.log(`Total smart layouts available: ${data.items.length}\n`);
// Display all layouts
data.items.forEach(layout => {
console.log(`- ${layout.templateName} (ID: ${layout.templateId})`);
});
<?php
function getSmartLayouts($apiKey) {
$url = 'https://api.pictory.ai/pictoryapis/v1/smartlayouts';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: ' . $apiKey,
'accept: application/json'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
throw new Exception('Request failed with status ' . $httpCode);
}
return json_decode($response, true);
}
// Usage
try {
$data = getSmartLayouts('YOUR_API_KEY');
echo "Total smart layouts available: " . count($data['items']) . "\n\n";
// Display all layouts
foreach ($data['items'] as $layout) {
echo "- {$layout['templateName']} (ID: {$layout['templateId']})\n";
}
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
?>
Using Smart Layouts in Video Creation
Once you have the layout ID, use it with thesmartLayoutId parameter when creating videos:
Using Layout ID
const response = await fetch('https://api.pictory.ai/pictoryapis/v2/video/storyboard/render', {
method: 'POST',
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
videoName: 'my_video',
smartLayoutId: '202507141030549677ylq8k8gu44vy1y', // Modern minimalist
scenes: [{
story: 'Your video content here',
createSceneOnEndOfSentence: true
}]
})
});
Using Layout Name
Alternatively, you can use thesmartLayoutName parameter with the exact template name:
const response = await fetch('https://api.pictory.ai/pictoryapis/v2/video/storyboard/render', {
method: 'POST',
headers: {
'Authorization': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
videoName: 'my_video',
smartLayoutName: 'modern minimalist', // Case-insensitive
scenes: [{
story: 'Your video content here',
createSceneOnEndOfSentence: true
}]
})
});
You cannot use both
smartLayoutId and smartLayoutName in the same request. Choose one method to specify your layout.Error Handling
401 - Unauthorized
401 - Unauthorized
{
"message": "Unauthorized"
}
500 - Internal Server Error
500 - Internal Server Error
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Related APIs
Create Storyboard Preview
Use smart layouts when creating video previews
Render Storyboard Video
Apply smart layouts to rendered videos
Get Text Styles
Customize subtitle styling within layouts
Get Video Brands
Combine layouts with brand settings
Was this page helpful?
