Render options
Advanced render options are accessed through the top-right button in the single render form and can also be configured using batch rendering, integration-based invocation, or the API. These options allow you to add captions, export thumbnails, and more.
Render options can also be set on a template level, which means that every time you render a video from that template, these options will be applied.
Captions
To enable captions, go to the Captions section of the Output Format settings and provide the URL to the captions .srt file.
Optionally, you can choose one of the predefined caption styles, and you can also choose the position where the caption should be displayed. If you don’t provide these options, the Basic option will be used for style, and the position will be at the bottom.
Captions styles
There are five built-in caption styles:
| Style | Example | API value |
|---|---|---|
| Basic | ![]() | BASIC |
| Shadow | ![]() | BASIC_WITH_SHADOW |
| Stroke and shadow | ![]() | BASIC_WITH_STROKE_AND_SHADOW |
| Poppins white | ![]() | POPPINS_WHITE |
| Poppins white vertical | Poppins with adaptations for the story formats (9x16). | POPPINS_WHITE_VERTICAL |
The Poppins variants should be used with bottom position, due to the additional vertical margin of the style.
Captions position
Currently, the available caption positions are Bottom (default), Center and Top, with API values being BOTTOM, CENTER and TOP.
API cURL example - Render with captions option Developer guide
curl -X POST \
-H "Content-Type: application/json" \
-u "[API_KEY]:" \
-d '{
"projectId": "[PROJECT_ID]",
"options": {
"captions": {
"srtFileUrl": "https://raw.githubusercontent.com/andreyvit/subtitle-tools/master/sample.srt",
"captionsStyle": "BASIC",
"captionsPosition": "BOTTOM"
}
}
}' \
https://api.plainlyvideos.com/api/v2/rendersThumbnails
With the thumbnails option enabled, Plainly will not only export the video but also thumbnails that you can, for example, use as a poster on social media.
There are two options on how you can get thumbnails:
- At seconds - you provide exact time points in a video when thumbnails should be taken.
- Frequency - you provide an interval in seconds, and thumbnails will be taken at “every N seconds”.
Thumbnails will be visible in the Render details page, as well as in the Render API model under thumbnailsUris array field.
Additional options when generating thumbnails are:
| Option | Description | API value |
|---|---|---|
| Format | The image format of the thumbnail. Currently, the only available option are PNG or JPEG images. | PNG / JPG |
| From encoded video | The source of the thumbnail generation, where you can choose between original video or encoded video. | boolean |
Source of thumbnail generation matters
The thumbnails can be generated from the original video output by After Effects, or from the encoded video after the post encoding step. The source is controlled using the From encoded video option.
When taking thumbnails from the original video, the quality might be better, but due to the variable frame rate and different encoder used by After Effects, the time points might not be exact.
When taking thumbnails from the encoded video, the time points should always be exact unless you added custom encoding parameters that influence the frame rate.
API cURL example - Create render with thumbnail generation Developer guide
curl -X POST \
-H "Content-Type: application/json" \
-u "[API_KEY]:" \
-d '{
"projectId": "[PROJECT_ID]",
"options": {
"thumbnails": {
"atSeconds": [1, 5, 7],
"format": "JPG",
"fromEncodedVideo": true
}
}
}' \
https://api.plainlyvideos.com/api/v2/rendersWatermark
With the watermark option you can pass a link to an image or video that you want to use as a watermark on the video. Plainly always generates two videos in this case, one with the watermark and one without it.
A watermark video will be available for download on the Render details page, and the URL will also be exposed in the Render API model under the outputWatermark field.
Watermark positioning
You can also pass encoding parameters for the watermark. Having encoding params allows controlling on how is watermark added. If not passed, the watermark will be placed in the top left corner of the video.
Here are some examples of encoding parameters that you can use for the watermark:
-filter_complex [1]scale=iw*0.2:-1,format=rgba,colorchannelmixer=aa=0.8[watermark];[0][watermark]overlay=10:10-filter_complex [1]scale=iw*0.2:-1,format=rgba,colorchannelmixer=aa=0.8[watermark];[0][watermark]overlay=W-w-10:10-filter_complex [1]scale=iw*0.2:-1,format=rgba,colorchannelmixer=aa=0.8[watermark];[0][watermark]overlay=10:H-h-10-filter_complex [1]scale=iw*0.2:-1,format=rgba,colorchannelmixer=aa=0.8[watermark];[0][watermark]overlay=W-w-10:H-h-10-filter_complex [1]scale=iw*0.2:-1,format=rgba,colorchannelmixer=aa=0.8[watermark];[0][watermark]overlay=(W-w)/2:(H-h)/2As you’ve noticed, we are using multiple filters here:
overlay- used for positioning the watermark on the video.scale- used for scaling the watermark to the desired size.format- used for setting the format of the watermark to rgba.colorchannelmixer- used for setting the transparency of the watermark.
You can read more about the filters and other possibilities at the FFmpeg documentation .
API cURL example - Create render with watermark video Developer guide
curl -X POST \
-H "Content-Type: application/json" \
-u "[API_KEY]:" \
-d '{
"projectId": "[PROJECT_ID]",
"options": {
"watermark": {
"url": "https://example.com/watermark.png"
}
}
}' \
https://api.plainlyvideos.com/api/v2/rendersDownload options
Video file
Instant download
By default, most Internet browsers will open a link pointing to a rendered video in a new tab and start playing it.
If you want to force a browser to download a video instead of playing it, you can enable the Instant download option. This option is available in the UI under the Output Format settings.
Change file name
By default, the file name of a rendered video will be randomly generated, for example, 1e89f1b8-076c-4e2b-a750-373ab227346a.mp4. In most cases this is fine, however this is not perfect for the use cases when the file is downloaded by the end user, or when you want to have a more descriptive file name.
The name of the file must be given without the extension, as the extension will be added automatically based on the output format.
Reference render parameters in a file name
File names can also be dynamic. This can be achieved by referencing a render parameter value, including the project and template names. For example, setting the Video file name to:
{{name}} - {{season:Winter}}will take the value of the name (mandatory) and season (not mandatory, defaults to Winter) render parameters. Thus, you could get files named John Doe - Winter.mp4 or Susan Smith - Summer.mp4.
If you use reference parameters in the file name, you must ensure that the parameters are set before the render is created. Otherwise, the file name will not be generated.
You can also reference parameters via a modal dialog. This dialog contains all available parameters for the render and opens when you click the + Select button next to the Video file name field.

