Workflow

APIs for building and running template-based video workflows using JSON requests.

Overview

The Workflow API helps you automate multi-step media production pipelines. You submit a template, inputs, and options, then track progress until completion.

Typical Lifecycle

  1. Create a workflow with a template and JSON options.
  2. Poll workflow status to monitor progress.
  3. Read final outputs from result and step outputs from completions.
  4. Optionally update metadata or delete completed workflows.

How Workflows Work

  1. Upload images — Provide one or more images via image_urls in the request body.
  2. Select template — Set template_id to a workflow template that defines the processing steps.
  3. Configure options — Pass template-specific options in the options object (see tables below).
  4. Process — The workflow runs all steps in sequence asynchronously.
  5. Get results — Poll until processing_status is success or fail, then read result and completions.

Templates in use

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'"}

Workflow Processing Steps

Each template runs a pipeline that may include:

  • Content cropping and alpha channel replacement
  • Image-to-image transformation
  • Background replacement
  • Video animation creation
  • Upscaling and enhancement
  • Video composition

Webhook Integration

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.

Create Workflow

Creates a new workflow and starts asynchronous processing.

This endpoint accepts an application/json body. Template-specific configuration is passed via the options object.

JSON Request Example (Python)

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())

Full Example: Create Workflow and Poll Until Complete

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)")
SecurityAPIKeyHeader
Request
Request Body schema: application/json
required
title
string (Title)
Default: ""
description
string (Description)
Default: ""
visibility_status
string (Visibility Status)
Default: "1"

Workflow visibility status.

image_urls
Array of strings (Image URLs)

Input image URLs for workflow generation.

template_id
string (Template ID)
Default: "vim_new_year_2026"

Template ID of the workflow.

object (Options)

Workflow options object.

event_id
string (Event ID)
Default: "no_event"

Event ID of the workflow.

Responses
200

New Media

402

Insufficient Credit

404

Not Found

422

Validation Error

post/v2/workflow
Request samples
Response samples
application/json
{
  • "id": "workflow-id-12345",
  • "title": "Campaign Workflow",
  • "description": "Astronaut-themed launch campaign video",
  • "visibility_status": "1",
  • "model": "vim_new_year_2026",
  • "options": {
    },
  • "primary_user_id": "user@example.com",
  • "customer_id": "customer-id",
  • "processing_status": "success",
  • "progress_percentage": 100,
  • "completions": [],
  • "result": [],
  • "created_at": "2025-04-11 18:33:59.780864+00:00",
  • "updated_at": "2025-04-11 18:43:47.510893+00:00"
}

Get Workflow Status

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.

SecurityAPIKeyHeader
Responses
200

Workflow Object

404

Not Found

422

Validation Error

get/v2/workflow/{workflow_id}
Request samples
Response samples
application/json
{
  • "id": "workflow-id-12345",
  • "title": "Campaign Workflow",
  • "description": "Astronaut-themed launch campaign video",
  • "visibility_status": "1",
  • "model": "vim_new_year_2026",
  • "options": {
    },
  • "primary_user_id": "user@example.com",
  • "customer_id": "customer-id",
  • "processing_status": "success",
  • "progress_percentage": 100,
  • "completions": [],
  • "result": [],
  • "created_at": "2025-04-11 18:33:59.780864+00:00",
  • "updated_at": "2025-04-11 18:43:47.510893+00:00"
}