Video

Video APIs use JSON for generation and editing. Only upload uses multipart/form-data.

Endpoints

Method Path Body
POST /v2/video multipartvideo_file
POST /v2/video/estimate-credits JSON
POST /v2/video/crop-to-aspect-ratio JSON — video_url, aspect_ratio
POST /v2/video/reframe JSON — Luma reframe
POST /v2/video/enhance JSON — upscale / deep clean
POST /v2/video/sound-effect JSON — AI sound on video
POST /v2/video/avatars/lip-sync JSON — Creatify avatar
POST /v2/video/lip-sync JSON — image or video + audio or TTS
POST /v2/video/video-effects JSON — image_url, effect
POST /v2/video/replace-background JSON — composite over bg
POST /v2/video/reference-to-video JSON — image_urls, prompt
POST /v2/video/video-to-video JSON — modify video
POST /v2/video/audio JSON — mux audio onto video

Workflow

  1. Upload or host media; pass HTTPS URLs in JSON (video_url, image_url, audio_url, …).
  2. Call the route with Content-Type: application/json.
  3. Read results on the response asset. For long jobs set async_mode: true and poll until status is success.

Responses

  • All routes (including upload) → asset object without a data wrapper
  • Output URLs are in results; poll by asset id when async_mode is true

Authentication

X-Api-Key: YOUR_API_KEY on every request.

