---
title: "Create a video from a template"
method: POST
path: "/v2/videos/fromTemplate"
tags: ["Videos"]
---

# Create a video from a template

`POST /v2/videos/fromTemplate`

Create a video based on a template created in Synthesia.

## Request body

- VideoFromTemplate
  - `folderId` string, uuid, nullable — Optional folder ID. If provided, the new video will be created under this folder and inherit its permissions.
  - `callbackId` string — A callback ID that you may attach to the Video object. This is useful in the scenario where you need to store additional metadata on the video.
  - `ctaSettings` CtaSettings
    - `label` string, required — Label for a call-to-action button.
    - `url` string, required — URL to navigate to, when the call-to-action button is clicked.
  - `description` string — Description of the video (used on the video's share page). Defaults to the template description.
  - `templateId` string, uuid, required — Unique identifier of the template from which to create this video. This may be retrieved from the templates page in STUDIO.
  - `templateData` object, required
  - `test` boolean — Describes if the video is a test video. Test videos do not count towards your quota but are rendered with a watermark.
  - `title` string — Title of the video (used on the video's share page). Defaults to the template title.
  - `visibility` 'private' | 'public' — Describes the private settings of the video. - If public, the video's share page is active. - If private, the video's share page is not active; visitors will receive a 404 Not Found response.
  - `brandKitId` string, nullable — Brand kit ID for the video. Defaults to 'workspace_default' if not set. Use 'no_brand_kit' for no branding, or a UUID for a custom brand kit.

## Response `201`

Created.

- VideoResponse
  - `callbackId` string — Use callback ID to link videos back to the initial request. For example, if you are making a personalized video for a customer, you could enter the customer's email as a callback ID. This way, you can tell who the video is for, once its generated..
  - `createdAt` integer — UNIX timestamp representing the time video was created.
  - `ctaSettings` CtaSettings
    - `label` string, required — Label for a call-to-action button.
    - `url` string, required — URL to navigate to, when the call-to-action button is clicked.
  - `description` string — Description of the video to be shown on the share page.
  - `test` boolean — Test videos are free and not counted towards your quota. If you create a video in the “test” mode, we will overlay a watermark over your video.
  - `download` string
  - `duration` string
  - `id` string, uuid
  - `lastUpdatedAt` integer
  - `status` 'complete' | 'deleted' | 'error' | 'in_progress' | 'rejected' | 'approved'
  - `thumbnail` VideoThumbnailTypesResponse
    - `image` string, nullable
    - `gif` string, nullable
  - `title` string — Title of the video to be shown on the share page.
  - `visibility` 'private' | 'public' — Public videos will be visible to anyone with a share URL. Private videos can only be downloaded via a time-limited download link. See Retrieve a video for details. Visibility can be changed also once the video is created via Update a video.

## Other responses

- `400` — Bad Request.
- `403` — Forbidden - Wrong API key.
- `default` — Unexpected Server error.

---

[API](https://skmtc.net/synthesia/apis/synthesia-api.md) · [All operations](https://skmtc.net/synthesia/apis/synthesia-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/synthesia/synthesia-api/revisions/f0f34ae0591d/schema)
