JSON2Video API
Create and edit awesome videos programmatically
COMMUNITYNO AUTH0 INSTALLS
OpenAPI Specificationv3.0
{
"openapi": "3.0.2",
"servers": [
{
"description": "Version 2 endpoint",
"url": "https://api.json2video.com/v2"
}
],
"info": {
"description": "Create and edit awesome videos programmatically",
"title": "JSON2Video API",
"version": "2.0.0",
"x-logo": {
"url": "https://api.apis.guru/v2/cache/logo/https_json2video.com_images_json2video-logo.svg"
},
"x-origin": [
{
"format": "openapi",
"url": "https://json2video.com/docs/api/json2video-api.json",
"version": "3.0"
}
],
"x-providerName": "json2video.com"
},
"paths": {
"/movies": {
"get": {
"description": "Get the status any of your movies by passing your project ID in the <code>project</code> query parameter. You can get your project ID from the response of the POST request.",
"operationId": "getMovies",
"responses": {
"200": {
"description": "Ok"
}
},
"summary": "Get the status of your movies"
},
"post": {
"description": "Submit a new movie rendering job.",
"operationId": "newMovie",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/movie"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Added"
}
},
"summary": "Create a new movie"
}
}
},
"components": {
"schemas": {
"AudioElement": {
"additionalProperties": false,
"properties": {
"muted": {
"default": false,
"description": "Mutes the audio",
"type": "boolean"
},
"volume": {
"default": 5,
"maximum": 10,
"minimum": 0,
"type": "number"
}
},
"title": "AudioElement",
"type": "object"
},
"BaseElement": {
"additionalProperties": false,
"properties": {
"cache": {
"default": true,
"description": "Element's cache policy. When true, the cached version (if exists) is used. When false, the assets is downloaded.",
"example": false,
"format": "boolean",
"type": "boolean"
},
"comment": {
"description": "Used for adding your comments",
"type": "string"
},
"duration": {
"default": -1,
"description": "Element's duration in seconds. A value of -1 auto calculates the duration based on the asset intrinsic length or the scene duration.",
"example": 7.3,
"format": "float",
"type": "number"
},
"extra-time": {
"default": 0,
"description": "Element's time span added after the playback.",
"example": 0.5,
"format": "float",
"type": "number"
},
"fade-in": {
"description": "Adds a fade in effect to the element. Value in seconds.",
"format": "float",
"minimum": 0,
"type": "number"
},
"fade-out": {
"description": "Adds a fade out effect to the element. Value in seconds.",
"format": "float",
"minimum": 0,
"type": "number"
},
"start": {
"default": 0,
"description": "Element's starting time in seconds relative to the container scene or the movie if the element is in the Movie's elements array.",
"format": "float",
"type": "number"
},
"z-index": {
"default": 0,
"description": "Element's z-index. Use this property to reorganize the layering of the elements like in HTML",
"example": 3,
"format": "integer",
"type": "number"
}
},
"title": "BaseElement",
"type": "object"
},
"CaptureProperty": {
"additionalProperties": false,
"properties": {
"capture": {
"additionalProperties": false,
"description": "Browser capture settings",
"properties": {
"duration": {
"default": 0,
"description": "Screen recording duration in seconds. Use 0 to take a screenshot",
"format": "float",
"maximum": 10,
"minimum": 0,
"type": "number"
},
"height": {
"default": 360,
"description": "Viewport height",
"maximum": 1080,
"minimum": 50,
"type": "integer"
},
"width": {
"default": 640,
"description": "Viewport width",
"maximum": 1920,
"minimum": 50,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
}
},
"title": "CaptureProperty",
"type": "object"
},
"VisualElement": {
"additionalProperties": false,
"properties": {
"chroma-key": {
"description": "Allows to define a color (or a range of colors) that will be converted to transparent",
"properties": {
"color": {
"description": "Set the color for which alpha will be set to 0 (full transparency)",
"example": "#00b140",
"type": "string"
},
"tolerance": {
"default": 25,
"description": "Makes the selection more or less sensitive to changes in color. A value of 1 will select only the provided color. A value of 100 will select all colors, so the full canvas",
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
"required": [
"color"
],
"type": "object"
},
"crop": {
"additionalProperties": false,
"description": "Crops the element",
"properties": {
"height": {
"description": "Sets the height of the croping",
"type": "integer"
},
"width": {
"description": "Sets the width of the croping",
"type": "integer"
},
"x": {
"default": 0,
"description": "Sets the left point of croping",
"type": "integer"
},
"y": {
"default": 0,
"description": "Sets the top point of croping",
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"pan": {
"description": "Pans the element to the specified direction. If <code>zoom</code> property is not specified, the effect is a non-zooming pan",
"enum": [
"left",
"top",
"right",
"bottom",
"top-left",
"top-right",
"bottom-left",
"bottom-right"
],
"type": "string"
},
"position": {
"default": "custom",
"description": "Sets the element position in the scene. A value of 'custom' sets a custom position based on the provided 'x' and 'y' properties",
"enum": [
"top-left",
"top-right",
"bottom-right",
"bottom-left",
"center-center",
"custom"
],
"type": "string"
},
"rotate": {
"additionalProperties": false,
"properties": {
"angle": {
"default": 0,
"description": "Sets the angle of rotation",
"maximum": 360,
"minimum": -360,
"type": "number"
},
"speed": {
"default": 0,
"description": "Sets the time it takes to rotate the provided angle. A zero value means no movement",
"minimum": 0,
"type": "number"
}
},
"required": [
"angle"
],
"type": "object"
},
"scale": {
"additionalProperties": false,
"properties": {
"height": {
"default": -1,
"description": "Sets the height for scaling the element",
"minimum": -1,
"type": "integer"
},
"width": {
"default": -1,
"description": "Sets the width for scaling the element",
"minimum": -1,
"type": "integer"
}
},
"type": "object"
},
"x": {
"default": 0,
"description": "Sets the horizontal position of the element in the scene. The value <code>0</code> is on the left side",
"format": "integer",
"type": "number"
},
"y": {
"default": 0,
"description": "Sets the vertical position of the element in the scene. The value <code>0</code> is on the top side",
"format": "integer",
"type": "number"
},
"zoom": {
"description": "Zooms the element with the specified level percentage. Positive values zoom in, negative values zoom out, zero does not zoom. Zoom can be combined with the <code>pan</code> property to set the focus point of the zooming",
"maximum": 100,
"minimum": -100,
"type": "integer"
}
},
"title": "VisualElement",
"type": "object"
},
"audio": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"src": {
"format": "uri",
"type": "string"
},
"type": {
"enum": [
"audio"
],
"type": "string"
}
},
"type": "object"
},
{
"$ref": "#/components/schemas/BaseElement"
},
{
"$ref": "#/components/schemas/AudioElement"
}
],
"title": "Audio"
},
"component": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"component": {
"description": "ID of the Component element. Check all available components in the <a href='https://json2video.com/docs/resources/basic/'>library</a>",
"example": "basic/001",
"type": "string"
},
"height": {
"default": -1,
"description": "Desired text element height, but can be overriden by the component defaults. A value of <code>-1</code> means inherits scenes or movie height",
"maximum": 1080,
"minimum": -1,
"type": "integer"
},
"settings": {
"description": "Settings to be passed to the component",
"type": "object"
},
"type": {
"enum": [
"component"
],
"type": "string"
},
"width": {
"default": -1,
"description": "Desired text element width, but can be overriden by the component defaults. A value of <code>-1</code> means inherits scenes or movie width",
"maximum": 1920,
"minimum": -1,
"type": "integer"
}
},
"required": [
"type",
"component"
],
"type": "object"
},
{
"$ref": "#/components/schemas/BaseElement"
},
{
"$ref": "#/components/schemas/VisualElement"
}
],
"description": "Creates an element based on the specified feature",
"title": "Component"
},
"html": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"height": {
"default": -1,
"description": "Desired text element height. A value of <code>-1</code> means inherits scenes or movie height",
"maximum": 1080,
"minimum": -1,
"type": "integer"
},
"html": {
"description": "HTML snippet to render. Compatible with HTML5, CSS3 and Javascript",
"example": "<h1>Hello world</h1>",
"type": "string"
},
"tailwindcss": {
"default": false,
"description": "Enables usage of TailwindCSS for the HTML snippet",
"example": true,
"type": "boolean"
},
"type": {
"enum": [
"html"
],
"type": "string"
},
"width": {
"default": -1,
"description": "Desired text element width. A value of <code>-1</code> means inherits scenes or movie width",
"maximum": 1920,
"minimum": -1,
"type": "integer"
}
},
"required": [
"type",
"html"
],
"type": "object"
},
{
"$ref": "#/components/schemas/BaseElement"
},
{
"$ref": "#/components/schemas/VisualElement"
}
],
"description": "Creates a video recording or a screenshot of the provided HTML snippet",
"title": "HTML"
},
"image": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"src": {
"format": "uri",
"type": "string"
},
"type": {
"enum": [
"image"
],
"type": "string"
}
},
"type": "object"
},
{
"$ref": "#/components/schemas/VisualElement"
}
],
"title": "Image"
},
"movie": {
"additionalProperties": false,
"description": "Object defining the movie to be rendered",
"example": {
"comment": "MyProject",
"resolution": "640x360",
"scenes": [
{
"elements": [
{
"src": "https://example.com/path/to/my/video.mp4",
"type": "video"
}
]
}
]
},
"properties": {
"cache": {
"default": true,
"type": "boolean"
},
"comment": {
"description": "Used for adding your comments",
"type": "string"
},
"draft": {
"default": true,
"description": "Draft movies include a watermark. Check your plan how many draft and final movies you have",
"enum": [
true,
false
],
"type": "boolean"
},
"elements": {
"items": {
"discriminator": {
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/components/schemas/video"
},
{
"$ref": "#/components/schemas/image"
},
{
"$ref": "#/components/schemas/text"
},
{
"$ref": "#/components/schemas/html"
},
{
"$ref": "#/components/schemas/component"
},
{
"$ref": "#/components/schemas/template"
},
{
"$ref": "#/components/schemas/audio"
},
{
"$ref": "#/components/schemas/voice"
}
]
},
"type": "array"
},
"fps": {
"default": 25,
"description": "Frames per second",
"type": "integer",
"x-hidden": true
},
"height": {
"default": 360,
"example": 360,
"maximum": 1080,
"minimum": 50,
"type": "integer"
},
"quality": {
"default": "high",
"enum": [
"low",
"medium",
"high"
],
"type": "string"
},
"resolution": {
"enum": [
"sd",
"hd",
"full-hd",
"squared",
"instagram-story",
"instagram-feed",
"twitter-landscape",
"twitter-portrait"
],
"type": "string"
},
"scenes": {
"items": {
"$ref": "#/components/schemas/scene"
},
"type": "array"
},
"settings": {
"default": {},
"description": "Movie advanced settings",
"type": "object",
"x-hidden": true
},
"width": {
"default": 640,
"example": 640,
"maximum": 1920,
"minimum": 50,
"type": "integer"
}
},
"required": [
"scenes"
],
"title": "Movie",
"type": "object"
},
"scene": {
"additionalProperties": false,
"properties": {
"background-color": {
"default": "#000000",
"description": "A hexadecimal representation of a color or 'transparent'",
"example": "#FF0000",
"type": "string"
},
"cache": {
"default": true,
"type": "boolean"
},
"comment": {
"description": "Used for adding your comments",
"type": "string"
},
"duration": {
"default": -1,
"format": "float",
"type": "number"
},
"elements": {
"items": {
"discriminator": {
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/components/schemas/video"
},
{
"$ref": "#/components/schemas/image"
},
{
"$ref": "#/components/schemas/text"
},
{
"$ref": "#/components/schemas/html"
},
{
"$ref": "#/components/schemas/component"
},
{
"$ref": "#/components/schemas/audio"
},
{
"$ref": "#/components/schemas/voice"
}
]
},
"type": "array"
},
"transition": {
"additionalProperties": false,
"properties": {
"duration": {
"description": "Duration of the transition in seconds",
"example": 1.5,
"format": "float",
"type": "number"
},
"style": {
"default": "fade",
"enum": [
"fade",
"wipeleft",
"wiperight",
"wipeup",
"wipedown",
"slideleft",
"slideright",
"slideup",
"slidedown",
"circlecrop",
"rectcrop",
"distance",
"fadeblack",
"fadewhite",
"radial",
"smoothleft",
"smoothright",
"smoothup",
"smoothdown",
"circleopen",
"circleclose",
"vertopen",
"vertclose",
"horzopen",
"horzclose",
"dissolve",
"pixelize",
"diagtl",
"diagtr",
"diagbl",
"diagbr",
"hlslice",
"hrslice",
"vuslice",
"vdslice",
"hblur",
"fadegrays",
"wipetl",
"wipetr",
"wipebl",
"wipebr",
"squeezeh",
"squeezev",
"zoomin"
],
"example": "circleopen",
"type": "string"
},
"type": {
"default": "xfade",
"enum": [
"xfade"
],
"type": "string"
}
},
"type": "object"
}
},
"title": "Scene",
"type": "object"
},
"template": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"height": {
"default": -1,
"description": "Desired text element height, but can be overriden by the component defaults. A value of <code>-1</code> means inherits scenes or movie height",
"maximum": 1080,
"minimum": -1,
"type": "integer"
},
"settings": {
"description": "Settings to be passed to the component",
"type": "object"
},
"template": {
"description": "ID of the Component element. Check all available components at <a href='https://json2video.com/docs/resources/basic/'>https://json2video.com/docs/resources/basic/</a>",
"example": "basic/001",
"type": "string"
},
"type": {
"enum": [
"template"
],
"type": "string"
},
"width": {
"default": -1,
"description": "Desired text element width, but can be overriden by the component defaults. A value of <code>-1</code> means inherits scenes or movie width",
"maximum": 1920,
"minimum": -1,
"type": "integer"
}
},
"required": [
"type",
"template"
],
"type": "object"
},
{
"$ref": "#/components/schemas/BaseElement"
},
{
"$ref": "#/components/schemas/VisualElement"
}
],
"description": "Creates an element based on the specified feature",
"title": "Template"
},
"text": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"height": {
"default": -1,
"description": "Desired text element height, but can be overriden by the style defaults. A value of <code>-1</code> means inherits scenes or movie height",
"maximum": 1080,
"minimum": -1,
"type": "integer"
},
"settings": {
"default": {},
"description": "Text formatting settings. In general, these are CSS properties such as <code>font-size</code>, <code>colour</code> or <code>font-weight</code>. See the styles to confirm which properties are available.",
"example": {
"color": "#FF0000",
"font-size": "60px"
},
"type": "object"
},
"style": {
"default": "001",
"description": "Style of the text element. Check all available text style at <a href='https://json2video.com/docs/resources/text/'>https://json2video.com/resources/text/</a>",
"example": "003",
"type": "string"
},
"text": {
"description": "Text to be printed. The text string does not accept HTML formatting.",
"example": "Lorem ipsum dolor sit amet",
"type": "string"
},
"type": {
"enum": [
"text"
],
"type": "string"
},
"width": {
"default": -1,
"description": "Desired text element width, but can be overriden by the style defaults. A value of <code>-1</code> means inherits scenes or movie width",
"maximum": 1920,
"minimum": -1,
"type": "integer"
}
},
"required": [
"type",
"text"
],
"type": "object"
},
{
"$ref": "#/components/schemas/BaseElement"
},
{
"$ref": "#/components/schemas/VisualElement"
}
],
"description": "Creates a text element of a given style",
"title": "Text"
},
"video": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"src": {
"description": "URL to the asset file. Videos can be in MP4, MKV, MOV but MP4 is recommended.",
"format": "uri",
"type": "string"
},
"type": {
"enum": [
"video"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
{
"$ref": "#/components/schemas/BaseElement"
},
{
"$ref": "#/components/schemas/VisualElement"
},
{
"additionalProperties": false,
"properties": {
"loop": {
"description": "Sets the number of loops the video to play. Use -1 for an infinite loop. The default value of 1 plays the video just once.",
"example": -1,
"minimum": -1,
"type": "integer"
}
},
"type": "object"
},
{
"$ref": "#/components/schemas/AudioElement"
}
],
"title": "Video"
},
"voice": {
"allOf": [
{
"additionalProperties": false,
"properties": {
"text": {
"description": "The sentence or sentences to be converted to voice audio",
"type": "string"
},
"type": {
"enum": [
"voice"
],
"type": "string"
},
"voice": {
"default": "en-GB-LibbyNeural",
"description": "The voice name to be used. Check <a href=\"/docs/tutorial/voice-elements/\">available voices</a>.",
"type": "string"
}
},
"required": [
"type",
"text"
],
"type": "object"
},
{
"$ref": "#/components/schemas/BaseElement"
},
{
"$ref": "#/components/schemas/AudioElement"
}
],
"description": "Creates a voice audio element from the provided text",
"title": "Voice"
}
}
}
}