Create a new video project by uploading a video file directly to Submagic. This endpoint accepts multipart/form-data uploads and is ideal for applications where you have video files stored locally or want to upload directly from user devices.
This endpoint requires authentication and has a rate limit of 500 requests per
hour due to the resource-intensive nature of file uploads.
Template to apply for styling. Use the templates
endpoint to get available options. Defaults to
“Sara” if not specified. Cannot be used together with userThemeId.
ID of a custom user theme to apply for styling. Must be a valid UUID of a
theme that belongs to you or your team. Cannot be used together with
templateName. You can find the id of your custom theme by opening a project,
selecting the theme, pressing the pen icon to edit it. You’ll see the id of
the theme under its name.
Adds an animated hook caption. Pass "true" to enable the default hook, or
pass a JSON string such as
{"text":"Stop scrolling—watch this in 30 seconds","template":"tiktok","top":45,"size":32}.
text: Optional custom copy (1-100 characters)
template: Optional template name (defaults to "tiktok"). Use the hook
title templates endpoint to discover
valid names.
top: Optional vertical position between 0-80 (default 50)
size: Optional font size between 0-80 (default 30)
Template names are validated before the upload begins; invalid names return a
VALIDATION_ERROR.
JSON string describing optional items to insert into the video. Pass an
array of objects. Each item must include a type field to specify whether it’s
user media from your library or AI-generated content.
1-2500 character description of the B-roll to generate
Important: Each item must have a type field. Items entries cannot overlap
in time. When present, this metadata is parsed after the upload completes and
queued for rendering.
Enable automatic B-roll insertion to enhance video content with relevant
supplementary footage. Pass “true” or “false” as string. Optional, defaults to
“false”.
Percentage of automatic B-rolls to include in the video (0-100). Pass as
string. Only effective when magicBrolls is enabled. Optional, defaults to
“50”.
Automatically remove silence from the video at the specified pace. Pass as
string. Optional. Allowed values: “natural”, “fast”, “extra-fast”. -
“extra-fast”: 0.1-0.2 seconds of silence removal - “fast”: 0.2-0.6 seconds of
silence removal - “natural”: 0.6+ seconds of silence removal
Automatically detect and remove bad takes and silence from the video using AI
analysis. Pass “true” or “false” as string. Optional, defaults to “false”.