API cURL example - Create render with video file download options Developer guide
curl -X POST \
-H "Content-Type: application/json" \
-u "[API_KEY]:" \
-d '{
"projectId": "[PROJECT_ID]",
"options": {
"attachment": true,
"attachmentFileName": "my-cool-video"
}
}' \
https://api.plainlyvideos.com/api/v2/rendersProject files
If you need to make further changes to your After Effects project after rendering, you can enable the project files upload option. This will collect all modified files, compress them into a ZIP file, and upload the modified project to the server for easy download.
To enable this feature using the UI, you need to check the Upload project files option under the Project settings.
The project files will be available for download on the Render details page, and the URL will also be exposed in the Render API model under the projectZipUrl field.
API cURL example - Create render with project files download option Developer guide
curl -X POST \
-H "Content-Type: application/json" \
-u "[API_KEY]:" \
-d '{
"projectId": "[PROJECT_ID]",
"options": {
"projectFiles": {
"uploadEnabled": true
}
}
}' \
https://api.plainlyvideos.com/api/v2/rendersUpload options
Signed URL upload
Plainly supports uploading the main rendered video file to an arbitrary cloud storage bucket after rendering is complete. This is achieved by providing a signed URL when invoking the render. This URL should allow uploading files using a PUT request.
You can provide additional headers that will be sent with the upload request, such as Content-MD5 or x-goog-*. The Content-Type header is included by default, except in cases where it’s explicitly specified in the additional headers.
API cURL example - Create render with signed URL upload Developer guide
curl -X POST \
-H "Content-Type: application/json" \
-u "[API_KEY]:" \
-d '{
"projectId": "[PROJECT_ID]",
"options": {
"uploads": {
"signedUrl": {
"output": {
"url": "https://your-signed-url-here",
"headers": {
"x-header": "my-value"
}
}
}
}
}
}' \
https://api.plainlyvideos.com/api/v2/renders


