List projects
curl --request GET \
--url https://api.framelane.io/v1/projects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.framelane.io/v1/projects"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.framelane.io/v1/projects', 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.framelane.io/v1/projects",
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: Bearer <token>"
],
]);
$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.framelane.io/v1/projects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.framelane.io/v1/projects")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.framelane.io/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "proj_01J8QR2K5VKDGN2T4FBM3CZYX7",
"name": "Launch teaser",
"version": 3,
"workspace_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"summary": {
"width": 123,
"height": 123,
"duration": 123,
"frame_rate": 123,
"output_format": "<string>",
"element_count": 0,
"transition_count": 0,
"renders_count": 123,
"elements": [
{
"type": "<string>",
"id": "<string>",
"time": 123,
"duration": 123,
"label": "<string>",
"source": "<string>"
}
]
},
"render_request": {
"width": 1920,
"height": 1080,
"duration": 15,
"frame_rate": 30,
"output_format": "mp4",
"output_filename": "my-render",
"background_color": "#000000ff",
"background_image_url": "https://cdn.example.com/bg.jpg",
"alpha": false,
"elements": [
{
"source_url": "https://cdn.example.com/clip.mp4",
"lut_url": "<string>",
"lut_intensity": 100,
"brightness": 0,
"contrast": 0,
"saturation": 0,
"exposure": 0,
"sharpness": 0,
"blur": 0,
"noise": 0,
"vignette": 0,
"hue_rotate": 0,
"temperature": 0,
"tint": 0,
"vibrance": 0,
"highlights": 0,
"shadows": 0,
"crop_top": 0,
"crop_bottom": 0,
"crop_left": 0,
"crop_right": 0,
"border_radius": 0,
"border_color": "<string>",
"border_width": 0,
"shadow_color": "<string>",
"shadow_blur": 0,
"shadow_x": 0,
"shadow_y": 0,
"blend_mode": "none",
"mask_shape": "circle",
"mask": {
"feather": 0,
"scale": 1,
"center": {
"x": 0.5,
"y": 0.5
}
},
"mask_keyframes": [
{
"time": 1,
"feather": 123,
"scale": 123,
"center": {
"x": 0.5,
"y": 0.5
},
"easing": "<string>",
"spring": {
"stiffness": 100,
"damping": 10,
"mass": 1
},
"back": {
"overshoot": 1.70158,
"dir": "out"
},
"elastic": {
"amplitude": 1,
"period": 0.3,
"dir": "out"
},
"bezier": {
"x1": 0,
"y1": 0,
"x2": 1,
"y2": 1
}
}
],
"matte": {
"source": "<string>",
"mode": "alpha",
"invert": false
},
"backdrop_blur": 0,
"x": "50%",
"y": "50%",
"width": "40%",
"height": "80%",
"aspect_ratio": 123,
"x_anchor": "0%",
"y_anchor": "100%",
"x_rotation": "0°",
"y_rotation": "0°",
"z_rotation": "0°",
"x_scale": "100%",
"y_scale": "100%",
"flip_horizontal": false,
"flip_vertical": false,
"opacity": 100,
"z_index": 123,
"clip": false,
"color_overlay": "<string>",
"type": "video",
"id": "clip_01",
"name": "<string>",
"track": 127,
"time": 0,
"visible": true,
"in_point": 0,
"out_point": 6,
"speed": 1,
"playback_rate_keyframes": [
{
"time": 1,
"rate": 1
}
],
"volume": 100,
"fade_in_duration": 0,
"fade_out_duration": 0,
"effects": [],
"motion": []
}
],
"transitions": [
{
"type": "cross_dissolve",
"duration": 0.5,
"from_id": "video_01",
"to_id": "video_02",
"z_index": 1
}
],
"groups": [
{
"id": "hero",
"parent": "<string>",
"pivot": {
"x": 0.5,
"y": 0.5
},
"translate": {
"x": 0.5,
"y": 0.5
},
"scale": 1,
"rotation_degrees": 0,
"x_rotation": "0°",
"y_rotation": "0°",
"opacity": 1,
"members": [
"<string>"
],
"animations": [
{
"time": 1,
"duration": 123,
"type": "identity",
"custom": "<string>",
"easing": "ease_in_out",
"reversed": false,
"scope": "element",
"delay": 0,
"spacing": 1,
"loop": false,
"audio": {
"feature": "amplitude",
"scale": 0,
"opacity": 0,
"translate": {
"x": 0.5,
"y": 0.5
},
"rotate": 0
}
}
],
"layout": {
"type": "stack",
"direction": "row",
"gap": 0,
"align": "center",
"origin": {
"x": 0.5,
"y": 0.5
}
}
}
],
"motion_blur": {
"samples": 17,
"shutter": 0.5
},
"background_gradient": "linear-gradient(90deg, #ff0000 0%, #0000ff 100%)",
"watermark_url": "<string>",
"custom_animations": {
"element": [],
"text": []
},
"metadata": {
"project_id": "proj_123"
},
"webhook_url": "https://app.example.com/hooks/framelane",
"ingest_external": true
}
}
],
"next_cursor": "<string>",
"has_more": false
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Projects
List projects
Cursor-paginated projects for the workspace. Each item is a compact summary.
GET
/
v1
/
projects
List projects
curl --request GET \
--url https://api.framelane.io/v1/projects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.framelane.io/v1/projects"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.framelane.io/v1/projects', 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.framelane.io/v1/projects",
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: Bearer <token>"
],
]);
$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.framelane.io/v1/projects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.framelane.io/v1/projects")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.framelane.io/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "proj_01J8QR2K5VKDGN2T4FBM3CZYX7",
"name": "Launch teaser",
"version": 3,
"workspace_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"summary": {
"width": 123,
"height": 123,
"duration": 123,
"frame_rate": 123,
"output_format": "<string>",
"element_count": 0,
"transition_count": 0,
"renders_count": 123,
"elements": [
{
"type": "<string>",
"id": "<string>",
"time": 123,
"duration": 123,
"label": "<string>",
"source": "<string>"
}
]
},
"render_request": {
"width": 1920,
"height": 1080,
"duration": 15,
"frame_rate": 30,
"output_format": "mp4",
"output_filename": "my-render",
"background_color": "#000000ff",
"background_image_url": "https://cdn.example.com/bg.jpg",
"alpha": false,
"elements": [
{
"source_url": "https://cdn.example.com/clip.mp4",
"lut_url": "<string>",
"lut_intensity": 100,
"brightness": 0,
"contrast": 0,
"saturation": 0,
"exposure": 0,
"sharpness": 0,
"blur": 0,
"noise": 0,
"vignette": 0,
"hue_rotate": 0,
"temperature": 0,
"tint": 0,
"vibrance": 0,
"highlights": 0,
"shadows": 0,
"crop_top": 0,
"crop_bottom": 0,
"crop_left": 0,
"crop_right": 0,
"border_radius": 0,
"border_color": "<string>",
"border_width": 0,
"shadow_color": "<string>",
"shadow_blur": 0,
"shadow_x": 0,
"shadow_y": 0,
"blend_mode": "none",
"mask_shape": "circle",
"mask": {
"feather": 0,
"scale": 1,
"center": {
"x": 0.5,
"y": 0.5
}
},
"mask_keyframes": [
{
"time": 1,
"feather": 123,
"scale": 123,
"center": {
"x": 0.5,
"y": 0.5
},
"easing": "<string>",
"spring": {
"stiffness": 100,
"damping": 10,
"mass": 1
},
"back": {
"overshoot": 1.70158,
"dir": "out"
},
"elastic": {
"amplitude": 1,
"period": 0.3,
"dir": "out"
},
"bezier": {
"x1": 0,
"y1": 0,
"x2": 1,
"y2": 1
}
}
],
"matte": {
"source": "<string>",
"mode": "alpha",
"invert": false
},
"backdrop_blur": 0,
"x": "50%",
"y": "50%",
"width": "40%",
"height": "80%",
"aspect_ratio": 123,
"x_anchor": "0%",
"y_anchor": "100%",
"x_rotation": "0°",
"y_rotation": "0°",
"z_rotation": "0°",
"x_scale": "100%",
"y_scale": "100%",
"flip_horizontal": false,
"flip_vertical": false,
"opacity": 100,
"z_index": 123,
"clip": false,
"color_overlay": "<string>",
"type": "video",
"id": "clip_01",
"name": "<string>",
"track": 127,
"time": 0,
"visible": true,
"in_point": 0,
"out_point": 6,
"speed": 1,
"playback_rate_keyframes": [
{
"time": 1,
"rate": 1
}
],
"volume": 100,
"fade_in_duration": 0,
"fade_out_duration": 0,
"effects": [],
"motion": []
}
],
"transitions": [
{
"type": "cross_dissolve",
"duration": 0.5,
"from_id": "video_01",
"to_id": "video_02",
"z_index": 1
}
],
"groups": [
{
"id": "hero",
"parent": "<string>",
"pivot": {
"x": 0.5,
"y": 0.5
},
"translate": {
"x": 0.5,
"y": 0.5
},
"scale": 1,
"rotation_degrees": 0,
"x_rotation": "0°",
"y_rotation": "0°",
"opacity": 1,
"members": [
"<string>"
],
"animations": [
{
"time": 1,
"duration": 123,
"type": "identity",
"custom": "<string>",
"easing": "ease_in_out",
"reversed": false,
"scope": "element",
"delay": 0,
"spacing": 1,
"loop": false,
"audio": {
"feature": "amplitude",
"scale": 0,
"opacity": 0,
"translate": {
"x": 0.5,
"y": 0.5
},
"rotate": 0
}
}
],
"layout": {
"type": "stack",
"direction": "row",
"gap": 0,
"align": "center",
"origin": {
"x": 0.5,
"y": 0.5
}
}
}
],
"motion_blur": {
"samples": 17,
"shutter": 0.5
},
"background_gradient": "linear-gradient(90deg, #ff0000 0%, #0000ff 100%)",
"watermark_url": "<string>",
"custom_animations": {
"element": [],
"text": []
},
"metadata": {
"project_id": "proj_123"
},
"webhook_url": "https://app.example.com/hooks/framelane",
"ingest_external": true
}
}
],
"next_cursor": "<string>",
"has_more": false
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

