Introduction
Welcome to the Renderforest API!
API and SDK
Renderforest has public REST API and two SDKs for NodeJS and PHP. We strongly recommend interacting with Renderforest platform via SDK ONLY! API is new and is subject to frequent changes, thus we guarantee stable work of SDKs as the only way to avoid breaking changes in API.
How to get API key?
Once user buys a subscription plan that has API enabled, user can navigate to API page in his dashboard and generate API key from there. If user wants to organize process, test application or create prototype before making final decision to buy subscription plan, he can send us an email with details of his project (Company size, API use case, backend technology they want to integrate with). After reviewing we can provide API Key for testing purposes.
Can I use SDK in front-end?
No. All SDKs that we provide are for backend. You should keep your API Key very carefully. Right now there is no way to connect to RenderForest API from front end part. All interactions will be done with following procedure: Your Front-End -> Your Back End -> RenderForest SDK -> Your Backend -> Your Front End. So users will not see RenderForest API calls or anything related to our platform, they will only interact with your front-end and back-end systems directly.
Can I use Node Js SDK with TypeScript?
Yes.
Do I need a subscription plan to use SDK?
Users with no active subscription plan, can ask for API key (see how to get API key section) and test SDK, try functions, create project, make all necessary workflow for integration. But, you cannot make a rendering via API unless you have an active subscription plan.
Can I upload my images and videos via API?
No. There is no API for uploading images and videos. We think that that’s an unnecessary duplication of content, you can use absolute URLs of your assets in our projects. Moreover you can use temporary (hashed) URLs and use them in projects to make sure high level of security.
Can I user RenderForest template’s descriptions and preview images/videos?
No. It is strongly prohibited by License Agreement. If you want to showcase templates on your website, you should create new videos, images and come up with different name and description for templates.
Here is a list of methods that our API supports:
Projects API
- Get All Projects
- Add Project
- Get Trial Project
- Get a Specific Project
- Update the Project (partial update)
- Delete a Specific Project
- Delete a Specific Project Videos
- Apply Template Preset on the Project
- Duplicate the Project
- Render the Project
- Get rendering status
Projects-data API
- Get Project-data
- Update Project-data (partial update)
Sounds API
- Get All Sounds
- Get Recommended Sounds
Supports API
- Add Supports Ticket
Templates API
- Get All Templates
- Get Templates Categories
- Get a Specific Template
- Get Color-Presets of the Template
- Get Pluggable-Screens of the Template
- Get Recommended-Custom-Colors of the Template
- Get Template-Presets of the Template
- Get SVG Content of the Template
- Get Theme of the Template
- Get Transitions of the Template
Users API
- Get Current User
SDK's
Renderforest provides the following list of SDK's:
Authentication
To authorize, use this code:
# With shell, you can just pass the correct header with each request
curl "https://example.com/api/v1/..."
-H "Authorization: 'mock-authorization'"
Make sure to replace
mock-authorization
with one you have to generate.
Renderforest uses authorization string to allow access to the API.
Renderforest expects for the authorization string to be included in API requests to the server in a header that looks like the following:
Authorization: 'mock-authorization'
Rate Limiting
Rate limiting
is applied to all Renderforest endpoints. Time window and maximum number of
requests are the same for all endpoints.
Time Window and Maximum Number of Requests
Rate limits are provided for 5
minute intervals.
The maximum number of requests per time window is 60
.
HTTP Headers
The following headers are applied to the response:
Header | Description |
---|---|
X-RateLimit-Limit | The number of requests permitted to make per time window |
X-RateLimit-Remaining | The number of requests remaining in the current time window |
X-RateLimit-Reset | UNIX timestamp detailing when the rate limit will reset |
Projects
Get All Projects
curl "https://api.renderforest.com/api/v1/projects?limit=2&offset=10&includeApiProjects=true&order=DESC&orderBy=order&search=yourSearch"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getProjects({
limit: 2,
offset: 10,
includeApiProjects: false,
order: 'DESC',
orderBy: 'order',
search: ''
})
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'limit' => 2,
'offset' => 10,
'includeApiProjects' => 'true',
'order' => 'DESC',
'orderBy' => 'order',
'search' => 'your search'
];
try {
$projects = $renderforest->getProjects($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($projects); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 5000295,
"templateId": 768,
"title": "Flipping Slideshow",
"customTitle": "Aland Island 2016",
"status": "rend",
"createdAt": "2018-02-12T15:56:35.000Z",
"updatedAt": "2018-02-12T16:00:37.000Z",
"privacy": "UNLISTED",
"api": false,
"renderedQualitiesOrder": [],
"renderedQualities": {
"free": null,
"hd360": null,
"hd720": null,
"hd1080": null
},
"renders": {
"free": null,
"hd360": null,
"hd720": null,
"hd1080": null
},
"templateThumbnail": "https://example.com/media/Screens_2017/4_gen_2017/Flipping_Slideshow_4gen/e6c16f5e-093b-4255-9fd3-19825b8acb48.jpg",
"projectThumbnail": null,
"rendering": {
"renderQueueId": 3995088,
"renderQueueState": "ready",
"renderQueueQuality": 360,
"renderQueueAvgTime": 2
}
},
{
"id": 4703232,
"templateId": 958,
"title": "Fabric Logo Reveal",
"customTitle": "Brains LLC - Logo",
"status": "rend",
"createdAt": "2017-11-13T07:11:02.000Z",
"updatedAt": "2017-11-13T10:12:39.000Z",
"privacy": "PRIVATE",
"api": false,
"renderedQualitiesOrder": ["hd1080", "hd360"],
"renderedQualities": {
"free": null,
"hd360": "https://example.com/api/v1/projects/4703232/download?key=08e1de3539a584662ffc3641a8144eaa:0d511ee6add2d68dc088292ed5a8039b69265c1d2eeb2374a81102005c99b2d3",
"hd720": null,
"hd1080": "https://example.com/api/v1/projects/4703232/download?key=3debf45cb668d0db53ac01e45ba7fdc9:730a18e7a79cf5fde17443f95980c55048c619730074f84fb8186b83c4a8ccd404d29da98c639ffaeac98321c0c8f201"
},
"renders": {
"free": null,
"hd360": {
"url": "https://example.com/api/v1/projects/4703232/download? key=08e1de3539a584662ffc3641a8144eaa:0d511ee6add2d68dc088292ed5a8039b69265c1d2eeb2374a81102005c99b2d3",
"date": "2017-11-11T10:12:39.000Z"
},
"hd720": null,
"hd1080": {
"url": "https://example.com/api/v1/projects/4703232/download?key=3debf45cb668d0db53ac01e45ba7fdc9:730a18e7a79cf5fde17443f95980c55048c619730074f84fb8186b83c4a8ccd404d29da98c639ffaeac98321c0c8f201",
"date": "2017-11-12T10:12:39.000Z"
}
},
"templateThumbnail": "https://example.com/media/Screens_2017/%20Logo_animation/Fabric_Logo_Reveal/bcd084f9-20c0-49b6-96c9-4ddab279eaf4.jpg",
"projectThumbnail": "https://example.com/1469277_4703232/capture.png"
}
]
}
This endpoint retrieves the projects.
The total number of entities is exposed as HTTP header in the response:
X-Total-Count: 470
HTTP Request
GET https://api.renderforest.com/api/v1/projects
Query Parameters
Parameter | Required | Default | Description | Options |
---|---|---|---|---|
limit | ✘ | 20 | Restricts the number of projects to be retrieved. | |
offset | ✘ | 0 | The number of offset to be applied. | |
includeApiProjects | ✘ | false | Includes projects created via API. | |
order | ✘ | DESC | Arranges projects in ascending or descending order. | DESC ASC |
orderBy | ✘ | order | Arranges projects by order or date property. | order date |
search | ✘ | ✘ | Searches for projects by specified title. |
Add Project
curl "https://api.renderforest.com/api/v1/projects"
-X POST -d '{"templateId": 701}'
-H "Content-Type: application/json"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.addProject(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'templateId' => 701
];
try {
$addProject = $renderforest->addProject($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($addProject); // handle the success
The above command returns JSON structured like this:
{
"status": 201,
"message": "Created",
"data": {
"projectId": 5000658
}
}
This endpoint creates a project.
HTTP Request
POST https://api.renderforest.com/api/v1/projects
Body Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The template Id. |
Get Trial Project
curl "https://api.renderforest.com/api/v1/projects/trial?templateId=701"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTrialProject(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$trialProject = \Renderforest\Client::getTrialProject($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
var_dump($e); // handle the error
}
var_dump($trialProject); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"data": {
"templateId": 701,
"title": "Explainer Video Toolkit",
"duration": 0,
"equalizer": false,
"isLego": true,
"extendableScreens": true,
"fps": 24,
"templateVersion": 346,
"projectColors": [
"e8fbff",
"ffffff",
"34495e",
"a2c4d0",
"eaa035",
"14a98b",
"cb463f",
"f6ad44",
"2d85ab",
"ac2f51"
],
"screens": [],
"projectVersion": "3.1.0",
"styles": {
"theme": "1"
},
"fonts": {
"defaults": {
"0": {
"id": 1383,
"name": "Default",
"characterSize": 20
},
"1": {
"id": 933,
"name": "Default",
"characterSize": 21
}
},
"selected": {
"0": {
"id": 1383,
"name": "Default",
"characterSize": 20
},
"1": {
"id": 933,
"name": "Default",
"characterSize": 21
}
}
},
"muteMusic": false,
"currentScreenId": null,
"sounds": [],
"voiceOver": {},
"generator": "renderforest/api/1.6.0"
}
}
}
This endpoint retrieves a trial project. Designed to allow the user to make a project (trial - without saving) before
getting logged in to get an overall idea.
The data can be used later to create real project (create project, update project-data with this data).
No authorization is required for this endpoint.
HTTP Request
GET https://api.renderforest.com/api/v1/projects/trial
Query Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The id of the template. |
Get a Specific Project
curl "https://api.renderforest.com/api/v1/projects/5000295"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getProject(5000295)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 5000295
];
try {
$project = $renderforest->getProject($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($project); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"id": 5000295,
"templateId": 768,
"title": "Flipping Slideshow",
"customTitle": "Aland Island 2016",
"status": "rend",
"createdAt": "2018-02-12T15:56:35.000Z",
"updatedAt": "2018-02-12T16:00:37.000Z",
"privacy": "UNLISTED",
"api": false,
"renderedQualitiesOrder": ["hd360", "hd720"],
"renderedQualities": {
"free": null,
"hd360": "https://example.com/api/v1/projects/5000295/download?key=4238f562985783e03805238734182ab1:0e654e569eb41d2f81ef9e10ec65bfca4cb5ae42610171ff8cef49944aa8f2e68d3b39ffe166b94417d029eec7367d73",
"hd720": "https://example.com/api/v1/projects/5000295/download?key=44d6fe9e1f0b5b1def01c74a964ec2ab:34f2e070fb4ee85460cf65bd3e0ee3007b7ac7210df95717552645ab6fbdcbe8fe2da81227fb877ed3ff33b3a84a1ea1",
"hd1080": null
},
"renders": {
"free": null,
"hd360": {
"url": "https://example.com/api/v1/projects/5000295/download?key=4238f562985783e03805238734182ab1:0e654e569eb41d2f81ef9e10ec65bfca4cb5ae42610171ff8cef49944aa8f2e68d3b39ffe166b94417d029eec7367d73",
"date": "2018-02-12T16:00:37.000Z"
},
"hd720": {
"url": "https://example.com/api/v1/projects/5000295/download?key=44d6fe9e1f0b5b1def01c74a964ec2ab:34f2e070fb4ee85460cf65bd3e0ee3007b7ac7210df95717552645ab6fbdcbe8fe2da81227fb877ed3ff33b3a84a1ea1",
"date": "2018-02-12T16:00:37.000Z"
},
"hd1080": null
},
"templateThumbnail": "https://example.com/media/Screens_2017/4_gen_2017/Flipping_Slideshow_4gen/e6c16f5e-093b-4255-9fd3-19825b8acb48.jpg",
"projectThumbnail": null,
"rendering": {
"renderQueueId": 3995088,
"renderQueueState": "ready",
"renderQueueQuality": 360,
"renderQueueAvgTime": 2
}
}
}
This endpoint retrieves a specific project.
HTTP Request
GET https://api.renderforest.com/api/v1/projects/<projectId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The Id of the project to get. |
Update the Project (partial update)
curl "https://api.renderforest.com/api/v1/projects/5000658"
-X PATCH -d '{"customTitle": "Graduation"}'
-H "Content-Type: application/json"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.updateProjectPartial(5000658, { customTitle: 'Graduation' })
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 5000658,
'customTitle' => 'mock-customTitle'
];
try {
$updateProject = $renderforest->updateProjectPartial($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($updateProject); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"projectId": 5000658
}
}
This endpoint updates the project (partial update).
HTTP Request
PATCH https://api.renderforest.com/api/v1/projects/<projectId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The Id of the project to update. |
Body Parameters
Parameter | Required | Default | Description |
---|---|---|---|
customTitle | ✘ | ✘ | The custom title of the project. |
privacy | ✘ | ✘ | The privacy option of the project. |
Delete a Specific Project
curl "https://api.renderforest.com/api/v1/projects/5000658"
-X DELETE
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.deleteProject(5000658)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 5000658
];
try {
$deleteProject = $renderforest->deleteProject($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($deleteProject); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"affectedRows": 1
}
}
This endpoint deletes a specific project.
HTTP Request
DELETE https://api.renderforest.com/api/v1/projects/<projectId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The Id of the project to delete. |
Delete a Specific Project Videos
curl "https://api.renderforest.com/api/v1/projects/5000658/videos/360"
-X DELETE
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.deleteProjectVideos(4120385, 360)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 5000658,
'quality' => 360
];
try {
$deleteProjectVideos = $renderforest->deleteProjectVideos($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($deleteProjectVideos); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"affectedRows": 1
}
}
This endpoint deletes all rendered videos of a specific project or a single video if quality provided.
HTTP Request
DELETE https://api.renderforest.com/api/v1/projects/<projectId>/videos/<quality>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The Id of the project to delete videos. |
quality | ✘ | ✘ | The quality of the video to be deleted. |
Apply Template Preset on the Project
curl "https://api.renderforest.com/api/v1/projects/5000658/apply-template-preset"
-X POST -d '{"presetId": 55}'
-H "Content-Type: application/json"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.applyTemplatePresetOnProject(5000658, 55)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 5000658,
'presetId' => 55
];
try {
$applyTemplatePresetOnProject = $renderforest->applyTemplatePresetOnProject($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($applyTemplatePresetOnProject); // handle the success
The above command returns JSON structured like this:
{
"status": 201,
"message": "Created",
"data": {
"projectId": 5000658
}
}
This endpoint applies template preset on the project.
HTTP Request
POST https://api.renderforest.com/api/v1/projects/{projectId}/apply-template-preset
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The project Id. |
Body Parameters
Parameter | Required | Default | Description |
---|---|---|---|
presetId | ✔ | ✘ | The preset Id. |
Duplicate the Project
curl "https://api.renderforest.com/api/v1/projects/5000658/duplicate"
-X POST
-H "Content-Type: application/json"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.duplicateProject(5000658)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 5000658
];
try {
$duplicateProject = $renderforest->duplicateProject($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($duplicateProject); // handle the success
The above command returns JSON structured like this:
{
"status": 201,
"message": "Created",
"data": {
"projectId": 500734
}
}
This endpoint duplicates the project.
HTTP Request
POST https://api.renderforest.com/api/v1/projects/{projectId}/duplicate
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The project Id. |
Render the Project
curl "https://api.renderforest.com/api/v1/projects/5000658/render"
-X POST -d '{"quality": 1080, "watermark": <your watermarkURL>}'
-H "Content-Type: application/json"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.renderProject(4120385, { quality: 360, watermark: 'https://example.com/watermark.png' })
.then(console.log) // handle the success
.catch(console.error) // handle the error
Renderforest.renderProject(4120386, { quality: 360, duration: 15, startSecond: 10 })
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 5000658,
'quality' => 1080,
'watermark' => 'https://example.com/watermark.png'
];
try {
$renderProject = $renderforest->renderProject($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($renderProject); // handle the success
The above command returns JSON structured like this:
{
"status": 201,
"message": "Created",
"data": {
"queueId": 5683170
}
}
This endpoint renders the project.
HTTP Request
POST https://api.renderforest.com/api/v1/projects/{projectId}/render
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The project Id. |
Body Parameters
Parameter | Required | Default | Description |
---|---|---|---|
quality | ✔ | ✘ | The quality of the render. |
watermark | ✘ | ✘ | The url of your watermark. |
duration | ✘ | ✘ | Duration in seconds to be rendered. |
startSecond | ✘ | ✘ | Start to render with specified second. |
Notification about project rendering status
Currently when project is rendered you get an email notification. As an alternative you can provide callback URL and get a notification request on it. To set callback URL navigate to your profile page
After setting callback URL you will get POST request on it each time your project rendering ends. The HTTP Request will have the following structure:
headers: { "Authorization": "hash-string" }
body: { project_id: number, queue_id: number, status: string['ok' | 'error'], timestamp: number quality: number message: string thumbnailUrl: string videoUrl: string }
Message field provides information about errors occurred during rendering process. It will be an empty string if rendering finishes without any errors. To make sure recieved request is made from Renderforest, you need to generate a string with the following pattern "project_id:queue_id:status:timestamp:API_KEY", calculate MD5 hash from that string and compare with Authorization header content.
Project-data
Get Project-data
curl "https://api.renderforest.com/api/v5/project-data/5180504"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getProjectData(7096113)
.then((projectDataInstance) => {
console.log('Project id:', projectDataInstance.getProjectId())
console.log('Template id:', projectDataInstance.getTemplateId())
console.log('Is equalizer:', projectDataInstance.isEqualizer())
console.log('Is lego:', projectDataInstance.isLego())
console.log('Title:', projectDataInstance.getTitle())
console.log('Mute music:', projectDataInstance.getMuteMusic())
console.log('Sounds:', projectDataInstance.getSounds())
console.log('Styles:', projectDataInstance.getStyles())
console.log('VoiceOver:', projectDataInstance.getVoiceOver())
console.log('Project colors:', projectDataInstance.getProjectColors())
console.log('Project duration:', projectDataInstance.getProjectDuration())
console.log('Screens:', projectDataInstance.getScreens())
const firstScreen = projectDataInstance.getScreen(0)
const firstAreaFirstScreen = firstScreen.getArea(0)
console.log('First screen area:', firstAreaFirstScreen)
})
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 7549843
];
try {
$projectDataInstance = $renderforest->getProjectData($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
echo 'Project id: ';
var_dump($projectDataInstance->getProjectId());
echo 'Template id: ';
var_dump($projectDataInstance->getTemplateId());
echo 'Is equalizer: ';
var_dump($projectDataInstance->isEqualizer());
echo 'Is lego: ';
var_dump($projectDataInstance->isLego());
echo 'Title: ';
var_dump($projectDataInstance->getTitle());
echo 'Mute music: ';
var_dump($projectDataInstance->getMuteMusic());
echo 'Sounds: ';
var_dump($projectDataInstance->getSounds());
echo 'Styles: ';
var_dump($projectDataInstance->getStyles());
echo 'VoiceOver: ';
var_dump($projectDataInstance->getVoiceOver());
echo 'Project colors: ';
var_dump($projectDataInstance->getProjectColors());
echo 'Screens: ';
var_dump($projectDataInstance->getScreens());
$screens = $projectDataInstance->getScreens();
echo 'Areas: ';
var_dump($screens[1]['getAreas']());
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"projectId": 5180504,
"data": {
"templateId": 1021,
"title": "3D Explainer Video Toolkit",
"duration": 15,
"equalizer": false,
"isLego": true,
"extendableScreens": false,
"fps": 30,
"templateVersion": 2208,
"projectColors": [
"ffb791",
"bcfff8",
"fffbef",
"ff8990",
"ffb791",
"fff4d4",
"8bebd4",
"1dbde5"
],
"screens": [
{
"id": 0,
"characterBasedDuration": true,
"compositionName": "49",
"duration": 5,
"extraVideoSecond": 0,
"iconAdjustable": 1,
"gifPath": "https://static.rfstat.com/media/templates/1021/screen_assets/49/animation_200.mp4",
"gifBigPath": "https://static.rfstat.com/media/templates/1021/screen_assets/49/animation_400.mp4",
"gifThumbnailPath": "https://static.rfstat.com/media/templates/1021/screen_assets/49/thumbnail.jpg",
"maxDuration": 16,
"order": 0,
"path": "https://static.rfstat.com/media/Screen_2018/4gen_2018/3d_explainer_video_toolkit/screen/3f5dd511-ca4a-4ea1-b34b-6ead240aa1b7.jpg",
"tags": "man, male, art, mobile, telephone, cheerful, creative, hobby, holding, photo, photographer, picture, shoot, taking, selfie, picture, image",
"title": "Man taking photos with his phone",
"type": 1,
"areas": [
{
"id": 3576153,
"cords": [509, 262, 994, 262, 994, 340, 509, 340],
"font": {
"type": 0,
"scale": 100
},
"height": 78,
"order": 1,
"title": "text1",
"type": "text",
"value": "",
"wordCount": 25,
"width": 485
}
],
"hidden": false,
"selectedDuration": 5
},
{
"id": 1,
"characterBasedDuration": false,
"compositionName": "346",
"duration": 10,
"extraVideoSecond": 0,
"iconAdjustable": 0,
"gifPath": "https://static.rfstat.com/media/templates/1021/screen_assets/346/5ea4d4b3-4246-4648-902d-5673aa9d6071.mp4",
"gifBigPath": "https://static.rfstat.com/media/templates/1021/screen_assets/346/d1b5e579-6ea1-4661-bc6b-7b39ea4f592b.mp4",
"gifThumbnailPath": "https://static.rfstat.com/media/templates/1021/screen_assets/346/596ee14b-647b-40be-bbb6-d90cb28c2fd1.jpg",
"maxDuration": 0,
"order": 1,
"path": "https://static.rfstat.com/media/Screen_2018/4gen_2018/3d_explainer_video_toolkit/screen/5b491b53-9494-46eb-bb5e-f0ae854a71dd.jpg",
"tags": "board, business, communication, conference, corporate, charts, debate, discussion, management, meeting, presentation, seminar, speaking, speech, teamwork, trainng, image, photograph, board, paper",
"title": "Boy showing his presentation / 2 image holders",
"type": 1,
"areas": [
{
"id": 3576552,
"cords": [374, 24, 738, 24, 738, 230, 374, 230],
"height": 206,
"order": 1,
"originalHeight": 1080,
"originalWidth": 1920,
"title": "photo4.jpg",
"type": "image",
"value": "",
"wordCount": 0,
"width": 364
},
{
"id": 3576553,
"cords": [495, 263, 956, 263, 956, 331, 495, 331],
"font": {
"type": 0,
"scale": 100
},
"height": 68,
"order": 2,
"title": "text1",
"type": "text",
"value": "",
"wordCount": 6,
"width": 461
},
{
"id": 3576554,
"cords": [682, 369, 1048, 369, 1048, 575, 682, 575],
"height": 206,
"order": 3,
"originalHeight": 1080,
"originalWidth": 1920,
"title": "photo5.jpg",
"type": "image",
"value": "",
"wordCount": 0,
"width": 366
}
],
"hidden": false
}
],
"projectVersion": "5.4.0",
"styles": {
"transition": "1",
"theme": "1"
},
"fonts": {
"defaults": {
"0": {
"id": 322,
"name": "Default",
"characterSize": 19
},
"1": {
"id": 322,
"name": "Default",
"characterSize": 19
}
},
"selected": {
"0": {
"id": 322,
"name": "Default",
"characterSize": 19
},
"1": {
"id": 322,
"name": "Default",
"characterSize": 19
}
}
},
"muteMusic": false,
"currentScreenId": 1,
"sounds": [],
"voiceOver": {},
"generator": "renderforest/api/2.5.0"
}
}
}
This endpoint retrieves a specific project-data.
HTTP Request
GET https://api.renderforest.com/api/v5/project-data/<projectId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The project Id. |
Update Project-data (partial update)
curl "https://api.renderforest.com/api/v5/project-data/7096113"
-X PATCH -d '{"muteMusic": "true"}'
-H "Content-Type: application/json"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getProjectData(7125672)
.then((projectDataInstance) =>
projectDataInstance.setMuteMusic(true)
.setStyles({ theme: '1', transition: '2' })
.setVoiceOver({ path: 'https://example.com/voice-ower.mp3' })
.save()
)
.catch(console.error)
// More complex examples you can find in SDK homepage.
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'projectId' => 7549843
];
function sample()
{
global $renderforest;
global $payload;
$projectDataInstance = $renderforest->getProjectData($payload);
// make some change
$projectDataInstance->setMuteMusic(true);
// get payload data
$projectId = $projectDataInstance->getProjectId();
$data = $projectDataInstance->getPatchObject();
$payloadForUpdate = [
'projectId' => $projectId,
'data' => $data
];
$result = $renderforest->updateProjectDataPartial($payloadForUpdate);
$projectDataInstance->resetPatchObject();
return $result;
}
try {
var_dump(sample()); // handle the success
} catch (Exception $e) {
var_dump($e); // handle the error
}
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"projectId": 7096113,
"duration": 123
}
}
This endpoint updates the project-data (partial update).
HTTP Request
PATCH https://api.renderforest.com/api/v5/project-data/<projectId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectId | ✔ | ✘ | The Id of the project-data to update. |
Body Parameters
Parameter | Required | Default | Description |
---|---|---|---|
currentScreenId | ✘ | ✘ | The current screen id of the project-data. |
duration | ✘ | ✘ | The duration of the project-data. |
generator | ✘ | ✘ | The generator of the project-data. |
muteMusic | ✘ | ✘ | The muteMusic of the project-data. |
styles | ✘ | ✘ | The styles of project-data. |
volume | ✘ | ✘ | The music and voiceover volumes of project-data. |
projectColors | ✘ | ✘ | The project colors of the project-data. |
simple | ✘ | ✘ | The simple of the project-data. |
sounds | ✘ | ✘ | The sounds of the project-data. |
voiceOver | ✘ | ✘ | The voiceOver of the project-data. |
fonts | ✘ | ✘ | The fonts of the project-data. |
watermark | ✘ | ✘ | The watermark of the project-data. |
screens | ✘ | ✘ | The screens of the project-data. |
Get Screen Snapshot
curl "https://preview.renderforest.com/api/v1/preview/generate"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require("@renderforest/sdk-node");
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getProjectData(15220886)
.then((projectDataInstance) => {
// Set the screen which snapshot must be returned.
projectDataInstance.setCurrentScreenId(0)
const projectData = projectDataInstance.getRawProjectData()
return Renderforest.getScreenSnapshot({ projectData })
})
.then(console.log)
.catch(console.error)
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$projectData = $renderforestClient->getProjectData(15220886);
// Set the screen which snapshot must be returned.
// Required only for lego templates.
$projectData->setCurrentScreenId(0);
$snapshotUrl = $renderforestClient->getScreenSnapshot($projectData);
echo 'Screen Snapshot - ' . $snapshotUrl . PHP_EOL;
The above command returns snapshot url.
'https://example.com/preview.jpg'
This endpoint retrieves a specific project-data.
HTTP Request
POST https://preview.renderforest.com/api/v1/preview/generate
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
projectData | ✔ | ✘ | The project data. |
Sounds
Get All Sounds
curl "https://api.renderforest.com/api/v1/sounds?duration=4"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getCompanySoundsLimited({ duration: 4 })
.then(console.log) // handle the success
.catch(console.error) // handle the error
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getSounds({ duration: 4 })
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$duration = 15;
try {
$companySoundsLimited = \Renderforest\Client::getCompanySoundsLimited($duration);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($companySoundsLimited); // handle the success
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$duration = 15;
try {
$sounds = $renderforest->getSounds($duration);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($sounds); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 62,
"duration": 7,
"genre": "funk",
"lowQuality": "https://example.com/mediahosting/file/Sounds/7_Second/418b36f2-19d1-4d94-8c47-5a1f60da339d.mp3",
"path": "https://usersounds.rfstat.com/Sounds/7%20Second/Beautiful%2520Day.mp3",
"title": "Beautiful Day"
},
{
"id": 726243,
"duration": 7,
"genre": "classical",
"lowQuality": "https://example.com/mediahosting/file/Sounds/7_Second/5aaba8e1-8b3d-4ca0-9956-eafe8ed2bc64.mp3",
"path": "https://example.com/mediahosting/file/Sounds/7_Second/fcb67cee-3142-4329-b19e-389fa1680aba.mp3",
"title": "Mellow Piano Notes"
}
]
}
This endpoint retrieves sounds given the duration.
The endpoint supports both authorized and unauthorized requests. If the authorization is not present, then response limits to 5.
HTTP Request
GET https://api.renderforest.com/api/v1/sounds
Query Parameters
Parameter | Required | Default | Description |
---|---|---|---|
duration | ✔ | ✘ | The result list of sounds will have greater or equal duration to this one. |
Get Recommended Sounds
curl "https://api.renderforest.com/api/v1/sounds/recommended?templateId=701&duration=5"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getRecommendedSoundsLimited(701, { duration: 5 })
.then(console.log) // handle the success
.catch(console.error) // handle the error
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getRecommendedSounds(701, { duration: 5 })
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$templateId = 701;
$duration = 30;
try {
$recommendedSoundsLimited = \Renderforest\Client::getRecommendedSoundsLimited($templateId, $duration);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($recommendedSoundsLimited); // handle the success
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$templateId = 701;
$duration = 30;
try {
$recommendedSounds = $renderforest->getRecommendedSounds($templateId, $duration);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
var_dump($e); // handle the error
}
var_dump($recommendedSounds); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 10018,
"duration": 7,
"genre": "rock",
"lowQuality": "https://example.com/hosting/file/Sounds/7%20Second/Adventure%207%20preview.mp3",
"path": "https://example/hosting/file/Sounds/7%20Second/Adventure%207.mp3",
"title": "Adventure"
},
{
"id": 10061,
"duration": 7,
"genre": "funk",
"lowQuality": "https://example.com/hosting/file/Sounds/7%20Second/Country%20Boy%207%20preview.mp3",
"path": "https://example.com/hosting/file/Sounds/7%20Second/Country%20Boy%207.mp3",
"title": "Country Boy"
}
]
}
This endpoint retrieves recommended sounds for the given template.
The endpoint supports both authorized and unauthorized requests. If the authorization is not present, then response limits to 5.
HTTP Request
GET https://api.renderforest.com/api/v1/sounds/recommended
Query Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
duration | ✔ | ✘ | The result list of sounds will have greater or equal duration to this one. |
Supports
Add Supports Ticket
curl "https://api.renderforest.com/api/v1/supports/ticket"
-X POST -d '{"message": "I need to...", "mailType": "Sales", "subject": "Some help in .."}'
-H "Content-Type: application/json"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.addSupportsTicket({
message: 'I need to...',
mailType: 'Creative team',
subject: 'Some help in ..'
})
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
$payload = [
'message' => 'I need to...',
'mailType' => 'Creative team',
'subject' => 'Some help in ..'
];
try {
$supportTicket = $renderforest->addSupportsTicket($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($supportTicket); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"ticketId": 12614,
"messageId": "<[email protected]>"
}
}
This endpoint creates supports ticket.
HTTP Request
POST https://api.renderforest.com/api/v1/supports/ticket
Body Parameters
Parameter | Required | Default | Description |
---|---|---|---|
message | ✔ | ✘ | The message of the ticket. |
mailType | ✔ | ✘ | The type of the ticket. |
subject | ✘ | ✘ | The subject of the ticket. |
Subscriptions
Get All Subscriptions
curl "https://api.renderforest.com/api/v1/subscription?status=active"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getSubscriptions({
status: 'active' //can be either 'active' or 'closed'
})
.then(console.log) // handle the success
.catch(console.error) // handle the error
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 265,
"hdMax": 1080,
"credits": 40,
"hd720Videos": 40,
"hd1080Videos": 20,
"videoUnlimited": false,
"videoLimitUpdateCount": 20,
"startDate": "2020-01-16T07:34:34.632Z",
"endDate": "2020-11-16T07:34:34.632Z",
"tariffId": 2,
"title": "Pro",
"orderNumber": "7346273649230",
"gateway": "paddle",
"logoLimit": 50,
"logoUnlimited": false,
"logoMaxTypeId": 4,
"logoLimitUpdateCount": 10,
"mockupLimit": 100,
"mockupUnlimited": false,
"mockupLimitUpdateCount": 50,
"siteLimit": 1,
"siteUnlimited": false,
"siteLimitUpdateCount": 1,
"status": "open",
"recurring": "active",
"creditRate": 2,
"type": "all",
"noWatermark": true
}
]
}
<?php
This endpoint retrieves the subscriptions.
HTTP Request
GET https://api.renderforest.com/api/v1/subscriptions
Query Parameters
Parameter | Required | Default | Description | Options |
---|---|---|---|---|
status | ✘ | active | Status of subscription. | active closed |
Get a Specific Subscription
curl "https://api.renderforest.com/api/v1/subscriptions/122"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: '<signKey>', clientId: -1 })
Renderforest.getSubscription(122)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"id": 265,
"hdMax": 1080,
"credits": 40,
"hd720Videos": 40,
"hd1080Videos": 20,
"videoUnlimited": false,
"videoLimitUpdateCount": 20,
"startDate": "2020-01-16T07:34:34.632Z",
"endDate": "2020-11-16T07:34:34.632Z",
"tariffId": 2,
"title": "Pro",
"orderNumber": "7346273649230",
"gateway": "paddle",
"logoLimit": 50,
"logoUnlimited": false,
"logoMaxTypeId": 4,
"logoLimitUpdateCount": 10,
"mockupLimit": 100,
"mockupUnlimited": false,
"mockupLimitUpdateCount": 50,
"siteLimit": 1,
"siteUnlimited": false,
"siteLimitUpdateCount": 1,
"status": "open",
"recurring": "active",
"creditRate": 2,
"type": "all",
"noWatermark": true
}
}
}
This endpoint retrieves a specific subscription.
HTTP Request
GET https://api.renderforest.com/api/v1/subscriptions/<subscriptionId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
subscriptionId | ✔ | ✘ | The Id of the subscription to get. |
Templates
No authorization is required for ./templates
API's.
Get All Templates
curl "https://api.renderforest.com/api/v1/templates?categoryId=3&equalizer=false&limit=4&offset=10"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplates({
categoryId: 3,
equalizer: false,
limit: 4,
offset: 10
})
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'categoryId' => 3,
'equalizer' => 'false',
'limit' => 4,
'offset' => 10
];
try {
$templates = \Renderforest\Client::getTemplates($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templates); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 912,
"description": "Have you ever looked for a template that have enough elements and functionality to deliver your message? Well, welcome to the big family of icons. This is a huge pack of 2000+animated icons in more than 30 different categories. With business, marketing, finance and promotional icons the pack is perfect for advertisement, software, websites, apps, corporate, company projects, personal videos and a lot more. Browse through the well-organized library to build the story you wish. Come away with a unique project today! It’s free!",
"thumbnail": "https://example.com/media/Screens_2017/4_gen_2017/Ultimate-Icon-Animation-Pack/249c8f83-3f4a-4474-ade0-490bb5ca0d5a.jpg",
"title": "Ultimate Icon Animation Pack",
"videoUrl": "//player.vimeo.com/video/248458512",
"video": true
},
{
"id": 701,
"description": "Get rid of the boring content and inspiration killers. Amaze your audience and create a fascinating video with the help of our super functional Explainer Video Toolkit. More than 400 interactive scenes, including characters, various items, kinetic typography, video and photo holders and more. It's the largest directory of astonishing animations from various fields, breathtaking music library and up to 30 minutes successful project initiative.",
"thumbnail": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Screen/tumb400.jpg",
"title": "Explainer Video Toolkit",
"videoUrl": "//player.vimeo.com/video/190349594",
"video": true
},
{
"id": 942,
"description": "Instead of boring your audience, develop a certain connection with your audience through the cutting edge and unique style of Futuristic Cube Presentation. Give your projects a different look and let them stand out with high tech design. Perfect for corporate and company presentations, business promos, product advertisement and a lot more. Just add a touch of creativity: upload your images, alter the text, add music and the way towards success is ready. Simple, clean and modern. It’s free!",
"thumbnail": "https://example.com/media/Screens_2017/4_gen_2017/Futuristic_Cube_Presentation/ac13db59-5751-4c64-bc04-810e0112502a.jpg",
"title": "Futuristic Cube Presentation",
"videoUrl": "//player.vimeo.com/video/240152695",
"video": false
},
{
"id": 816,
"description": "Use our new and innovative 'My business Promotion' template to present your company or service to your customers. It features a slick and clean look, modern style and advanced, high quality motion graphics to drive your sales over the roof! Music and sound effects are created specifically for this template. Simply upload your company logo and enjoy the perfect representation of your business or service. Try a free preview today.",
"thumbnail": "https://example.com/media/Screens_2017/Promotion/my-business-promotion/766f703e-0bbf-4dc6-b845-09d3a81f7eb8.jpg",
"title": "My Business Promotion",
"videoUrl": "//player.vimeo.com/video/211478094",
"video": false
}
]
}
This endpoint retrieves all templates.
HTTP Request
GET https://api.renderforest.com/api/v1/templates
Query Parameters
Parameter | Required | Default | Description |
---|---|---|---|
categoryId | ✘ | ✘ | The Id of the template category. |
equalizer | ✘ | ✘ | Retrieves only equalizer templates or eliminates equalizer templates. |
limit | ✘ | 20 | Restricts the number of templates to be retrieved. |
offset | ✘ | 0 | The number of offset to be applied. |
Get Templates Categories
curl "https://api.renderforest.com/api/v1/templates/categories?language=en"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplatesCategories({ language: 'en' })
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'language' => 'en'
];
try {
$templateCategories = \Renderforest\Client::getTemplatesCategories($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templateCategories); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 3,
"title": "Promotional",
"parentId": 1,
"subcategories": [
{
"id": 8,
"title": "Mobile App Promotion",
"parentId": 3
},
{
"id": 47,
"title": "Video Editing",
"parentId": 3
}
]
},
{
"id": 19,
"title": "Intros and Logos",
"parentId": 1,
"subcategories": [
{
"id": 20,
"title": "3D Logo Reveals",
"parentId": 19
},
{
"id": 21,
"title": "Clean Logo Reveals",
"parentId": 19
}
]
}
]
}
This endpoint retrieves templates categories.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/categories
Query Parameters
Parameter | Required | Default | Description |
---|---|---|---|
language | ✘ | en | The language ISO 639-1 Code |
Get a Specific Template
curl "https://api.renderforest.com/api/v1/templates/701?language=en"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplate(701, { language: 'en' })
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701,
'language' => 'en'
];
try {
$template = \Renderforest\Client::getTemplate($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($template); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"id": 701,
"description": "Get rid of the boring content and inspiration killers. Amaze your audience and create a fascinating video with the help of our super functional Explainer Video Toolkit. More than 400 interactive scenes, including characters, various items, kinetic typography, video and photo holders and more. It's the largest directory of astonishing animations from various fields, breathtaking music library and up to 30 minutes successful project initiative.",
"duration": 0,
"rendCount": 96940,
"thumbnail": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Screen/tumb400.jpg",
"title": "Explainer Video Toolkit",
"videoUrl": "//player.vimeo.com/video/190349594",
"video": true,
"categories": [
{
"id": 18,
"projectId": 3,
"title": "Other Promotional Videos"
},
{
"id": 15,
"projectId": 3,
"title": "Christmas"
},
{
"id": 9,
"projectId": 3,
"title": "Product or Service Promotion"
},
{
"id": 10,
"projectId": 3,
"title": "Company Presentation"
},
{
"id": 11,
"projectId": 3,
"title": "Infographics"
},
{
"id": 3,
"projectId": 1,
"title": "Promotional"
},
{
"id": 38,
"projectId": 5,
"title": "Colorful Typography"
},
{
"id": 36,
"projectId": 5,
"title": "Clean Typography"
},
{
"id": 6,
"projectId": 1,
"title": "Featured"
},
{
"id": 5,
"projectId": 1,
"title": "Typography"
}
],
"durations": [ ]
}
}
This endpoint retrieves a specific template.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/<templateId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template to retrieve. |
Query Parameters
Parameter | Required | Default | Description |
---|---|---|---|
language | ✘ | en | The language ISO 639-1 Code |
Get Color-Presets of the Template
curl "https://api.renderforest.com/api/v1/templates/701/color-presets"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplateColorPresets(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$getTemplateColorPresets = \Renderforest\Client::getTemplateColorPresets($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($getTemplateColorPresets); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
[
"#e8fbff",
"#ffffff",
"#34495e",
"#a2c4d0",
"#eaa035",
"#14a98b",
"#cb4624",
"#f6ad44",
"#2d85ab",
"#ac2f51"
],
[
"#7dcf81",
"#d85252",
"#000000",
"#fff77c",
"#ffffff",
"#b67ea8",
"#424acf",
"#affff8",
"#096c0f",
"#ffaa64"
],
[
"#bfb9ff",
"#fffa88",
"#0b2b35",
"#4a134d",
"#e7e7b9",
"#ffe5ef",
"#a73e3e",
"#ffffff",
"#4b2663",
"#75c4a7"
]
]
}
This endpoint retrieves color-presets of the template.
You can apply these color presets to your project to give it better and unique look.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/<templateId>/color-presets
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
Get Pluggable-Screens of the Template
curl "https://api.renderforest.com/api/v1/templates/701/pluggable-screens"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplatePluggableScreens(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$templatePluggableScreens = \Renderforest\Client::getTemplatePluggableScreens($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templatePluggableScreens); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 104,
"name": "Characters",
"order": 1,
"screens": [
{
"id": 2125620,
"characterBasedDuration": true,
"compositionName": "191_man_Angry_2",
"duration": 5,
"extraVideoSecond": 0,
"iconAdjustable": 0,
"gifPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/191_man_Angry_2_1.gif",
"gifBigPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/Big-Gif/191_man_Angry_2_1.gif",
"gifThumbnailPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/Gif-thumb/191_man_Angry_2_n.jpg",
"maxDuration": 15,
"order": 1900,
"path": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Screen/191_man_Angry_2_n.jpg",
"tags": "business, computer, chair, desk, laptop, mobile phone, occupation, office, worker, arms, boss, boy, businessman,chef, company, employer, professional",
"title": "Angry Office worker with arms crossed",
"type": 1,
"areas": [
{
"id": 3562168,
"cords": [ 656, 224, 1048, 224, 1048, 332, 656, 332 ],
"height": 108,
"order": 0,
"title": "char_Angry_2",
"type": "text",
"value": "type your text here",
"width": 392,
"wordCount": 40
}
]
},
{
"id": 2125592,
"characterBasedDuration": true,
"compositionName": "195_man_Show_text",
"duration": 4,
"extraVideoSecond": 0,
"iconAdjustable": 0,
"gifPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/195_man_Show_text.gif",
"gifBigPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/Big-Gif/195_man_Show_text.gif",
"gifThumbnailPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/Gif-thumb/195_man_Show_text%20.jpg",
"maxDuration": 14,
"order": 1940,
"path": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Screen/195_man_Show_text%20.jpg",
"tags": "agent, boss, business, businessman, character, corporate, employee, necktie, office, pointing, presentation, professional, showing, teaching, tie, worker,",
"title": "Scene with office worker showing text with index finger",
"type": 1,
"areas": [
{
"id": 3562130,
"cords": [ 555, 245, 1018, 245, 1018, 313, 555, 313 ],
"height": 68,
"order": 0,
"title": "manshow_text",
"type": "text",
"value": "type your text here",
"width": 463,
"wordCount": 30
}
]
}
]
},
{
"id": 105,
"name": "Image Holders",
"order": 30,
"screens": [
{
"id": 2125624,
"characterBasedDuration": false,
"compositionName": "192_man_Show_Photo_1",
"duration": 6,
"extraVideoSecond": 0,
"iconAdjustable": 0,
"gifPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/192_man_Show_Photo_1_1.gif",
"gifBigPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/Big-Gif/192_man_Show_Photo_1_1.gif",
"gifThumbnailPath": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Gif/Gif-thumb/192_man_Show_Photo_1_n.jpg",
"maxDuration": 0,
"order": 1910,
"path": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/Screen/192_man_Show_Photo_1_n.jpg",
"tags": "agent, boss, business, businessman, character, corporate, employee, necktie, office, pointing, presentation, professional, showing, teaching, tie, worker,",
"title": "Scene with office worker pointing out the image /1 image holder ",
"type": 1,
"areas": [
{
"id": 3562175,
"cords": [ 604, 152, 943, 152, 943, 341, 604, 341 ],
"height": 189,
"order": 0,
"originalHeight": 563,
"originalWidth": 936,
"title": "28.jpg",
"type": "image",
"value": "28.jpg",
"width": 339,
"wordCount": 0
},
{
"id": 3562176,
"cords": [ 598, 371, 966, 371, 966, 470, 598, 470 ],
"height": 99,
"order": 0,
"title": "man_Show_Photo_1",
"type": "text",
"value": "type your text here",
"width": 368,
"wordCount": 10
}
]
}
]
}
]
}
This endpoint retrieves pluggable-screens of the template.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/<templateId>/pluggable-screens
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
Get Recommended-Custom-Colors of the Template
curl "https://api.renderforest.com/api/v1/templates/701/recommended-custom-colors"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplateRecommendedCustomColors(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$templateRecommendedCustomColors = \Renderforest\Client::getTemplateRecommendedCustomColors($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templateRecommendedCustomColors); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
[
{
"id": 80,
"hexCode": "F1FBFF",
"index": 0,
"description": "Background Color",
"title": "Explainer Video Toolkit Color 1"
},
{
"id": 91,
"hexCode": "FCFEE6",
"index": 0,
"description": "Background Color",
"title": "Light Yellow Background"
}
],
[
{
"id": 38,
"hexCode": "e0e0e0",
"index": 1,
"description": "Primary Icon",
"title": "Grey"
},
{
"id": 44,
"hexCode": "f6f5e8",
"index": 1,
"description": "Primary Icon",
"title": "Pale Yellow"
}
]
]
}
This endpoint retrieves recommended-custom-colors of the template.
You can apply these recommended custom colors to your project to give it better and unique look.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/<templateId>/recommended-custom-colors
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
Get Template-Presets of the Template
curl "https://api.renderforest.com/api/v1/templates/701/template-presets"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplatePresets(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$templatePresets = \Renderforest\Client::getTemplatePresets($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templatePresets); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 55,
"templateId": 701,
"projectId": 1518012,
"description": "Get rid of the boring content and inspiration killers. Create your Social media promotion video with one click. Adjust, amend the preset in accordance with your needs and company's profile. ",
"order": 700,
"public": true,
"thumbnail": "https://static.rfstat.com/media/Thumbnails/Presets/2017/explainer-video-toolkit/b85890da-7749-44ed-b109-0f475b143ad7.png",
"title": "Social media promotion video",
"videoUrl": "//player.vimeo.com/video/215435347",
"createdAt": "2017-05-01T18:52:25.475Z",
"updatedAt": "2017-10-09T07:39:00.628Z"
},
{
"id": 2,
"templateId": 701,
"projectId": 855446,
"description": "Company promotion is a great preset to promote companies of all sizes. Features a character animation, rich and enhanced visuals and kinetic typography. You can add new scenes from our collection of 300+ scenes or remove the scenes you dont like. Colors and music are adjustable to match your own branding needs. ",
"order": 120,
"public": true,
"thumbnail": "https://static.rfstat.com/media/Thumbnails/Presets/2017/explainer-video-toolkit/company-promotion.jpg",
"title": "Company Promotion",
"videoUrl": "//player.vimeo.com/video/190230714",
"createdAt": "2016-11-04T20:50:13.056Z",
"updatedAt": "2016-11-05T06:39:47.075Z"
}
]
}
This endpoint retrieves template-presets of the template.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/<templateId>/template-presets
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
Get Template SVG content of template
curl "https://www.renderforest.com/api/v1/templates/termplatesvg/<templateId>"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplateSVGContent(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$templatePresets = \Renderforest\Client::getTemplateSVGContent($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templatePresets); // handle the success
This endpoint retrieves template svg content.
HTTP Request
GET https://www.renderforest.com/api/v1/templates/termplatesvg/<templateId>
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
Get Theme of the Template
curl "https://api.renderforest.com/api/v1/templates/701/theme"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplateTheme(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$templateTheme = \Renderforest\Client::getTemplateTheme($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templateTheme); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"id": 2,
"themeName": "Explainer Video Toolkit Theme",
"variableName": "num",
"data": [
{
"image": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/theme_select/Standard.gif",
"name": "Standard",
"value": "1"
},
{
"image": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/theme_select/Texture-.gif",
"name": "Texture",
"value": "2"
},
{
"image": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/theme_select/Wiggle.gif",
"name": "Wiggle",
"value": "3"
},
{
"image": "https://example.com/media/Screens_2016/3rd_gen_2016/Explainer-Video-Toolkit-3gen/theme_select/Flat.gif",
"name": "Flat Version",
"value": "4"
}
]
}
}
This endpoint retrieves theme of the template.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/<templateId>/theme
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
Get template transitions
curl "https://api.renderforest.com/api/v1/templates/701/transitions"
const RenderforestClient = require('@renderforest/sdk-node')
RenderforestClient.getTemplateTransitions(701)
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$payload = [
'templateId' => 701
];
try {
$templateTheme = \Renderforest\Client::getTemplateTransitions($payload);
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($templateTheme); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"id": 1,
"transitionName": "Explainer World Toolkit",
"variableName": "transition",
"data": [
{
"image": "https://static.rfstat.com/media/Screen_2018/4gen_2018/explainer_world_toolkit/transition/f478f91c-655e-4ab6-94b3-d0ef01915366.gif",
"name": "Random",
"value": "5"
},
{
"image": "https://static.rfstat.com/media/Screen_2018/4gen_2018/explainer_world_toolkit/transition/a9f1397d-3f06-49aa-8749-492ac3bbb129.gif",
"name": "Wavy",
"value": "1"
},
{
"image": "https://static.rfstat.com/media/Screen_2018/4gen_2018/explainer_world_toolkit/transition/52f2484f-49fb-4bae-9952-0f63b713fecc.gif",
"name": "Abstract",
"value": "2"
},
{
"image": "https://static.rfstat.com/media/Screen_2018/4gen_2018/explainer_world_toolkit/transition/ca399381-54be-4cf1-973e-d6bc9084aa15.gif",
"name": "Rectangles",
"value": "3"
},
{
"image": "https://static.rfstat.com/media/Screen_2018/4gen_2018/explainer_world_toolkit/transition/61d81713-75ad-4bcd-b992-a79f47dfffa2.gif",
"name": "Circles",
"value": "4"
},
{
"image": "https://static.rfstat.com/media/Screen_2018/4gen_2018/explainer_world_toolkit/transition/8caa5ad6-a7a5-4ff9-8d7e-e25faac78227.gif",
"name": "None",
"value": "6"
}
]
}
}
This endpoint retrieves the transitions of template.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/<templateId>/transitions
URL Parameters
Parameter | Required | Default | Description |
---|---|---|---|
templateId | ✔ | ✘ | The Id of the template. |
Search Templates
curl "https://api.renderforest.com/api/v1/templates/search?limit=3&offset=2"
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"templates": [
{
"id": 68,
"description": "Introduce your company, your staff and your achievements with the help of this minimalistic Cartoon Company Introduction . This template will help you create a cartoon-like introduction video for your customers and clients. You can showcase your company history, or use it for presentations. Just edit your text, upload the best pictures of your team, and leave with a fun video, for free. Try it today!",
"isLego": false,
"defaultEditor": 0,
"title": "Cartoon Company Introduction",
"thumb": "https://static.rfstat.com/hosting/file/Thumbnails/Promotional/Company%20Promo/340x211op.jpg",
"videoUrl": "//player.vimeo.com/video/110569745",
"linkName": "cartoon-company-introduction-animation-video-60",
"favorite": false,
"rendCount": 1479,
"numberOfScreens": 1,
"durations": [
{
"templateId": 68,
"duration": 60,
"name": "60 Second Version/11 Placeholder",
"videoUrl": "//player.vimeo.com/video/110569745"
},
{
"templateId": 64,
"duration": 90,
"name": "90 Second Version/11 Placeholder",
"videoUrl": "//player.vimeo.com/video/103408576"
}
]
},
{
"id": 77,
"description": "Have you ever thought how to make a Valentine video for your significant other? Upload your own photos, edit preferred text and tell your love story with the Love Confession Letter template. Featuring Polaroid-style frames, this video may become the special gift you were looking for for your loved one. Make any occasion or holiday special with this video creation platform. It's free! ",
"isLego": false,
"defaultEditor": 0,
"title": "Love Confession Letter",
"thumb": "https://static.rfstat.com/hosting/file/Thumbnails/Slideshows/Valentine/340x211op.jpg",
"videoUrl": "//player.vimeo.com/video/104780616",
"linkName": "love-confession-letter-animation-video",
"favorite": false,
"rendCount": 6040,
"numberOfScreens": 11,
"durations": []
},
{
"id": 79,
"description": "Use Transforming Logo template to create an attention-grabbing logo reveal and present your logo in a simple but eye-catching way. Featuring sharp transitions, your logo is presented with folding animations. This template is well suited for intros and outros and is just perfect for any occasion where you need your logo to be presented in an interesting and attention-grabbing way. Try it out today for free! ",
"isLego": false,
"defaultEditor": 0,
"title": "Transforming Logo",
"thumb": "https://static.rfstat.com/hosting/file/Thumbnails/Logo_Animations/Transform/340x211op.jpg",
"videoUrl": "//player.vimeo.com/video/105003704",
"linkName": "transforming-logo-image-version",
"favorite": false,
"rendCount": 165756,
"numberOfScreens": 1,
"durations": [
{
"templateId": 79,
"duration": 7,
"name": "Logo Version",
"videoUrl": "//player.vimeo.com/video/105003704"
},
{
"templateId": 914,
"duration": 7,
"name": "Text Version",
"videoUrl": "//player.vimeo.com/video/237731364"}
]
}
],
"totalCount": "40"
}
}
This endpoint looks up all templates by given params
.
HTTP Request
GET https://api.renderforest.com/api/v1/templates/search?search=logo&limit=3&offset=2
Query Parameters
Parameter | In | Required | Default | Type | Description |
---|---|---|---|---|---|
search | query | ✘ | ✘ | string | Search keywords |
limit | query | ✘ | 20 | number | Restricts the number of templates to be retrieved. |
offset | query | ✘ | 0 | number | The number of offset to be applied. |
order | query | ✘ | DESC | string | For order query valid values are: ASC , DESC . |
orderBy | query | ✘ | trending | string | For orderBy query valid values are: newest , trending , rating , random |
category | query | ✘ | ✘ | number | The category Id. |
tags | query | ✘ | ✘ | string | Tags for searching templates. |
hasColors | query | ✘ | ✘ | boolean | Specifies if template has colors. If not specified, searches for all templates. |
hasFonts | query | ✘ | ✘ | boolean | Specifies if template has fonts. If not specified, searches for all templates. |
hasMl | query | ✘ | ✘ | boolean | Specifies if template has ml. If not specified, searches for all templates. |
aspectRatio | query | ✘ | ✘ | string | For aspectRatio query valid values are: landscape , square , portrait . If not specified, searches for all templates. |
Get Favorite Templates
curl "https://api.renderforest.com/api/v1/favorites/video-templates"
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": [
{
"id": 695,
"description": "Make your logo shine brighter with the help of Quick Logo Animation Template. The soft light animations will make any logo catchier and more attractive. Simply upload your logo, choose the color you prefer and we will take care of the rest! \nFeel free to use it as an intro for presentations, company introductions, YouTube channels and more. The template is available in four versions. Go ahead: create, inspire, export! ",
"thumbnail": "https://static.rfstat.com/media/Screens_2016/Logo_animation/Quick-Logo-Animation/47ebc46e-adf3-4936-af9e-ad042a62b797.jpg",
"title": "Quick Logo Animation",
"videoUrl": "//player.vimeo.com/video/180022191",
"video": false
},
{
"id": 701,
"description": "No more boring content and inspiration killers! Explainer Video Toolkit is here to help you create the most persuasive explainer animation ever. \nMore than 500 interactive scenes and the combination of unique characters, kinetic typography, video and photo holders will turn any idea into a video masterpiece. \nPerfect for promo videos, presentations, various video messages and more. You are about to create the best promotional video ever. Give it a try right away for free. ",
"thumbnail": "https://static.rfstat.com/media/test1111/eff26bde-0ac2-4489-bd6a-ac2ced6f1b1b.jpg",
"title": "Explainer Video Toolkit",
"videoUrl": "//player.vimeo.com/video/190349594",
"video": true
},
{
"id": 1021,
"description": "Have you ever dreamed of creating your own cartoon movie? The first-ever 3D Explainer Toolkit is your perfect chance to create the best explainer animation of the age!\nA huge choice of animated scenes, two styles, and 4 transitions to help you create incredible, animated commercials, explainers, and promo videos effortlessly. \nDon't miss this exclusive chance to boost your sales and attract more customers. Simply select the scenes you prefer, add your media and text, and the best 3D animated video is yours. Give it a try right away for free!",
"thumbnail": "https://static.rfstat.com/media/templates/1021/0fa629e5-7d9a-4f6d-8337-cd90dc4760de.jpg",
"title": "3D Explainer Video Toolkit",
"videoUrl": "//player.vimeo.com/video/295553398",
"video": true
}
]
}
This endpoint lists all user favorite templates.
HTTP Request
GET https://api.renderforest.com/api/v1/favorites/video-templates
Query Parameters
Parameter | In | Required | Default | Type | Description |
---|---|---|---|---|---|
language | query | ✘ | en |
string | The language to get template. |
Add Template to Favorites
curl -X POST "https://api.renderforest.com/api/v1/favorites/video-templates/:templateId"
This endpoint adds requested template to favorites.
HTTP Request
POST https://api.renderforest.com/api/v1/favorites/video-templates/:templateId
Query Parameters
Parameter | In | Required | Default | Type | Description |
---|---|---|---|---|---|
templateId | params | ✔ | ✘ | number | The template id to add. |
Delete Template from Favorites
curl -X DELETE "https://api.renderforest.com/api/v1/favorites/video-templates/:templateId"
This endpoint deletes requested template from favorites.
HTTP Request
DELETE https://api.renderforest.com/api/v1/favorites/video-templates/:templateId
Query Parameters
Parameter | In | Required | Default | Type | Description |
---|---|---|---|---|---|
templateId | params | ✔ | ✘ | number | The template id to add. |
Users
Get Current User
curl "https://api.renderforest.com/api/v1/users/current"
-H "Nonce: <your nonce>"
-H "ClientId: <your clientId>"
-H "Timestamp: <your timestamp>"
-H "Authorization: <your authorization>"
const RenderforestClient = require('@renderforest/sdk-node')
const Renderforest = new RenderforestClient({ signKey: 'signKey', clientId: -1 })
Renderforest.getCurrentUser()
.then(console.log) // handle the success
.catch(console.error) // handle the error
<?php
require 'vendor/autoload.php';
$renderforest = new \Renderforest\Client(['signKey' => '<signKey>', 'clientId' => -1]);
try {
$currentUser = $renderforest->getCurrentUser();
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
echo $e; // handle the error
}
var_dump($currentUser); // handle the success
The above command returns JSON structured like this:
{
"status": 200,
"message": "OK",
"data": {
"id": 1469277,
"active": true,
"blocked": false,
"email": "[email protected]",
"firstName": "example name",
"language": "en",
"lastLogin": "2018-02-02T09:48:31.000Z",
"minuteLimit": 60,
"postMaxSize": 500,
"privacy": "PRIVATE",
"publicShare": true,
"rendLimit": 50,
"roles": "member",
"status": 1,
"uploadHost": "example.renderforest.com",
"uploadMaxFileSize": 500,
"notifications": {
"REND": {
"BROWSER_PUSH": true,
"EMAIL": true
}
},
"rendUnlimited": false,
"logoLimit": 100,
"logoUnlimited": false,
"siteLimit": 1,
"siteUnlimited": false,
"mockupLimit": 30,
"mockupUnlimited": false,
"uploadMaxFileSize": 500,
"visualizerMinuteLimit": 15,
"hdMax": 1080,
"logoMax": 4,
"showApiCreatedProjects": false,
"isHDRenderer": true
}
}
This endpoint retrieves the current user.
HTTP Request
GET https://api.renderforest.com/api/v1/users/current
Errors
Status | Code | Message |
---|---|---|
400 | BadRequest | ✍ |
400 | InvalidInput | ✍ |
401 | Unauthorized | Authorization required. |
The specified clientid is not valid. |
||
403 | Forbidden | The user is blocked. |
Bounced email. | ||
Your email is invalid, please contact support https://www.renderforest.com/contact-us. | ||
404 | NotFound | The specified resource path does not exist. |
The tariff plan resource is not found. | ||
The template with id: {templateId} is not found. | ||
The user resource is not found. | ||
409 | Conflict | ✍ |
422 | UnprocessableEntity | ✍ |
500 | InternalError | The server encountered an internal error. Try again later. |