The Workflow API helps you automate multi-step media production pipelines. You submit a template, inputs, and options, then track progress until completion.
result and step outputs from completions.image_urls in the request body.template_id to a workflow template that defines the processing steps.options object (see tables below).processing_status is success or fail, then read result and completions.| Template ID | Label | Description | Inputs | Options |
|---|---|---|---|---|
| vim_wc26_trading_card | WC 2026 Trading Card | Print person onto a world cup 2026 trading card. | camera, local; provide image_urls in request body |
{"user_name": "\u2014", "aspect_ratio": "{'label': '9:16'", "pipeline_mode": "{'label': 'video'"} |
| vim_company_cards | Company Cards | Place a person in a 2D/3D framed photo themed by the comp... | camera; provide image_urls in request body |
{"company": "{'label': 'Accenture'", "appearance": "3D", "aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_fast_reimagine | Fast Reimagine | Reimagine a person into any desired experience using dyna... | camera; provide image_urls in request body |
{"prompt": "\u2014", "aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_360_safari | 360 @ African Safari | Create a 360 photobooth experience of a person at African... | Template-specific (see options); provide image_urls or option-specific fields |
{"front_view": "\u2014", "right_view": "\u2014", "back_view": "\u2014", "left_view": "\u2014"} |
| vim_360_nyctimessquare | 360 @ NYC Times Square | Create a 360 photobooth experience of a person at NYC Tim... | Template-specific (see options); provide image_urls or option-specific fields |
{"front_view": "\u2014", "right_view": "\u2014", "back_view": "\u2014", "left_view": "\u2014"} |
| vim_giant_me | Giant Me | Transform a person into a gigantic figure at city scale. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_tiny_me | Tiny Me | Transform a person into a miniture figure with expressive... | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_squishy_face | Squishy Face | Transform a person into a fun and squishy face with motion. | camera, local; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_bobblehead_figure | Bobblehead Figure | Transform a person into a fun and quirky bobblehead figur... | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_sticker_me | Sticker Me | Turn a person or people into a sticker. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'"} |
| vim_expression_grid | Expression Grid | Create a 4x4 grid of different expressions for a person. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'"} |
| vim_superheros | Super Heros | Transform a person or group into a superhero-themed squad... | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_genz | Gen Z | Transform a person or group into a high-energy anime-insp... | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_chinese_celebration | Chinese Celebration | Transform a person into a festive Chinese Celebration scene! | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_bride | Bride | Transform a lady into a royal bridal portrait. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_wedding_garden | Wedding Garden | Transform couple into a romantic wedding garden scene. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_wedding_palace | Wedding Palace | Transform a couple into a luxurious wedding palace scene. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_wedding_church | Wedding Church | Transform a couple into a beautiful wedding church scene. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_astronaut | Astronaut | Transform a person into a cinematic deep-space astronaut ... | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_new_year_2026 | New Year 2026 | Place a person/perople into a festive new year celebration! | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_dancing_santa | Dancing Santa | Transform a person into a Santa and make him/her dance wi... | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_birthday | Birthday | Transform your family photo into a birthday party scene! | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_instagramframeescape_0226 | Instagram Frame Escape | Transform a person into an Instagram-style frame escape s... | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "user_name": "\u2014", "job_description": "businessman"} |
| vim_dreamcareer_0226 | Dream Career | Transform a person into his/her dream career scene with c... | camera; provide image_urls in request body |
{"image_description": "\u2014", "aspect_ratio": "{'label': '16:9'"} |
| vim_ces_show | CES Show | Transform a person/people into CES photobooth shot. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_amazonia | Amazonia | Transform a person/people into an Amazonia jungle scene. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_arctic | Arctic | Transform a person/people into an Arctic snow scene. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_sketch_to_fashion_show | Sketch to Fashion Show | Bring a fashion sketch to life as if popping up from the ... | local, asset; provide image_urls in request body |
{"aspect_ratio": "Origin"} |
| vim_sketch_me | Sketch Me | Sketch a person/people from a photo into pencil drawing. | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_product_showcase | Product Showcase | Have a product standing out with a smart photo-shot setti... | local, asset; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_worn_by_invisible | Worn by Invisible | Show a clothingproduct worn by an invisible person. | local, asset; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_infinite_loop | Infinite Loop | Create a 1-min infinite loop animation so video starts an... | Template-specific (see options); provide image_urls or option-specific fields |
{"image_url": "\u2014", "motion_type": "KlingAI", "aspect_ratio": "Origin"} |
| vim_product_poster | Product Poster | Create a dynamic product poster. | local, asset; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_billboard_ads | Billboard Ads | Create a dynamic billboard advertisement in a city street... | local, asset; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_billboard_city | Billboard City | Create a dynamic billboard advertisement in a city setting. | local, asset; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_elegant_presentation | Elegant Presentation | A romantic cinematic luxury showcase where any product is... | local, asset; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| vim_product_bubbles | Product Bubbles | Create a set of animated bubbles around a product. | local, asset; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
| each_explodedloop_0226 | Exploded Loop | Have a product exploded into layers with labels then loop... | Template-specific (see options); provide image_urls or option-specific fields |
{"prompt": "\u2014", "aspect_ratio": "{'label': '9:16'"} |
| each_ugcproduct_0226 | UGC Product | Create a UGC video of a product with crafted marketing me... | Template-specific (see options); provide image_urls or option-specific fields |
{"product_name": "Premium Skincare Serum", "target_audience": "Women aged 25-40 interested in anti-aging skincare", "product_image": "https://distribution.vimmerse.net/presets/image/skincare_product.jpg", "voice": "Sarah", "aspect_ratio": "{'label': '9:16'"} |
| minty_brushingteeth_0226 | Brushing Teeth | — | camera; provide image_urls in request body |
{"aspect_ratio": "{'label': '16:9'", "pipeline_mode": "{'label': 'video'"} |
Each template runs a pipeline that may include:
Some templates support a webhook URL to receive notifications when processing completes. When supported, include webhook_url in the request body. Check template-specific behavior for availability.
Creates a new workflow and starts asynchronous processing.
This endpoint accepts an application/json body. Template-specific configuration is passed via the options object.
import requests
BASE_URL = "https://api.vimmerse.net"
API_KEY = "YOUR_API_KEY"
url = f"{BASE_URL}/v2/workflow"
headers = {
"X-Api-Key": API_KEY,
"Content-Type": "application/json",
}
payload = {
"title": "Campaign Workflow",
"description": "Astronaut-themed launch campaign video",
"visibility_status": "1",
"image_urls": ["https://example.com/input.png"],
"template_id": "vim_new_year_2026",
"options": {
"aspect_ratio": "16:9",
"pipeline_mode": "video"
},
"event_id": "campaign_2026_q1"
}
response = requests.post(url, headers=headers, json=payload, timeout=60)
response.raise_for_status()
print(response.json())
Copy and run this script, then replace only YOUR_API_KEY.
import requests
import time
BASE_URL = "https://api.vimmerse.net"
API_KEY = "YOUR_API_KEY"
HEADERS = {
"X-Api-Key": API_KEY,
"Content-Type": "application/json",
}
# 1) Create workflow
create_url = f"{BASE_URL}/v2/workflow"
create_payload = {
"title": "Campaign Workflow",
"description": "Astronaut-themed launch campaign video",
"visibility_status": "1",
"image_urls": ["https://example.com/input.png"],
"template_id": "vim_new_year_2026",
"options": {
"aspect_ratio": "16:9",
"pipeline_mode": "video"
},
"event_id": "campaign_2026_q1"
}
create_res = requests.post(create_url, headers=HEADERS, json=create_payload, timeout=60)
create_res.raise_for_status()
workflow_data = create_res.json()["data"]
workflow_id = workflow_data["id"]
print(f"Workflow created: {workflow_id}")
print(f"Initial status: {workflow_data.get('processing_status')}")
# 2) Poll workflow status
status_url = f"{BASE_URL}/v2/workflow/{workflow_id}"
max_attempts = 120
for attempt in range(max_attempts):
status_res = requests.get(status_url, headers=HEADERS, timeout=30)
status_res.raise_for_status()
data = status_res.json()["data"]
status = data.get("processing_status", "")
progress = data.get("progress_percentage", 0)
print(f"Attempt {attempt + 1}: status={status}, progress={progress}%")
if status == "success":
print("Workflow completed successfully.")
break
if status == "fail":
raise RuntimeError("Workflow processing failed.")
time.sleep(10)
else:
raise TimeoutError("Workflow processing is taking longer than expected.")
# 3) Print final outputs
result_items = data.get("result", [])
completion_items = data.get("completions", [])
print(f"Final results: {len(result_items)} item(s)")
for item in result_items:
print(f"- {item.get('content_type')}: {item.get('url')}")
print(f"Step completions: {len(completion_items)} step(s)")
for step in completion_items:
flow = step.get("flow")
step_results = step.get("result", [])
print(f"- {flow}: {len(step_results)} output(s)")
New Media
Insufficient Credit
Not Found
Validation Error
{- "id": "workflow-id-12345",
- "title": "Campaign Workflow",
- "description": "Astronaut-themed launch campaign video",
- "visibility_status": "1",
- "model": "vim_new_year_2026",
- "options": {
- "aspect_ratio": "16:9",
- "pipeline_mode": "video"
}, - "primary_user_id": "user@example.com",
- "customer_id": "customer-id",
- "processing_status": "success",
- "progress_percentage": 100,
- "completions": [
- {
- "flow": "create_media",
- "result": [
]
}
], - "result": [
], - "created_at": "2025-04-11 18:33:59.780864+00:00",
- "updated_at": "2025-04-11 18:43:47.510893+00:00"
}Retrieves workflow details including processing status, progress, and generated outputs.
Use this endpoint in polling loops after creation until processing_status is success or fail.
Workflow Object
Not Found
Validation Error
{- "id": "workflow-id-12345",
- "title": "Campaign Workflow",
- "description": "Astronaut-themed launch campaign video",
- "visibility_status": "1",
- "model": "vim_new_year_2026",
- "options": {
- "aspect_ratio": "16:9",
- "pipeline_mode": "video"
}, - "primary_user_id": "user@example.com",
- "customer_id": "customer-id",
- "processing_status": "success",
- "progress_percentage": 100,
- "completions": [
- {
- "flow": "create_media",
- "result": [
]
}
], - "result": [
], - "created_at": "2025-04-11 18:33:59.780864+00:00",
- "updated_at": "2025-04-11 18:43:47.510893+00:00"
}