APIs for create media and get detailed information.
Here are the steps to get a new media generated from your image.
Send a POST request to create a new media. This will return newly created media information. The request should include your API key.
import requests
url = "https://api.vimmerse.net/media"
payload = {
'title': 'New Media example with image upload',
'prompt': 'Generate a video that make your idea to life.',
'sound_effects': 'Yes'
}
files=[
('image_files',('image.png',open('path/to/your/image.png','rb'),'image/png'))
]
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
Send a GET request to get your media processing status.
import requests
url = "https://api.vimmerse.net/media/{MEDIA_ID}/processing-status"
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Send a GET request to get your media detail.
import requests
url = "https://api.vimmerse.net/media/{MEDIA_ID}"
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Here are API details and examples of Media API.
By providing us a webhook endpoint you get notified when the request is done as opposed to polling it.
You can set webhook URL by giving webhook_url
params on Create and Update media.
You will get a response with the customer_id
and media_id
and status
:
{
"customer_id": "YOUR_CUSTOMER_ID",
"media_id": "YOUR_NEW_MEDIA_ID",
"status": "success"
}
Once you get request from webhook, you can use Get Media API to find result videos.
This API creates a new media from your image files, image URLs or text prompt. If you upload 2 images or submit with 2 image URLs, those 2 files are considered as start and end frame of the video. If you upload only 1 file or give 1 image URL, a new video will be generated from uploaded image. If you don't upload or give any image, a new video will be generated from the prompt.
Send a POST request to create a new media. This will return newly created media information. The request should include your API key.
Here are examples of how to create a media with each types of data.
Create a new Media with two image files.
import requests
url = "https://api.vimmerse.net/media"
payload = {
'title': 'New Media example with Two images upload'
}
files=[
('image_files',('start_frame.png',open('path/to/your/start_frame.png','rb'),'image/png')),
('image_files',('end_frame.png',open('path/to/your/end_frame.png','rb'),'image/png')), ## if you omit this line, a new video is generated by referencing only start_frame.png
]
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
Create a new Media with image URLs and motion type.
import requests
url = "https://api.vimmerse.net/media"
payload = {
'title': 'New Media example with 2 image URLs, generate 2 video with motion type.',
'image_urls': [
'https://example.com/path/to/your/start_frame.png',
'https://example.com/path/to/your/end_frame.png',
],
'motion_type': 'KlingAI',
'quantity': 2
}
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Create a new Media with text prompt and add sound effect.
import requests
url = "https://api.vimmerse.net/media"
payload = {
'title': 'New Media example with text prompt and sound effects.',
'prompt': "Generate a video that bunny jumps into the forest.",
'sound_effects': 'Yes'
}
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
title | string (Title) Default: "" |
description | string (Description) Default: "" |
visibility_status | string (Visibility Status) Default: "1" Visibility status of the media. |
image_files | Array of strings <binary> (Image Files) Default: [] Images to upload. If you upload a single image, an auto motion video will be created from that image. If you upload two images, the second image will be treated as the final frame of the video, resulting in motion transitions between the two images. The most recently uploaded image will be considered the last frame. |
image_urls | Array of strings (Image URLs) Default: [] If you upload image files, this field will be ignored. |
media_items | string (JSON dump of media items.) To extend your existing video, you can use this field. You can add start and/or end input. Here is an example. [{"type":"image","url": "https://media.vimmerse.net/your/image/file.png", "position": "First"},{"type":"video","url": "https://media.vimmerse.net/your/video/file.mp4", "position": "Last"}] |
prompt | string (Text prompt) Default: "" Description to generate video. |
motion_type | string (Motion Type) Default: "Auto" Defines the type of motion. Available values are: |
camera_control | string (Camera Path) Default: "HorizontalArc" Defines the camera path of the bullet video. Only available when |
quantity | integer (Quantity) [ 1 .. 4 ] Default: 1 |
duration | integer (Duration of video) [ 1 .. 10 ] Default: 5 |
loop | integer (The number of repetitions of the same motion.) [ 1 .. 6 ] Default: 1 |
motion_range | integer (The amount of motion, ranging from 1 to 10. Default value is 5.) [ 1 .. 10 ] Default: 5 |
sound_effects | string (Sound Effects) Default: "No" Defines if the generated video will include sound effects or not. Available values are: |
extend_video | string (Extend Video) Default: "No" Defines if the uploaded video will be extended or not. Available values are: |
character_animate | string (Character Animate) Default: "No" Defines if the uploaded video will be animated as character animate. Available values are: |
model | string (Model) Defines how a video will be animated. Available values are: 'S2V' for Character Animate, 'FashnTryOn' or 'ViduTryOn' or 'KlingTryOn' for TryOnVideo |
aspect_ratio | string (Aspect ratio) Available values are '16:9', '4:3', '1:1', '3:4' and '9:16' |
webhook_url | string (Webhook URL) a 'POST' request will be made to your webhook URL after media is fully generated. |
New Media
Insufficient Credit
Not Found
Validation Error
{- "data": {
- "id": "media_id",
- "title": "New Media example with a file upload",
- "description": "",
- "rating": "",
- "customer_id": "customer_id",
- "batch_id": "",
- "is_transition": "No",
- "duration_time": "0",
- "progress_percentage": 20,
- "processing_status": "queue_bullet",
- "visibility_status": "1",
- "file_map": [
- {
- "FileType": "Texture",
- "FileName": "filename.jpg"
}
], - "intermediate_results": [ ],
- "submit_params": {
- "sound_effects": "No",
- "pipeline_preset": "Fast",
- "file_size": "",
- "scale_factor": "1"
}, - "pose_preset": {
- "MotionType": "Auto",
- "Params": "Prompt=|CameraPath=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1"
}, - "bullet_version": "0",
- "video_history": [ ],
- "result": [ ],
- "webhook_url": "",
- "nsfw": "0",
- "created_at": "2025-04-01 18:57:37.355064+00:00",
- "updated_at": "2025-04-01 18:57:55.502020+00:00",
- "version": "2"
}
}
This API creates a new media object with an uploaded image and process the Media with the request body. Include request data in the form data.
X-Api-Key
: Your customer API key.image
: Images to upload. If you upload a single image, an auto motion video will be created from that image. If you upload two images, the second image will be treated as the final frame of the video, resulting in motion transitions between the two images. The most recently uploaded image will be considered the last frameTransition features are not supported for 'LedonadoMotion' and 'StableDiffusionMotion' motion types.
data
: JSON string of your request data.You can submit the parameters by JSON-stringify the data. All fields are optional, and default values will be set automatically.
title
: Title of the media.
description
: Description of the media.
pose_preset
:
This parameter defines the movement of the pose and consists of MotionType
and Params
.
MotionType
: Defines the type of motion. Available values are: Auto
, LeonardoMotion
, LumaAI
, LumaRay2
, KlingAI
, MinimaxHailuo
, Hunyuan
, RunwayML
, Wan
, Pixverse
, TryOnVideo
and Parallax
.
Auto
: Video motion is defined automatically based on input settings.LumaAI
: Video motion is generated by Luma AI. It takes input images(i.e. optional first and last frames) and prompt. When LumaAI is used, camera motion can also be defined as part of the prompt by adding "camera orbit left" for instance there. Available camera motions are: Static', 'Move Left', 'Move Right', 'Move Up', 'Move Down', 'Push In', 'Pull Out', 'Zoom In', 'Zoom Out', 'Pan Left', 'Pan Right', 'Orbit Left', 'Orbit Right', 'Crane Up', 'Crane Down'.LumaRay2
: Video motion is generated by Luma AI. It takes input image and prompt.KlingAI
: Video motion is generated by Kling AI Professional model. It takes input images(i.e. optional last frames) and prompt.Kling2
: Video motion is generated by Kling2.1 model. It takes input images and prompt.MinimaxHailuo
: Video motion is generated by Minimax Hailuo. It takes input image and prompt. It does not a transition frame.Seedance
: Video motion is generated by ByteDance Seedance. It takes input image and prompt. It does not support a transition frame.Hunyuan
: Video motion is generated by Tencent Hunyuan. It takes input image and prompt. It does not support a transition frame.Wan
: Video motion is generated by Alibaba Wan2.1. It takes input image and prompt. It does not support a transition frame.Pixverse
: Video motion is generated by PixVerse. It takes input image and prompt. It does not support a transition frame.Veo
: Video motion is generated by Google Veo. It takes input image and prompt. It does not support a transition frame.VeoFast
: Video motion is generated by Google Veo Fast. It takes input image and prompt. It does not support a transition frame.RunwayML
: Video motion is generated by RunwayML Gen3. It takes input images(i.e. optional first and last frames) and prompt.TryOnVideo
: Video motion applied on TryOn results with a preset prompt. It takes input images(i.e. human image and clothing image).Parallax
: Video motion is defined by a camera path which is specified in Params
.Params
: Contains detailed values for video motion. If you have chosen the Prompt
motion type, you will need to provide prompt text under Prompt
in Params
.
CameraPath
: Defines the camera path of the bullet video. Only available when Parallax
motion type is chosen. Available values are HorizontalArc
, VerticalArc
, StepIn
, Cross
, Circular
, StepD
, StepU
, StepL
and StepR
.Prompt
: The prompt for movement for the bullet video. Only available when Prompt
motion type is chosen.PromptStrength
: Defines prompt strength for video generation. Available values are 1, 2, 3, 4, or 5.Quantity
: The number of bullet videos to generate.MotionAmount
: The amount of motion, ranging from 1 to 10.MotionLength
: The length of the generated bullet video.Loop
: The number of repetitions of the same motion.submit_params
:
The quality of the bullet video can be adjusted with this parameter. The default value is recommended. To use the default value, you don't need to include this parameter in the request. However, if you want to change this value, please contact us first.
scale_factor
: Scale factor of the bullet video. Range is (0 - 2). Default value is "1".pipeline_preset
: Defines media processing preset. Available values are Fast
and Normal
. Default value is "Fast".file_size
: Defines maximum file size of bullet videos as a string. Unit of the size is MB. Default value is an empty string. Please input value as a string. Ex: "1.6".sound_effects
: Defines if the generated video will include sound effects or not. Values are: "Yes", "No" (default).This example shows how to generate videos by several motions. They are Horizontal, Cross and StepDown Parallax motions and 2 AI motions.
import requests
import json
import time
import os
API_KEY = 'YOUR_API_KEY'
BASE_URL = "https://api.vimmerse.net"
CREATE_MEDIA_UPLOAD_URL = f"{BASE_URL}/media/upload"
PROCESS_STATUS_URL_TEMPLATE = f"{BASE_URL}/media/{{media_id}}/processing-status"
DOWNLOAD_URL_TEMPLATE = f"{BASE_URL}/media/{{media_id}}/download?object_type=bullet_video_mp4&motion_type=Auto1"
headers = {
'X-Api-Key': API_KEY,
}
# Create media request data
request_data = {
"title": "New Media Example1",
"pose_preset": [
{"MotionType": "Parallax", "Params": "CameraPath=HorizontalArc|Prompt=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1"},
{"MotionType": "Parallax", "Params": "CameraPath=Cross|Prompt=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1"},
{"MotionType": "Parallax", "Params": "CameraPath=StepD|Prompt=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1"},
{"MotionType": "Auto", "Params": "Prompt=|PromptStrength=1|Quantity=2|MotionAmount=5|MotionLength=5|Loop=1"}
]
}
# Select files to upload
file_path = './nike_shoe.png'
files = [
('image', ('nike_shoe.png', open(file_path, 'rb'), 'image/png'))
]
try:
# Send POST request to upload media
with open(file_path, 'rb') as file:
files = [('image', ('nike_shoe.png', file, 'image/png'))]
payload = {"data": json.dumps(request_data)}
response = requests.post(CREATE_MEDIA_UPLOAD_URL, headers=headers, data=payload, files=files)
response.raise_for_status() # Check for HTTP errors
media_data = response.json()
media_id = media_data['data']['id']
except requests.exceptions.RequestException as e:
print(f"Failed to create media: {e}")
exit()
# Wait for media processing to complete
try:
percentage = 0
while percentage != 100:
time.sleep(5)
url = PROCESS_STATUS_URL_TEMPLATE.format(media_id=media_id)
status_response = requests.get(url, headers=headers)
status_response.raise_for_status()
progress_data = status_response.json()
percentage = int(progress_data['data']['progress_percentage'])
print(f"Media processing: {percentage}%")
except requests.exceptions.RequestException as e:
print(f"Failed to get media processing status: {e}")
exit()
# Download the generated bullet video
try:
download_url = DOWNLOAD_URL_TEMPLATE.format(media_id=media_id)
download_response = requests.get(download_url, headers=headers)
download_response.raise_for_status()
output_dir = "./tmp"
os.makedirs(output_dir, exist_ok=True)
output_path = os.path.join(output_dir, "output.mp4")
with open(output_path, 'wb') as file:
file.write(download_response.content)
print(f"Downloaded video saved to {output_path}")
except requests.exceptions.RequestException as e:
print(f"Failed to download video: {e}")
This example shows how to use transition feature. Transition feature lets you generate videos by providing first and last frame of the image.
import requests
import json
import time
import os
API_KEY = 'YOUR_API_KEY'
BASE_URL = "https://api.vimmerse.net"
CREATE_MEDIA_UPLOAD_URL = f"{BASE_URL}/media/upload"
PROCESS_STATUS_URL_TEMPLATE = f"{BASE_URL}/media/{{media_id}}/processing-status"
DOWNLOAD_URL_TEMPLATE = f"{BASE_URL}/media/{{media_id}}/download?object_type=bullet_video_mp4&motion_type=Auto1"
headers = {
'X-Api-Key': API_KEY,
}
# Create media request data
request_data = {
"title": "New Media Example With Transition",
"is_transition": "Yes",
"pose_preset": [
{
"MotionType": "Auto",
"Params": "Prompt=|PromptStrength=1|Quantity=2|MotionAmount=5|MotionLength=5|Loop=1"
}
]
}
# Select files to upload
try:
# Send POST request to upload media
files=[
('image', ('f1.png', open('./f1.png', 'rb'), 'image/png')),
('image', ('f2.png', open('./f2.png', 'rb'), 'image/png'))
]
payload = {"data": json.dumps(request_data)}
response = requests.post(CREATE_MEDIA_UPLOAD_URL, headers=headers, data=payload, files=files)
response.raise_for_status() # Check for HTTP errors
media_data = response.json()
media_id = media_data['data']['id']
except requests.exceptions.RequestException as e:
print(f"Failed to create media: {e}")
exit()
# Wait for media processing to complete
try:
percentage = 0
while percentage != 100:
time.sleep(5)
url = PROCESS_STATUS_URL_TEMPLATE.format(media_id=media_id)
status_response = requests.get(url, headers=headers)
status_response.raise_for_status()
progress_data = status_response.json()
percentage = int(progress_data['data']['progress_percentage'])
print(f"Media processing: {percentage}%")
except requests.exceptions.RequestException as e:
print(f"Failed to get media processing status: {e}")
exit()
# Download the generated bullet video
try:
download_url = DOWNLOAD_URL_TEMPLATE.format(media_id=media_id)
download_response = requests.get(download_url, headers=headers)
download_response.raise_for_status()
output_dir = "./tmp"
os.makedirs(output_dir, exist_ok=True)
output_path = os.path.join(output_dir, "output.mp4")
with open(output_path, 'wb') as file:
file.write(download_response.content)
print(f"Downloaded video saved to {output_path}")
except requests.exceptions.RequestException as e:
print(f"Failed to download video: {e}")
New Media Object
Bad Request
Insufficient Credit
Validation Error
{- "data": {
- "id": "496ae232-0ebf-409d-9fb0-fe75156254a7",
- "title": "Demo Title",
- "description": "This fake media is created for demo.",
- "customer_id": "demo_customer",
- "batch_id": "",
- "is_transition": "No",
- "duration_time": "5.0",
- "progress_percentage": 100,
- "processing_status": "success",
- "file_map": [
- {
- "FileType": "Texture",
- "FileName": "uploading_file_example.jpg"
}
], - "submit_params": {
- "file_size": "",
- "pipeline_preset": "Fast",
- "scale_factor": "1",
- "sound_effects": "No"
}, - "pose_preset": {
- "MotionType": "Parallax",
- "Params": "CameraPath=StepIn|Prompt=|PromptStrength=0|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1|Zoom=1"
}, - "bullet_version": "1",
- "video_history": [
- {
- "created_at": "2024-06-12 06:42:30.198640+00:00",
- "pose_preset": {
- "MotionType": "Parallax",
- "Params": "CameraPath=StepIn|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1|EasyEase=1|Zoom=1|HorizontalCrop=0|VerticalCrop=0|Seed=0|GuidanceScale=0"
}, - "bullet_version": "1",
- "file_map": [
- {
- "FileType": "Texture",
- "FileName": "uploading_file_example.jpg"
}
], - "submit_params": {
- "file_size": "",
- "pipeline_preset": "Fast",
- "scale_factor": "1",
- "sound_effects": "No"
}
}
], - "nsfw": "0",
- "created_at": "2024-06-12 06:38:08.331372+00:00",
- "updated_at": "2024-06-24 16:02:26.767400",
- "version": "2"
}
}
This API creates a new media with prompt under pose_preset
data. Include request data in the form data.
X-Api-Key
: Your customer API key.You can submit prompt under pose_preset
object. All fields are optional, and default values will be set automatically.
title
: Title of the media.
description
: Description of the media.
pose_preset
:
This parameter defines the movement of the pose and consists of MotionType
and Params
.
MotionType
: Defines the type of motion. Available values are: Auto
, LeonardoMotion
, LumaAI
, LumaRay2
, KlingAI
, MinimaxHailuo
, Hunyuan
, RunwayML
, Wan
, Pixverse
, TryOnVideo
and Parallax
.
Auto
: Video motion is defined automatically based on input settings.LumaAI
: Video motion is generated by Luma AI. It takes input images(i.e. optional first and last frames) and prompt. When LumaAI is used, camera motion can also be defined as part of the prompt by adding "camera orbit left" for instance there. Available camera motions are: Static', 'Move Left', 'Move Right', 'Move Up', 'Move Down', 'Push In', 'Pull Out', 'Zoom In', 'Zoom Out', 'Pan Left', 'Pan Right', 'Orbit Left', 'Orbit Right', 'Crane Up', 'Crane Down'.LumaRay2
: Video motion is generated by Luma AI. It takes input image and prompt.KlingAI
: Video motion is generated by Kling AI Professional model. It takes input images(i.e. optional last frames) and prompt.Kling2
: Video motion is generated by Kling2.1 model. It takes input images and prompt.MinimaxHailuo
: Video motion is generated by Minimax Hailuo. It takes input image and prompt. It does not a transition frame.Seedance
: Video motion is generated by ByteDance Seedance. It takes input image and prompt. It does not support a transition frame.Hunyuan
: Video motion is generated by Tencent Hunyuan. It takes input image and prompt. It does not support a transition frame.Wan
: Video motion is generated by Alibaba Wan2.1. It takes input image and prompt. It does not support a transition frame.Pixverse
: Video motion is generated by PixVerse. It takes input image and prompt. It does not support a transition frame.Veo
: Video motion is generated by Google Veo. It takes input image and prompt. It does not support a transition frame.VeoFast
: Video motion is generated by Google Veo Fast. It takes input image and prompt. It does not support a transition frame.RunwayML
: Video motion is generated by RunwayML Gen3. It takes input images(i.e. optional first and last frames) and prompt.TryOnVideo
: Video motion applied on TryOn results with a preset prompt. It takes input images(i.e. human image and clothing image).Parallax
: Video motion is defined by a camera path which is specified in Params
.Params
: Contains detailed values for video motion. If you have chosen the Prompt
motion type, you will need to provide prompt text under Prompt
in Params
.
CameraPath
: Defines the camera path of the bullet video. Only available when Parallax
motion type is chosen. Available values are HorizontalArc
, VerticalArc
, StepIn
, Cross
, Circular
, StepD
, StepU
, StepL
and StepR
.Prompt
: The prompt for movement for the bullet video. Only available when Prompt
motion type is chosen.PromptStrength
: Defines prompt strength for video generation. Available values are 1, 2, 3, 4, or 5.Quantity
: The number of bullet videos to generate.MotionAmount
: The amount of motion, ranging from 1 to 10.MotionLength
: The length of the generated bullet video.Loop
: The number of repetitions of the same motion.submit_params
:
The quality of the bullet video can be adjusted with this parameter. The default value is recommended. To use the default value, you don't need to include this parameter in the request. However, if you want to change this value, please contact us first.
scale_factor
: Scale factor of the bullet video. Range is (0 - 2). Default value is "1".pipeline_preset
: Defines media processing preset. Available values are Fast
and Normal
. Default value is "Fast".file_size
: Defines maximum file size of bullet videos as a string. Unit of the size is MB. Default value is an empty string. Please input value as a string. Ex: "1.6".sound_effects
: Defines if the generated video will include sound effects or not. Values are: "Yes", "No" (default).This example shows how to generate videos from prompt.
import requests
import json
import time
import os
API_KEY = 'YOUR_API_KEY'
BASE_URL = "https://api.vimmerse.net"
CREATE_MEDIA_UPLOAD_URL = f"{BASE_URL}/media/prompt"
PROCESS_STATUS_URL_TEMPLATE = f"{BASE_URL}/media/{{media_id}}/processing-status"
DOWNLOAD_URL_TEMPLATE = f"{BASE_URL}/media/{{media_id}}/download?object_type=bullet_video_mp4&motion_type=Auto1"
headers = {
'X-Api-Key': API_KEY,
}
json_headers = {
'X-Api-Key': API_KEY,
'Content-Type': 'application/json'
}
# Create media request data
payload = {
"title": "New media from prompt",
"description": "New media from prompt",
"pose_preset": [
{
"MotionType": "Auto",
"Params": "Prompt=Shot of Nike shoes on colorful background.|PromptStrength=5|MotionAmount=5|MotionLength=5|Loop=1|Quantity=2"
}
]
}
# Select files to upload
try:
# Send POST request to upload media
response = requests.post(CREATE_MEDIA_UPLOAD_URL, headers=json_headers, json=payload)
response.raise_for_status() # Check for HTTP errors
media_data = response.json()
media_id = media_data['data']['id']
except requests.exceptions.RequestException as e:
print(f"Failed to create media: {e}")
exit()
# Wait for media processing to complete
try:
percentage = 0
while percentage != 100:
time.sleep(5)
url = PROCESS_STATUS_URL_TEMPLATE.format(media_id=media_id)
status_response = requests.get(url, headers=headers)
status_response.raise_for_status()
progress_data = status_response.json()
percentage = int(progress_data['data']['progress_percentage'])
print(f"Media processing: {percentage}%")
except requests.exceptions.RequestException as e:
print(f"Failed to get media processing status: {e}")
exit()
# Download the generated bullet video
try:
download_url = DOWNLOAD_URL_TEMPLATE.format(media_id=media_id)
download_response = requests.get(download_url, headers=headers)
download_response.raise_for_status()
output_dir = "./tmp"
os.makedirs(output_dir, exist_ok=True)
output_path = os.path.join(output_dir, "output.mp4")
with open(output_path, 'wb') as file:
file.write(download_response.content)
print(f"Downloaded video saved to {output_path}")
except requests.exceptions.RequestException as e:
print(f"Failed to download video: {e}")
Title (string) or Title (null) (Title) | |
Description (string) or Description (null) (Description) | |
Primary User ID (string) or Primary User ID (null) (Primary User ID) Utilize the | |
Rating (string) or Rating (null) (Rating) Rated value. If empty, this media is not rated. | |
Webhook URL is called when status of the media has been updated. (string) or Webhook URL is called when status of the media has been updated. (null) (Webhook URL is called when status of the media has been updated.) | |
Array of Pose Preset (any) or Pose Preset (object) or Pose Preset (null) (Pose Preset) Pose preset parameter. Can be either a list or a PosePreset. | |
Submit Parameters (object) or Submit Parameters (null) (Submit Parameters) Submitting parameters. |
New Text Prompt Media Object
Bad Request
Insufficient Credit
Validation Error
{- "data": {
- "id": "573baf50-2506-4f24-a437-93678f1e5122",
- "title": "New Text Prompt Media",
- "description": "This fake media is created for demo.",
- "customer_id": "demo_customer",
- "batch_id": "",
- "is_transition": "No",
- "duration_time": "5.0",
- "progress_percentage": 100,
- "processing_status": "success",
- "file_map": [ ],
- "submit_params": {
- "file_size": "",
- "pipeline_preset": "Fast",
- "scale_factor": "1",
- "sound_effects": "No"
}, - "pose_preset": [
- {
- "MotionType": "Auto",
- "Params": "Prompt=Shot of Nike shoes on colorful background.|PromptStrength=5|MotionAmount=5|MotionLength=5|Loop=1|Quantity=2"
}
], - "bullet_version": "1",
- "video_history": [
- {
- "created_at": "2024-06-12 06:42:30.198640+00:00",
- "pose_preset": [
- {
- "MotionType": "Auto",
- "Params": "Prompt=Shot of Nike shoes on colorful background.|PromptStrength=5|MotionAmount=5|MotionLength=5|Loop=1|Quantity=2"
}
], - "bullet_version": "1",
- "file_map": [ ],
- "submit_params": {
- "file_size": "",
- "pipeline_preset": "Fast",
- "scale_factor": "1",
- "sound_effects": "No"
}
}
], - "nsfw": "0",
- "created_at": "2024-06-12 06:38:08.331372+00:00",
- "updated_at": "2024-06-24 16:02:26.767400",
- "version": "2"
}
}
This API retrieves media processing status in percentage.
Send a GET request to get media processing status.
Get processing status of the media.
import requests
url = "https://api.vimmerse.net/media/{MEDIA_ID}/processing-status"
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Media progress percentage
Not Found
Validation Error
{- "data": {
- "progress_percentage": "100",
- "processing_status": "success"
}
}
This API retrieves a media object.
Send a GET request to get your media.
Read Media example.
import requests
url = "http://api.vimmerse.net/media/{MEDIA_ID}"
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Media Object
Media Not Found
Validation Error
{- "data": {
- "data": {
- "id": "media_id",
- "title": "",
- "description": "",
- "rating": "",
- "customer_id": "customer_id",
- "batch_id": "batch_id",
- "is_transition": "No",
- "duration_time": "5.0",
- "progress_percentage": 100,
- "processing_status": "success",
- "visibility_status": "1",
- "file_map": [
- {
- "FileType": "Texture",
- "FileName": "uploaded_file1.png"
}
], - "intermediate_results": [ ],
- "submit_params": {
- "sound_effects": "No",
- "pipeline_preset": "Fast",
- "file_size": "",
- "scale_factor": "1"
}, - "pose_preset": {
- "MotionType": "Auto",
- "Params": "Prompt=|CameraPath=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1|AspectRatio=16:9"
}, - "bullet_version": "1",
- "video_history": [
- {
- "generate_type": "GENERATE_VIDEO",
- "pose_preset": {
- "MotionType": "Auto",
- "Params": "Prompt=|CameraPath=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1|AspectRatio=16:9"
}, - "file_map": [
- {
- "FileType": "Texture",
- "FileName": "uploaded_file1.png"
}
], - "service_name": "RunwayML",
- "service_seeds": [
- 6305
], - "created_at": "2025-04-01 13:20:36.607637+00:00",
- "service_version": "gen3a_turbo:2024-11-06",
- "bullet_version": "1",
- "resolution": [
- 1280,
- 704
], - "submit_params": {
- "sound_effects": "No",
- "pipeline_preset": "Fast",
- "file_size": "",
- "scale_factor": "1"
}
}
], - "result": [ ],
- "nsfw": "0",
- "service_name": "RunwayML",
- "service_version": "gen3a_turbo:2024-11-06",
- "created_at": "2025-04-01 13:19:10.786297+00:00",
- "updated_at": "2025-04-01 13:20:37.032634+00:00",
- "version": "2"
}
}
}
This API updates media and resubmit again if you update any of prompt
, motion_type
, quantity
, duration
, loop
, aspect_ratio
and sound_effects
.
If media is processed again, it will reduce your credit.
Send a PUT request to update your media. This will return updated media. The request should include your API key.
Update Media without resubmitting example
import requests
url = "http://api.vimmerse.net/media/{MEDIA_ID}/edit"
headers = {
'X-Api-Key': 'YOUR_API_KEY',
}
payload = {
'title': 'New Updated Title',
'rating: '5',
'visibility_status': '2'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
Update Media with resubmitting example
import requests
url = "http://api.vimmerse.net/media/{MEDIA_ID}/edit"
headers = {
'X-Api-Key': 'YOUR_API_KEY',
}
payload = {
'title': 'New Updated Title',
'motion_type: 'RunwayML',
'duration': 9
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
Media Object
Bad Request
Insufficient Credit
Not Found
Validation Error
{- "data": {
- "id": "media_id",
- "title": "",
- "description": "",
- "rating": "",
- "customer_id": "customer_id",
- "batch_id": "batch_id",
- "is_transition": "No",
- "duration_time": "5.0",
- "progress_percentage": 100,
- "processing_status": "success",
- "visibility_status": "1",
- "file_map": [
- {
- "FileType": "Texture",
- "FileName": "uploaded_file1.png"
}
], - "intermediate_results": [ ],
- "submit_params": {
- "sound_effects": "No",
- "pipeline_preset": "Fast",
- "file_size": "",
- "scale_factor": "1"
}, - "pose_preset": {
- "MotionType": "Auto",
- "Params": "Prompt=|CameraPath=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1|AspectRatio=16:9"
}, - "bullet_version": "1",
- "video_history": [
- {
- "generate_type": "GENERATE_VIDEO",
- "pose_preset": {
- "MotionType": "Auto",
- "Params": "Prompt=|CameraPath=|Quantity=1|MotionAmount=5|MotionLength=5|Loop=1|AspectRatio=16:9"
}, - "file_map": [
- {
- "FileType": "Texture",
- "FileName": "uploaded_file1.png"
}
], - "service_name": "RunwayML",
- "service_seeds": [
- 6305
], - "created_at": "2025-04-01 13:20:36.607637+00:00",
- "service_version": "gen3a_turbo:2024-11-06",
- "bullet_version": "1",
- "resolution": [
- 1280,
- 704
], - "submit_params": {
- "sound_effects": "No",
- "pipeline_preset": "Fast",
- "file_size": "",
- "scale_factor": "1"
}
}
], - "result": [ ],
- "nsfw": "0",
- "service_name": "RunwayML",
- "service_version": "gen3a_turbo:2024-11-06",
- "created_at": "2025-04-01 13:19:10.786297+00:00",
- "updated_at": "2025-04-01 13:20:37.032634+00:00",
- "version": "2"
}
}
Downloads file from media.
This code shows an example of how to download Bullet Video
from Auto
motion.
import requests
url = "https://api.vimmerse.net/media/{MEDIA_ID}/download?object_type=bullet_video_mp4&motion_type=Auto"
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
This code shows an example of how to download Bullet Video
with custom settings
import requests
url = "https://api.vimmerse.net/media/{MEDIA_ID}/download?object_type=bullet_video_mp4&motion_type=Auto&width=1080&file_size=4"
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Return bullet video, gif or source files.
Bad Request
Validation Error
null
This API resubmit to generate a bullet video.
Send a POST request without body to resubmit your media.
import requests
url = "https://api.vimmerse.net/media/{MEDIA_ID}/process"
headers = {
'X-Api-Key': 'YOUR_API_KEY'
}
response = requests.request("POST", url, headers=headers)
print(response.text)
Media Object
Bad Request
Insufficient Credit
Not Found
Validation Error
{- "data": { }
}