Legacy form-data routes (with data wrapper on some responses) remain at /image/*, /video/*, /audio/*, and /text/* (tagged (Legacy) in the schema).

Upload Video

Uploads a video file and returns an asset whose results contain the hosted URL.

Content-Type: multipart/form-data — field video_file only (no JSON body).

import requests

with open("clip.mp4", "rb") as f:
    r = requests.post(
        "https://api.vimmerse.net/v2/video",
        headers={"X-Api-Key": "YOUR_API_KEY"},
        files={"video_file": ("clip.mp4", f, "video/mp4")},
        timeout=300,
    )
r.raise_for_status()
print(r.json()["results"])
SecurityAPIKeyHeader
Request
query Parameters
video_url
string (Video Url)
Default: ""
video_file_path
any (Video File Path)
asset_id
any (Asset Id)
removing_asset_args
any (Removing Asset Args)
option
any (Option)
Default: "UploadVideo"
video_duration
any (Video Duration)
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: multipart/form-data
video_file
string <binary> (Video input file)

Input video file.

Responses
200

Uploaded Video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video
Request samples
Response samples
application/json
{}

Estimate Credits

Estimates credits for a video route without creating an asset. Same pricing as the matching POST /v2/video/ handler.

Content-Type: application/json

Field Required Notes
app_name Yes e.g. reference-to-video, video-to-video, edit-video
option Yes Tool/model for that route
quantity No Default 1
duration No Seconds (reference-to-video, etc.)
prompt No Used when pricing depends on length
Request
Request Body schema: application/json
required
app_name
string (App Name)
Default: "reference-to-video"

Internal route id on the asset record (same as the target POST /video/* route). Available values: reference-to-video (default), video-effects, edit-video, lip-sync, replace-background-video, video-to-video, text-image-to-video, try-on, upload-video (0 credits).

option
required
string (Generation Option)

Model/tool option on the target video endpoint (e.g. KlingO, AutoLipSync).

quantity
integer (Quantity) [ 1 .. 4 ]
Default: 1
prompt
string (Prompt)
Default: ""

Used for AvatarLipSync-style length-based pricing when applicable.

Duration (seconds) (integer) or Duration (seconds) (null) (Duration (seconds))

Same as duration on video routes; billed in 5-second blocks.

Video Duration (number) or Video Duration (null) (Video Duration)

Explicit seconds override (alias of duration for video apps).

Responses
200

Credit estimate and breakdown

422

Validation Error

post/v2/video/estimate-credits
Request samples
Response samples
application/json
{
  • "total_credits": 0,
  • "breakdown": { }
}

Crop Video

Crops video_url to aspect_ratio. Optional offset_x / offset_y set the crop origin (default: center).

Most clients should use async_mode: true (default).

import requests

r = requests.post(
    "https://api.vimmerse.net/v2/video/crop-to-aspect-ratio",
    headers={"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={"video_url": "https://…/input.mp4", "aspect_ratio": "9:16", "async_mode": True},
    timeout=60,
)
print(r.json()["status"], r.json().get("results"))
SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
video_url
required
string (Video URL)
aspect_ratio
string (Aspect Ratio) ^(\d+):(\d+)$
Default: "16:9"
X-Axis Offset (integer) or X-Axis Offset (null) (X-Axis Offset)
Y-Axis Offset (integer) or Y-Axis Offset (null) (Y-Axis Offset)
Responses
200

Cropped video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/crop-to-aspect-ratio
Request samples
Response samples
application/json
{}

Reframe Video

AI reframing (Luma) to a new aspect_ratio using prompt. Optional grid/position fields fine-tune the frame.

import requests

r = requests.post(
    "https://api.vimmerse.net/v2/video/reframe",
    headers={"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
        "video_url": "https://…/input.mp4",
        "aspect_ratio": "16:9",
        "prompt": "Make it realistic",
        "async_mode": True,
    },
    timeout=60,
)
print(r.json())
SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
video_url
required
string (Video URL)
aspect_ratio
string (Aspect Ratio) ^(\d+):(\d+)$
Default: "16:9"
prompt
string (Prompt)
Default: "Make it realistic"
Grid Position X (integer) or Grid Position X (null) (Grid Position X)
Grid Position Y (integer) or Grid Position Y (null) (Grid Position Y)
X Start (integer) or X Start (null) (X Start)
X End (integer) or X End (null) (X End)
Y Start (integer) or Y Start (null) (Y Start)
Y End (integer) or Y End (null) (Y End)
Responses
200

Reframed video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/reframe
Request samples
Response samples
application/json
{}

Enhance Video

Enhances video_url. enhance_mode: 4X, 2X, 4X&DeepClean, 2X&DeepClean, or DeepClean. compression_scale: 01 (default 0.5).

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
video_url
required
string (Video URL)
enhance_mode
string (Enhance Mode)
Default: "4X&DeepClean"

4X, 2X, 4X&DeepClean, 2X&DeepClean, or DeepClean.

compression_scale
string (Compression Scale)
Default: "0.5"
Responses
200

Enhanced video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/enhance
Request samples
Response samples
application/json
{}

Add Sound Effect

Adds an AI sound effect to video_url described by prompt.

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
video_url
required
string (Video URL)
prompt
string (Prompt)
Default: ""

Prompt describing the sound effect.

Responses
200

Video with sound effect

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/sound-effect
Request samples
Response samples
application/json
{}

Avatar Lip-Sync Video

Creatify talking-avatar video. Provide avatar_id, voice_id, and prompt. Optional bg_image_url, audio_url, aspect_ratio (1:1, 16:9, 9:16), show_caption (On/Off).

List avatars/voices via internal GET routes (not in public schema).

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
avatar_id
string (Avatar ID)
Default: ""
voice_id
string (Voice ID)
Default: ""
prompt
string (Prompt)
Default: ""

Speech script for the avatar.

bg_image_url
string (Background Image URL)
Default: ""
audio_url
string (Background Audio URL)
Default: ""
aspect_ratio
string (Aspect Ratio)
Default: "16:9"

1:1, 16:9, or 9:16.

show_caption
string (Show Caption)
Default: "On"

On or Off.

Responses
200

Lip sync video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/avatars/lip-sync
Request samples
Response samples
application/json
{}

Lip-Sync Video

Lip-sync using URLs only.

Provide:

  • Visual: image_url and/or video_url
  • Audio: audio_url, or prompt + voice for TTS

option: AutoLipSync, SyncLipSync, HummingBird, NewportLipSync, KlingAvatar, PVideo, NewportDreamAvatar

import requests

r = requests.post(
    "https://api.vimmerse.net/v2/video/lip-sync",
    headers={"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
        "image_url": "https://…/face.png",
        "audio_url": "https://…/speech.mp3",
        "option": "AutoLipSync",
        "async_mode": True,
    },
    timeout=60,
)
print(r.json())
SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
image_url
string (Image URL)
Default: ""
video_url
string (Video URL)
Default: ""
audio_url
string (Audio URL)
Default: ""
prompt
string (Prompt)
Default: ""

Speech prompt when generating audio from text.

option
string (Option)
Default: "AutoLipSync"

AutoLipSync, SyncLipSync, HummingBird, NewportLipSync, KlingAvatar, PVideo, NewportDreamAvatar.

voice
string (Narrator voice)
Default: "AutoV"
Video duration (seconds) (number) or Video duration (seconds) (null) (Video duration (seconds))
Audio duration (seconds) (number) or Audio duration (seconds) (null) (Audio duration (seconds))
Responses
200

Lip sync video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/lip-sync
Request samples
Response samples
application/json
{}

Video Effects

Motion effect from image_url. Use ref_image_url for two-subject effects (e.g. hug). Set aspect_ratio when the provider supports it.

option: PikaEffects, KlingEffects, WanEffects, ViduEffects, PixverseEffects, HiggsfieldEffects

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
image_url
required
string (Base image URL)
ref_image_url
string (Optional reference image URL)
Default: ""
option
string (Effects tool)
Default: "HiggsfieldEffects"
effect
string (Effect name)
Default: "BulletTime"
prompt
string (Prompt)
Default: ""
Aspect Ratio (string) or Aspect Ratio (null) (Aspect Ratio)
quantity
integer (Quantity) [ 1 .. 4 ]
Default: 1
Responses
200

Generated video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/video-effects
Request samples
Response samples
application/json
{}

Replace Background

Composites video_url over bg_image_url and/or bg_video_url. Tune chroma_key_color, overlay_scale, alignment, offsets, etc.

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
video_url
required
string (Foreground video URL)
bg_image_url
string (Background image URL)
Default: ""
bg_video_url
string (Background video URL)
Default: ""
chroma_key_color
string (Chroma key color)
Default: "origin"
chroma_tolerance
string (Chroma tolerance)
Default: "0.1"
prompt
string (Prompt)
Default: ""
overlay_scale
string (Overlay scale)
Default: "0.6666"
alignment
string (Alignment)
Default: "center"

center, left, or right.

start_time
string (Background video start time)
Default: "0"
crop_to_content
boolean (Crop overlay to content)
Default: true
x_offset
integer (X Offset)
Default: 0
y_offset
integer (Y Offset)
Default: 0
use_rembg_lib
boolean (Use rembg library)
Default: false
Responses
200

Composited video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/replace-background
Request samples
Response samples
application/json
{}

Reference to Video

Generates video from image_urls (at least one) and prompt.

option: AutoR, KlingO, HappyHorse, Grok, SeedanceFast, VeoReference, ViduReference, HeygenAgent, PikaScenes, MinimaxReference

duration: seconds (1–30). elements: optional URL groups for element-aware tools.

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
image_urls
required
Array of strings (Reference image URLs) non-empty
elements
Array of strings (Element item URL groups)
aspect_ratio
string (Aspect Ratio) ^(\d+):(\d+)$
Default: "16:9"
prompt
string (Prompt)
Default: ""
option
string (Video generation tool)
Default: "KlingO"
quantity
integer (Quantity) [ 1 .. 4 ]
Default: 1
duration
integer (Duration (seconds)) [ 1 .. 30 ]
Default: 5
Responses
200

Generated video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/reference-to-video
Request samples
Response samples
application/json
{}

Video to Video

Modifies video_url from prompt. Optional image_url as reference.

option: KlingO, HappyHorse, Grok, SeedanceFast, LumaModify

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
video_url
required
string (Source video URL)
image_url
string (Optional reference image URL)
Default: ""
prompt
string (Modification prompt)
Default: ""
option
string (Video modification tool)
Default: "KlingO"
Responses
200

Modified video

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/video-to-video
Request samples
Response samples
application/json
{}

Attach Audio

Attaches audio_url to video_url.

attach_mode: MatchVideo, PadAudio, MatchAudio, SpeedAdjust, Strict

SecurityAPIKeyHeader
Request
header Parameters
Authorization (string) or Authorization (null) (Authorization)
Username (string) or Username (null) (Username)
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type)
Request Body schema: application/json
required
async_mode
boolean (Async Mode)
Default: true
Webhook URL (string) or Webhook URL (null) (Webhook URL)
video_url
required
string (Video URL)
audio_url
required
string (Audio URL)
attach_mode
string (Attach Mode)
Default: "MatchVideo"

MatchVideo, PadAudio, MatchAudio, SpeedAdjust, or Strict.

Video duration (seconds) (number) or Video duration (seconds) (null) (Video duration (seconds))
Audio duration (seconds) (number) or Audio duration (seconds) (null) (Audio duration (seconds))
Responses
200

Video with audio

400

Bad Request

402

Insufficient Credit

422

Validation Error

post/v2/video/audio
Request samples
Response samples
application/json
{}