APIs for creating/editing media via agent orchestration and managing sessions with comprehensive control over user requests. The Agent Orchestration enables iterative creation and editing with context understanding. The agent translates plain conversational requests into actions and orchestrates calls to vimmerse tools and generate the required media accordingly.
| Method | Endpoint | Description | Access |
|---|---|---|---|
POST |
/ |
Interact with an agent, process prompts, and manage session turns | User |
GET |
/catalog/profiles |
List available agent profiles the user can switch between | User |
GET |
/sessions/{agent_name} |
Retrieve a list of sessions for a given agent owned by the authenticated user | User |
GET |
/{session_id} |
Retrieve full conversation turn history for a session | User |
PUT |
/{session_id} |
Update the attributes (e.g. title, visibility_status, agent_name) of a specific session | User |
DELETE |
/{session_id} |
Delete a session and its associated data | User |
GET |
/{customer_id}/sessions |
List all sessions for all agents owned by a given customer account | Admin |
All requests require your API key in the X-Api-Key header:
headers = {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
import requests
import json
BASE_URL = "https://api.vimmerse.net"
API_KEY = "YOUR_API_KEY"
url = f"{BASE_URL}/v2/agent"
headers = {"X-Api-Key": API_KEY, "Content-Type": "application/json"}
try:
# 1. Create first images in a new session
payload = {
"agent_name": "vimi",
"title": "Product ads",
"prompt": "Create two vertical images using GPTImage of the person in the uploaded photo drinking from the strawberry can in the other photo. Make them appear as if taken in a photoshoot session for a marketing poster.",
"image_urls": ["https://asset.vimmerse.net/vimmerse-product/ai_images/upload_ed66297ff41e467f.jpeg","https://asset.vimmerse.net/vimmerse-product/ai_images/upload_88a364d0a8ca4d28.png"],
"new_session": True
}
response = requests.post(url, headers=headers, data=payload, timeout=120)
response.raise_for_status()
result = response.json()
session_id = result["session_id"]
print(f"Session created successfully! ID: {session_id}")
print(f"Response: {result['response']}")
# Example Response
# {
# "session_id": "b9ebe782-da5d-43ee-8297-1959965a2917",
# "agent_name": "vimi",
# "title": "Product ads",
# "user_id": "basel",
# "customer_id": "vimmerse-test-user",
# "response": "The two marketing poster images have been generated:
* [Image 1](https://asset.vimmerse.net/vimmerse-test-user/db8352a9-fb57-4a09-bc4c-443cf3d17cf7/create_image/3142b191-ffe6-4115-b660-9f1d52518320.png)
* [Image 2](https://asset.vimmerse.net/vimmerse-test-user/db8352a9-fb57-4a09-bc4c-443cf3d17cf7/create_image/e7445ad6-ab9c-4055-b05c-01d40e95db62.png)
**Credits Consumed:** 32",
# "credits_consumed_this_turn": 32,
# "total_session_credits_consumed": 32
# }
# 2. Edit one of the image generations further in same session
payload = {
"agent_name": "vimi",
"session_id": "b9ebe782-da5d-43ee-8297-1959965a2917",
"prompt": "take the second photo and add floating strawberries around the person as it was showing in the original strawberry can photo.",
"new_session": False
}
response = requests.post(url, headers=headers, data=payload, timeout=120)
response.raise_for_status()
result = response.json()
print(f"Response: {result['response']}")
# Example Response
# {
# "session_id": "b9ebe782-da5d-43ee-8297-1959965a2917",
# "agent_name": "vimi",
# "title": "Product ads",
# "user_id": "basel",
# "customer_id": "vimmerse-test-user",
# "response": "The updated marketing poster featuring floating strawberries around the person has been generated:
* [Floating Strawberries Marketing Poster](https://asset.vimmerse.net/vimmerse-test-user/25112c57-85d9-4ec8-8494-73e441257531/create_image/35bc5121-a8e8-4c36-9508-90c7d5528c67.png)
**Credits Consumed:** 16",
# "credits_consumed_this_turn": 16,
# "total_session_credits_consumed": 48
# }
# 3. Animate the resulted image into a video in same session
payload = {
"agent_name": "vimi",
"session_id": "b9ebe782-da5d-43ee-8297-1959965a2917",
"prompt": "animate the image into 10 sec video using Google Omni search that it appears as a professional marketing video for the product have the person feeling refreshed and energetic as she is drinking the can.",
"new_session": False
}
response = requests.post(url, headers=headers, data=payload, timeout=600)
response.raise_for_status()
result = response.json()
print(f"Response: {result['response']}")
# Example Response
# {
# "session_id": "b9ebe782-da5d-43ee-8297-1959965a2917",
# "agent_name": "vimi",
# "title": "Product ads",
# "user_id": "basel",
# "customer_id": "vimmerse-test-user",
# "response": "Your 10-second commercial marketing video has been generated:
* [Watch the Video](https://asset.vimmerse.net/vimmerse-test-user/b11a2dc6-ce1b-4bd2-9bc2-238aa1adb081/batch/1/GoogleOmni/b11a2dc6-ce1b-4bd2-9bc2-238aa1adb081.mp4)
**Credits Consumed:** 160",
# "credits_consumed_this_turn": 160,
# "total_session_credits_consumed": 208
# }
except requests.exceptions.HTTPError as e:
print(f"HTTP Error: {e}")
if e.response is not None:
print(f"Response: {e.response.text}")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
import requests
import json
BASE_URL = "https://api.vimmerse.net"
API_KEY = "YOUR_API_KEY"
url = f"{BASE_URL}/v2/agent"
headers = {"X-Api-Key": API_KEY, "Content-Type": "application/json"}
try:
# 1. Create storyboard, character image, and the 3 scene images in a new session
payload = {
"agent_name": "vimi",
"title": "Kid Dream",
"prompt": "create a storyboard of 3 scenes for a kid dreaming about becoming a professional soccer player in pixar style. Create the character image then use it along with the scene prompts to create the 3 scene images.",
"new_session": True
}
response = requests.post(url, headers=headers, data=payload, timeout=300)
response.raise_for_status()
result = response.json()
session_id = result["session_id"]
print(f"Session created successfully! ID: {session_id}")
print(f"Response: {result['response']}")
# Example Response
# {
# "session_id": "ac585e41-0b81-4b87-9d92-ad10392b6e7e",
# "agent_name": "vimi",
# "title": "Kid Dream",
# "user_id": "basel",
# "customer_id": "vimmerse-test-user",
# "response": "Here is your 3-scene Pixar-style storyboard of a young boy's dream to become a professional soccer player:
---
### 🌟 **Character Design Sheet: Leo the Dreamer**
*An enthusiastic 8-year-old boy with messy brown hair, expressive hazel eyes, and a heart full of passion for soccer.*
- **Character Image**: [View Character Concept](https://asset.vimmerse.net/vimmerse-test-user/efa45147-e27f-48a4-bb45-838d5432f57b/create_image/5f813dac-8244-4d0e-b38f-b19f88bcf711.png)
---
### 🎬 **Storyboard Scenes**
#### **Scene 1: The Bedroom Daydream**
> **Description:** In his cozy bedroom late at night, Leo hugs his favorite soccer ball tight in bed. Warm moonlight and starry ceiling decals illuminate his room, which is adorned with posters of soccer legends and trophies, sparking his imagination.
>
> **Image**: [View Scene 1](https://asset.vimmerse.net/vimmerse-test-user/64bc269d-879c-41cc-afab-a96653a57f6c/create_image/047c6b27-5002-4680-8a74-0d3052bcd276.png)
---
#### **Scene 2: Sunset Practice & Dedication**
> **Description:** During golden hour at a local park, Leo trains relentlessly. With glowing sun flares and swirling dust, he winds up a determined, powerful kick toward a makeshift cone goal, radiating pure joy and focus.
>
> **Image**: [View Scene 2](https://asset.vimmerse.net/vimmerse-test-user/944022dd-c979-46cc-96cd-36eb62aa5d86/create_image/058373c9-729e-4d65-ac6f-c955d9477428.png)
---
#### **Scene 3: The Grand Stadium Dream**
> **Description:** The dream comes alive—Leo steps onto the lush green pitch of a colossal, roaring international stadium under brilliant floodlights and raining confetti, ready to take the decisive championship kick.
>
> **Image**: [View Scene 3](https://asset.vimmerse.net/vimmerse-test-user/be4ce053-95cc-42d7-8db8-3e63a9681cff/create_image/e65308d4-e8ee-4a4b-9127-b50137ac12bd.png)
---
### 💳 **Credit Usage Summary**
- **Character Design**: 8 credits
- **Scene 1**: 8 credits
- **Scene 2**: 8 credits
- **Scene 3**: 8 credits
- **Total Credits Consumed**: **32 credits**",
# "credits_consumed_this_turn": 32,
# "total_session_credits_consumed": 32
# }
# 2. Use all 3 scene images in reference-to-video call to make 10 sec video in the same session
payload = {
"agent_name": "vimi",
"session_id": "ac585e41-0b81-4b87-9d92-ad10392b6e7e",
"prompt": "Use these 3 scene images in reference-2-video call to make 10sec video using GoogleOmni. The video starts by the dream scene and ends with the celebration on the playground after all the hard work.",
"new_session": False
}
response = requests.post(url, headers=headers, data=payload, timeout=600)
response.raise_for_status()
result = response.json()
print(f"Response: {result['response']}")
# Example Response
# {
# "session_id": "ac585e41-0b81-4b87-9d92-ad10392b6e7e",
# "agent_name": "vimi",
# "title": "Kid Dream",
# "user_id": "basel",
# "customer_id": "vimmerse-test-user",
# "response": "Here is your 10-second Pixar-style animated video bringing Leo's soccer dream to life:
---
### ⚽ **"The Dream to Victory" Animated Short**
> **Synopsis:** Starting from the serene, moonlit bedroom where young Leo dreams with his soccer ball, the animation fluidly transitions into intense golden hour training on the pitch, and culminates in an ecstatic, heartwarming celebration as all his hard work pays off.
- 🎥 **Video Link**: [Watch Video](https://asset.vimmerse.net/vimmerse-test-user/ai_videos/9751b022-6f42-4a77-ae71-a9590a979264/k1vl4cn.mp4)
- 🖼️ **Thumbnail**: [View Thumbnail](https://asset.vimmerse.net/vimmerse-test-user/ai_videos/9751b022-6f42-4a77-ae71-a9590a979264/k1vl4cn_thumbnail.png)
---
### 💳 **Credit Usage Summary**
- **Tool**: GoogleOmni (10s Reference-to-Video)
- **Credits Consumed**: **160 credits**",
# "credits_consumed_this_turn": 160,
# "total_session_credits_consumed": 192
# }
except requests.exceptions.HTTPError as e:
print(f"HTTP Error: {e}")
if e.response is not None:
print(f"Response: {e.response.text}")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
import requests
import json
import time
BASE_URL = "https://api.vimmerse.net"
API_KEY = "YOUR_API_KEY"
url = f"{BASE_URL}/v2/agent/sessions/vimi"
headers = {"X-Api-Key": API_KEY, "Content-Type": "application/json"}
try:
response = requests.get(url, headers=headers, timeout=60)
response.raise_for_status()
result = response.json()
sessions = result["sessions"]
print(f" sessions: {sessions}")
# Example Response
# {
# "user_id": "basel",
# "sessions": [
# {
# "session_id": "b9ebe782-da5d-43ee-8297-1959965a2917",
# "agent_name": "vimi",
# "title": "Product Ads",
# "updated_at": "2026-08-21T22:54:43.128823+00:00",
# "total_credits": 208
# },
# {
# "session_id": "ac585e41-0b81-4b87-9d92-ad10392b6e7e",
# "agent_name": "vimi",
# "title": "Kid Dream",
# "updated_at": "2026-08-21T05:52:12.026459+00:00",
# "total_credits": 192
# }
# ]
# }
except requests.exceptions.HTTPError as e:
print(f"✗ HTTP Error: {e}")
if e.response is not None:
print(f" Response: {e.response.text}")
exit(1)
except requests.exceptions.RequestException as e:
print(f"✗ Request failed: {e}")
exit(1)
POST /
Sends a prompt request to engage an agent, tracks credit usage, and updates or initializes a session context.
| Field | Location | Type | Required | Default | Description & Possible Values |
|---|---|---|---|---|---|
prompt |
Body | String | Yes | - | Prompt text describing the video generation request. e.g., "Generate a 5-second futuristic city video." |
agent_name |
Body | String | No | "vimi" |
Target agent profile name. e.g., "vimi". |
image_urls |
Body | Array[String] | No | null |
Optional list of image reference URLs or Data URLs. e.g., ["https://example.com/ref.jpg"]. |
video_urls |
Body | Array[String] | No | null |
Optional list of video reference URLs or Data URLs. e.g., ["https://example.com/ref.mp4"]. |
audio_urls |
Body | Array[String] | No | null |
Optional list of audio reference URLs or Data URLs. e.g., ["https://example.com/ref.mp3"]. |
session_id |
Body | String | No | null |
UUID of an existing session to maintain chat context. e.g., "123e4567-e89b-12d3-a456-426614174000". |
title |
Body | String | No | null |
Optional custom title for the session. e.g., "Futuristic City Project". |
new_session |
Body | Boolean | No | false |
Set to true to clear existing history and initiate a new session context. Possible values: true, false. |
async_mode |
Body | Boolean | No | true |
If true, return immediately with status: "processing" and finish the turn in the background. Poll GET /{session_id} until success or failed. |
Post https://api.vimmerse.net/v2/agent
{
"prompt": "Generate a 5-second futuristic city loop.",
"agent_name": "vimi",
"image_urls": ["https://example.com/concept.jpg"],
"session_id": "123e4567-e89b-12d3-a456-426614174000",
"title": "Futuristic City Project",
"new_session": false,
"async_mode": true
}
{
"session_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "vimi",
"title": "Futuristic City Project",
"user_id": "usr_8832",
"customer_id": "cust_4410",
"status": "processing",
"response": "",
"credits_consumed_this_turn": 0,
"total_session_credits_consumed": 20
}
Authorization (string) or Authorization (null) (Authorization) | |
Username (string) or Username (null) (Username) | |
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type) |
Agent response
Bad Request
Insufficient Credit
Validation Error
{- "session_id": "123e4567-e89b-12d3-a456-426614174000",
- "agent_name": "vimi",
- "title": "Futuristic City Project",
- "user_id": "usr_8832",
- "customer_id": "cust_4410",
- "status": "processing",
- "response": "",
- "credits_consumed_this_turn": 0,
- "total_session_credits_consumed": 40
}GET {BASE_URL}/v2/agent/catalog/profiles
Returns agent profiles the caller can switch between. Includes catalog agents (vimi, marco, stori) plus any extra agent_name values from the user's existing sessions.
GET https://api.vimmerse.net/v2/agent/catalog/profiles
{
"agents": [
{
"name": "vimi",
"display_name": "Vimi",
"description": "Create and edit image and video content using Vimmerse tools.",
"avatar_url": "https://distribution.vimmerse.net/presets/image/vimi.jpg"
},
{
"name": "marco",
"display_name": "Marco",
"description": "Create viral social ads and UGC videos with Creatify.",
"avatar_url": "https://distribution.vimmerse.net/presets/image/marco.jpg"
},
{
"name": "stori",
"display_name": "Stori",
"description": "Create storyboards and vertical drama shorts.",
"avatar_url": "https://distribution.vimmerse.net/presets/image/stori.jpg"
}
]
}
Authorization (string) or Authorization (null) (Authorization) | |
Username (string) or Username (null) (Username) | |
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type) |
Agent profiles
Validation Error
{- "agents": [
- {
- "name": "vimi",
- "display_name": "Vimi",
- "description": "Create and edit image and video content using Vimmerse tools.",
}, - {
- "name": "marco",
- "display_name": "Marco",
- "description": "Create viral social ads and UGC videos with Creatify.",
}, - {
- "name": "stori",
- "display_name": "Stori",
- "description": "Create storyboards and vertical drama shorts.",
}
]
}GET {BASE_URL}/v2/agent/sessions/{agent_name}
Retrieves active sessions (up to 100) belonging to the calling user, filtered by agent profile and sorted by most recent.
| Field | Location | Type | Required | Default | Description & Possible Values |
|---|---|---|---|---|---|
agent_name |
Body | String | Yes | "vimi" |
Target agent profile name to filter sessions by. e.g., "vimi". |
GET https://api.vimmerse.net/v2/agent/sessions/vimi
{
"user_id": "usr_8832",
"sessions": [
{
"session_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "vimi",
"title": "Futuristic City Project",
"updated_at": "2026-08-20T16:00:00Z",
"total_credits": 20
},
{
"session_id": "ac585e41-0b81-4b87-9d92-ad10392b6e7e",
"agent_name": "vimi",
"title": "Kid Dream",
"updated_at": "2026-08-21T05:52:12.026459+00:00",
"total_credits": 192
}
]
}
Agent response
Bad Request
Insufficient Credit
Validation Error
{- "user_id": "usr_8832",
- "sessions": [
- {
- "session_id": "123e4567-e89b-12d3-a456-426614174000",
- "agent_name": "vimi",
- "title": "Futuristic City Project",
- "updated_at": "2026-08-20T16:00:00Z",
- "total_credits": 20
}
]
}GET /{session_id}
Retrieves complete context history and turns for a specific session owned by the authenticated user.
| Field | Location | Type | Required | Default | Description & Possible Values |
|---|---|---|---|---|---|
session_id |
Path | String | Yes | - | Unique UUID of the target session. e.g., "123e4567-e89b-12d3-a456-426614174000". |
GET https://api.vimmerse.net/v2/agent/123e4567-e89b-12d3-a456-426614174000
{
"session_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "vimi",
"title": "Futuristic City Project",
"user_id": "usr_8832",
"customer_id": "cust_4410",
"total_credits_consumed": 20,
"updated_at": "2026-08-20T16:00:00Z",
"turns": [
{
"role": "user",
"text": "Generate a 5-second futuristic city loop.",
"credits_consumed": 0,
"image_urls": ["https://example.com/concept.jpg"],
"timestamp": "2026-08-20T15:58:00Z"
},
{
"role": "agent",
"text": "Rendering video based on provided prompt...",
"credits_consumed": 5,
"image_urls": [],
"timestamp": "2026-08-20T16:00:00Z"
}
]
}
Agent response
Bad Request
Insufficient Credit
Validation Error
{- "session_id": "123e4567-e89b-12d3-a456-426614174000",
- "agent_name": "vimi",
- "title": "Futuristic City Project",
- "user_id": "usr_8832",
- "customer_id": "cust_4410",
- "total_credits_consumed": 20,
- "updated_at": "2026-08-20T16:00:00Z",
- "turns": [
- {
- "role": "user",
- "text": "Generate a 5-second futuristic city loop.",
- "credits_consumed": 0,
- "timestamp": "2026-08-20T15:58:00Z"
}, - {
- "role": "agent",
- "text": "Rendering video based on provided prompt...",
- "credits_consumed": 5,
- "timestamp": "2026-08-20T16:00:00Z"
}
]
}PUT /{session_id}
Updates the attributes of a specific session owned by the authenticated user.
| Field | Location | Type | Required | Default | Description & Possible Values |
|---|---|---|---|---|---|
session_id |
Path | String | Yes | - | Unique UUID of the session to update. e.g., "123e4567-e89b-12d3-a456-426614174000". |
title |
Body | String | No | - | Non-empty replacement title embedded in JSON body. e.g., "Updated Cyberpunk Scene". |
visibility_status |
Body | String | No | - | Non-empty replacement visibility embedded in JSON body. e.g., 0 private, 1 unlisted, 2 public. |
agent_name |
Body | String | No | - | Non-empty replacement agent_name embedded in JSON body. e.g., "vimi". |
PUT https://api.vimmerse.net/v2/agent/123e4567-e89b-12d3-a456-426614174000
{
"title": "Updated Cyberpunk Scene",
"visibility_status": "2"
}
{
"status": "success",
"session_id": "123e4567-e89b-12d3-a456-426614174000",
"title": "Updated Cyberpunk Scene",
"visibility_status": "2",
"agent_name": "vimi",
}
Authorization (string) or Authorization (null) (Authorization) | |
Username (string) or Username (null) (Username) | |
X-Client-Type (string) or X-Client-Type (null) (X-Client-Type) |
Title (string) or Title (null) (Title) Default: "" Updated session title. | |
Visibility Status (string) or Visibility Status (null) (Visibility Status) Default: "1" Session visibility: 0=private, 1=unlisted, 2=public | |
Agent Name (string) or Agent Name (null) (Agent Name) Default: "vimi" Updated agent name. |
Session info updated
Bad Request
Forbidden
Not Found
Validation Error
{- "status": "success",
- "session_id": "123e4567-e89b-12d3-a456-426614174000",
- "title": "Updated Cyberpunk Scene",
- "visibility_status": "2",
- "agent_name": "vimi"
}DELETE /{session_id}
Permanently removes a session record and its turn history from the database.
| Field | Location | Type | Required | Default | Description & Possible Values |
|---|---|---|---|---|---|
session_id |
Path | String | Yes | - | Unique UUID of the target session to delete. e.g., "123e4567-e89b-12d3-a456-426614174000". |
DELETE https://api.vimmerse.net/v2/agent/123e4567-e89b-12d3-a456-426614174000
{
"status": "success",
"session_id": "123e4567-e89b-12d3-a456-426614174000"
}
Agent response
Bad Request
Insufficient Credit
Validation Error
{- "status": "success",
- "session_id": "123e4567-e89b-12d3-a456-426614174000"
}GET /{customer_id}/sessions
Admin endpoint to list all user sessions registered under a specific customer account, ordered by most recently updated.
| Field | Location | Type | Required | Default | Description & Possible Values |
|---|---|---|---|---|---|
customer_id |
Path | String | Yes | - | Unique identifier of the target customer account. e.g., "cust_4410". |
GET https://api.vimmerse.net/v2/agent/cust_4410/sessions
{
"customer_id": "cust_4410",
"sessions": [
{
"session_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "vimi",
"primary_user_id": "usr_8832",
"title": "Updated Cyberpunk Scene",
"total_credits": 20,
"updated_at": "2026-08-20T16:00:00Z"
}
]
}
Agent response
Bad Request
Insufficient Credit
Validation Error
{- "customer_id": "cust_4410",
- "sessions": [
- {
- "session_id": "123e4567-e89b-12d3-a456-426614174000",
- "agent_name": "vimi",
- "primary_user_id": "usr_8832",
- "title": "Updated Cyberpunk Scene",
- "total_credits": 20,
- "updated_at": "2026-08-20T16:00:00Z"
}
]
}