API Reference v1
Complete REST API documentation for Influencer Studio. Generate images, videos, and manage your account programmatically.
Quick Links
Authentication
All API requests require authentication using a Bearer token. Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY You can generate API keys from your account settings.
Base URL
https://influencerstudio.com/api/v1 Influencers
/api/v1/influencersList influencers
Get a list of all influencers belonging to your team with their basic information and generation readiness status.
Responses
curl -X GET "https://influencerstudio.com/api/v1/influencers" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "clxxxx_influencer_001",
"name": "Sofia Martinez",
"face_image": "https://cdn.influencerstudio.com/influencers/sofia_face.jpg",
"best_full_image": "https://cdn.influencerstudio.com/influencers/sofia_full.jpg",
"training_status": "completed",
"ready_for_generation": true,
"created_at": "2026-01-15T14:30:00.000Z"
},
{
"id": "clxxxx_influencer_002",
"name": "Marcus Chen",
"face_image": "https://cdn.influencerstudio.com/influencers/marcus_face.jpg",
"best_full_image": "https://cdn.influencerstudio.com/influencers/marcus_full.jpg",
"training_status": "training",
"ready_for_generation": false,
"created_at": "2026-02-01T09:15:00.000Z"
}
]/api/v1/influencers/createCreate influencer
Create a new influencer from a set of images. The first image will be used as the face image. Images are automatically analyzed for pose and content. Costs 250 credits.
Request Body
| Field | Type | Description |
|---|---|---|
name | string | Name for the influencer (auto-generated if not provided) |
image_urls* | array | Array of image URLs (1-20 images). First image will be used as face image. |
workspace_id | string | Optional workspace ID to associate the influencer with |
Responses
curl -X POST "https://influencerstudio.com/api/v1/influencers/create" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sofia Martinez",
"image_urls": [
"https://example.com/photo1.jpg",
"https://example.com/photo2.jpg",
"https://example.com/photo3.jpg",
"https://example.com/photo4.jpg",
"https://example.com/photo5.jpg"
]
}'{
"influencer_id": "clxxxx_influencer_003",
"name": "Sofia Martinez",
"status": "completed",
"ready_for_generation": true,
"credits_used": 250
}/api/v1/influencers/generateGenerate influencer images
Generate images of a trained influencer using Studio 1. Provide high-level parameters like outfit, location, and product placement instead of crafting detailed prompts.
Request Body
| Field | Type | Description |
|---|---|---|
influencer_id* | string | ID of a trained influencer |
prompt | string | Optional text prompt to guide the generation (e.g., 'professional headshot', 'smiling') |
outfit_image | string | URL of an outfit image - the influencer will be dressed in this outfit |
location_image | string | URL of a location/background image - the influencer will be placed in this setting |
reference_pose_image | string | URL of a reference pose image - the influencer will match this pose |
product_image | string | URL of a product image - the product will be placed naturally in the scene |
camera_style | string2 options available default: pro | Camera style: 'pro' for studio quality or 'smartphone' for casual social media style |
lora_url | string | URL to a LoRA .safetensors file. When provided, routes generation through the LoRA flow. Pair with lora_type to select the correct base model. |
lora_type | string6 options available | LoRA base model. Accepted values: 'flux-2-klein', 'z-image', 'flux-lora', 'flux-1-dev', 'qwen-image-2512', 'qwen-image-edit-2511'. Defaults to 'flux-1-dev'. |
batch | integer default: 1 | Number of images to generate (1-4) |
settings | object | - |
settings.aspect_ratio | string default: 1:1 | Image aspect ratio |
workspace_id | string | Workspace ID to save results |
Responses
curl -X POST "https://influencerstudio.com/api/v1/influencers/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"influencer_id": "your-influencer-id",
"prompt": "professional portrait photo, smiling",
"outfit_image": "https://example.com/outfit.jpg",
"location_image": "https://example.com/beach-background.jpg",
"reference_pose_image": "https://example.com/pose-reference.jpg",
"product_image": "https://example.com/iphone.jpg",
"camera_style": "pro",
"lora_url": "https://example.com/my-style.safetensors",
"lora_type": "flux-2-klein",
"batch": 2,
"settings": {
"aspect_ratio": "1:1"
}
}'{
"generation_id": "clxxxx1234567890",
"status": "queued",
"images": [
"https://cdn.influencerstudio.com/generations/influencer_001.jpg",
"https://cdn.influencerstudio.com/generations/influencer_002.jpg"
],
"estimated_time": 30,
"credits_used": 48
}/api/v1/influencers/videoGenerate influencer video
Generate a video of a trained influencer using AI-powered planning and Veo 3.1 Quality. Provide a video concept and optional images for product, outfit, and location. The system uses OpenAI to plan the video frames and motion, generates the frames with Studio 1, and creates the video with Veo 3.1 Quality including native audio. If the influencer has a trained voice, voice conversion is automatically applied.
Request Body
| Field | Type | Description |
|---|---|---|
influencer_id* | string | ID of a trained influencer |
prompt* | string | Video concept/description (e.g., 'influencer walking on beach, picks up product and shows it to camera') |
dialog | string | Optional script/dialog for the video (used for audio context and motion planning) |
product_image | string | URL of a product image to feature in the video |
outfit_image | string | URL of an outfit image - the influencer will be dressed in this outfit |
location_image | string | URL of a location/background image - the influencer will be placed in this setting |
aspect_ratio | string2 options available default: 9:16 | Video aspect ratio (Veo 3.1 only supports 16:9 and 9:16) |
workspace_id | string | Workspace ID to save results |
Responses
curl -X POST "https://influencerstudio.com/api/v1/influencers/video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"influencer_id": "your-influencer-id",
"prompt": "Influencer walks toward camera on a beach, picks up a product, and shows it while smiling",
"dialog": "Hey everyone! Check out this amazing new product!",
"product_image": "https://example.com/product.jpg",
"outfit_image": "https://example.com/summer-outfit.jpg",
"location_image": "https://example.com/tropical-beach.jpg",
"aspect_ratio": "9:16"
}'{
"generation_id": "clxxxx_video_001",
"status": "queued",
"first_frame_url": "https://cdn.influencerstudio.com/generations/frame_first.jpg",
"last_frame_url": "https://cdn.influencerstudio.com/generations/frame_last.jpg",
"video_url": null,
"estimated_time": 180,
"credits_used": 328,
"has_voice_conversion": true
}Music
/api/v1/musicList music tracks
Get a list of all music tracks generated by your team. Optionally filter by workspace.
Responses
curl -X GET "https://influencerstudio.com/api/v1/music" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "clxxxx_audio_001",
"title": "Summer Vibes",
"style": "pop, upbeat, electronic",
"url": "https://cdn.influencerstudio.com/music/summer_vibes.mp3",
"status": "completed",
"generation_id": "clxxxx_gen_001",
"created_at": "2026-02-15T10:00:00.000Z"
}
]/api/v1/music/generateGenerate music
Generate a music track using Suno AI. Provide a title, optional style, lyrics, and vocal preferences. The track is generated asynchronously — poll GET /api/v1/generations/{id}/status for the result.
Request Body
| Field | Type | Description |
|---|---|---|
title* | string | Title for the music track |
style | string | Music style/genre description (e.g., 'pop, upbeat, electronic') |
lyrics | string | Lyrics for the song. Leave empty for instrumental. |
instrumental | boolean default: false | Generate instrumental only (no vocals) |
vocal_gender | string2 options available | Vocal gender preference: 'm' for male, 'f' for female |
model | string5 options available default: V4_5PLUS | Suno model version |
workspace_id | string | Optional workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/music/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Summer Vibes",
"style": "pop, upbeat, electronic, feel-good",
"lyrics": "Walking on sunshine, feeling alive\nEvery moment is a reason to thrive",
"instrumental": false,
"vocal_gender": "m",
"model": "V4_5PLUS"
}'{
"generation_id": "clxxxx_gen_music_001",
"status": "queued",
"estimated_time": 30,
"credits_used": 50
}/api/v1/music/{id}Get music track
Get details of a specific music track by its ID, including title, style, audio URL, and status.
Responses
curl -X GET "https://influencerstudio.com/api/v1/music/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"{
"id": "clxxxx_audio_001",
"title": "Summer Vibes",
"style": "pop, upbeat, electronic",
"url": "https://cdn.influencerstudio.com/music/summer_vibes.mp3",
"status": "completed",
"generation_id": "clxxxx_gen_001",
"created_at": "2026-02-15T10:00:00.000Z"
}Voices
/api/v1/voicesList voices
Get a list of all voices belonging to your team. Optionally filter by influencer_id using a query parameter.
Responses
curl -X GET "https://influencerstudio.com/api/v1/voices" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "clxxxx_voice_001",
"name": "Sofia Voice #1",
"description": null,
"type": "cloned",
"audio_url": "https://cdn.influencerstudio.com/voices/sofia_preview.mp3",
"influencer_id": "clxxxx_influencer_001",
"influencer_name": "Sofia Martinez",
"created_at": "2026-02-10T14:30:00.000Z"
},
{
"id": "clxxxx_voice_002",
"name": "Narrator Voice",
"description": null,
"type": "designed",
"audio_url": "https://cdn.influencerstudio.com/voices/narrator_preview.mp3",
"influencer_id": null,
"influencer_name": null,
"created_at": "2026-02-12T09:00:00.000Z"
}
]/api/v1/voices/generateGenerate voice
Create a new AI voice by cloning from an audio file or designing from a text description. Optionally associate with an influencer. Clone uses Cartesia voice cloning; design uses MiniMax voice design.
Request Body
| Field | Type | Description |
|---|---|---|
method* | string2 options available | Voice creation method: 'clone' from audio or 'design' from text prompt |
influencer_id | string | Optional influencer ID to associate the voice with |
audio_url | string | Required for 'clone' method: public URL of audio to clone |
prompt | string | Required for 'design' method: text description of the desired voice |
name | string | Optional name for the voice |
workspace_id | string | Optional workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/voices/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"method": "clone",
"audio_url": "https://example.com/voice-sample.mp3",
"name": "My Custom Voice"
}'{
"voice_id": "clxxxx_voice_003",
"name": "My Custom Voice",
"type": "cloned",
"audio_url": "https://cdn.influencerstudio.com/voices/custom_preview.mp3",
"influencer_id": null,
"status": "completed",
"credits_used": 0
}/api/v1/voices/{id}Get voice
Get details of a specific voice by its ID, including the Cartesia voice ID for TTS generation.
Responses
curl -X GET "https://influencerstudio.com/api/v1/voices/{id}" \
-H "Authorization: Bearer YOUR_API_KEY"{
"id": "clxxxx_voice_001",
"name": "Sofia Voice #1",
"description": null,
"type": "cloned",
"audio_url": "https://cdn.influencerstudio.com/voices/sofia_preview.mp3",
"custom_voice_id": "cartesia_xxxxx",
"influencer_id": "clxxxx_influencer_001",
"influencer_name": "Sofia Martinez",
"created_at": "2026-02-10T14:30:00.000Z"
}Models
/api/v1/models/imagesList image models
Returns all supported image models with their capabilities, settings, and LoRA support. Models with supports_lora: true also include a lora_types array listing accepted lora_type values (e.g. 'flux-2-klein', 'z-image') for use alongside lora_url.
Responses
curl -X GET "https://influencerstudio.com/api/v1/models/images" \
-H "Authorization: Bearer YOUR_API_KEY"/api/v1/models/videosList video models
Returns all supported video models with their capabilities and settings.
Responses
curl -X GET "https://influencerstudio.com/api/v1/models/videos" \
-H "Authorization: Bearer YOUR_API_KEY"Images
/api/v1/images/generate-faceGenerate face images
Generate face images using multiple AI models (Grok Imagine + 14 FAL models) for maximum variety. Each image is generated by a different model. Batch 1-10 faces per request. Poll GET /api/v1/generations/{id}/status for results.
Request Body
| Field | Type | Description |
|---|---|---|
prompt* | string | Text description of the face to generate (e.g., 'beautiful woman with green eyes, natural lighting') |
negative_prompt | string | Things to avoid in the generated face |
batch | integer default: 4 | Number of face images to generate (1-10) |
gender | string | Gender for the face (e.g., 'female', 'male') |
ethnicity | string | Ethnicity for the face (e.g., 'Asian', 'White Caucasian') |
hair_color | string | Hair color (e.g., 'blonde hair', 'brown hair') |
seed | number | Optional seed for reproducibility |
workspace_id | string | Optional workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/images/generate-face" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "beautiful woman with green eyes, natural lighting, professional headshot",
"batch": 4,
"gender": "female",
"ethnicity": "White Caucasian",
"hair_color": "blonde hair"
}'{
"generation_id": "clxxxx_gen_face_001",
"status": "queued",
"batch": 4,
"estimated_time": 60,
"credits_used": 0
}/api/v1/images/generateGenerate images
Generate images using a unified model name (e.g., 'nano-banana-2', 'flux-ultra', 'seedream-5'). If init_image is provided, the model's image-to-image variant is used automatically; otherwise text-to-image. Use lora_url to apply a custom LoRA (.safetensors) and lora_type to select the base model (e.g. 'flux-2-klein', 'z-image'). See GET /api/v1/models/images for all models and their accepted lora_types.
Request Body
| Field | Type | Description |
|---|---|---|
prompt* | string | Text description of the image to generate. |
negative_prompt | string | Things to avoid in the generated image |
model | string34 options available default: studio-1 | AI model to use for generation. Use short names like 'nano-banana-2', 'flux-ultra', 'seedream-5'. Auto-routes to text-to-image or image-to-image based on whether init_image is provided. |
influencer_id | string | Optional: ID of a trained influencer. If an influencer is used, studio-1 model will be used. |
lora_url | string | Optional: URL of a LoRA weights file (.safetensors) to apply custom style or character consistency. Only works with LoRA-compatible models — see GET /api/v1/models/images for models marked with supports_lora. |
lora_type | string6 options available | LoRA base model. Accepted values: 'flux-2-klein', 'z-image', 'flux-lora', 'flux-1-dev', 'qwen-image-2512', 'qwen-image-edit-2511'. Defaults to 'flux-1-dev'. |
batch | integer default: 1 | Number of images to be generated. |
settings | object | - |
settings.aspect_ratio | string default: 1:1 | Image aspect ratio |
settings.num_inference_steps | integer default: 28 | - |
init_image | string | Optional: URL of an initial image |
webhook | string | - |
workspace_id | string | - |
Responses
curl -X POST "https://influencerstudio.com/api/v1/images/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A professional headshot of a person in business attire, studio lighting",
"model": "studio-1",
"lora_url": "https://example.com/my-custom-style.safetensors",
"batch": 2,
"settings": {
"aspect_ratio": "1:1"
},
"lora_type": "flux-2-klein"
}'{
"generation_id": "clxxxx1234567890",
"status": "queued",
"images": [
"https://cdn.influencerstudio.com/generations/img_001.jpg",
"https://cdn.influencerstudio.com/generations/img_002.jpg"
],
"estimated_time": 30,
"credits_used": 48
}/api/v1/images/editEdit image
Edit an existing image using AI inpainting with a text prompt
Request Body
| Field | Type | Description |
|---|---|---|
image_url* | string | Public URL of the image to edit |
prompt* | string | Description of the edits to make to the image |
additional_images | array | Optional: Additional reference images for context |
model | string8 options available default: SEEDREAM | AI model for editing |
webhook | string | Optional: Webhook URL to receive completion notifications |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/images/edit" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/image.jpg",
"prompt": "change the background to a beach",
"model": "SEEDREAM"
}'{
"generation_id": "clxxxx1234567890",
"status": "queued",
"image_id": "clxxxx0987654321",
"estimated_time": 15,
"credits_used": 18
}Videos
/api/v1/videos/generateGenerate video
Generate a video using a unified model name (e.g., 'kling-3', 'veo-3.1', 'sora-2'). If first_frame_image is provided, the model's image-to-video variant is used automatically; otherwise text-to-video.
Request Body
| Field | Type | Description |
|---|---|---|
prompt* | string | Text description of the video to generate. |
model | string20 options available default: kling-3 | Video generation model. Use short names like 'kling-3', 'veo-3.1', 'sora-2'. Auto-routes to text-to-video or image-to-video based on whether first_frame_image is provided. |
settings | object | - |
settings.aspect_ratio | string default: 16:9 | Video aspect ratio. Options: '16:9', '9:16', '1:1'. Default: '16:9' |
settings.duration | integer default: 5 | Video duration in seconds. Range: 1-10, Default: 5 |
first_frame_image | string | Optional: URL of image to use as first frame |
webhook | string | Optional: Webhook URL to receive completion notifications |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A person walking through a city, cinematic",
"model": "kling-3",
"settings": {
"aspect_ratio": "16:9",
"duration": 5
}
}'{
"generation_id": "clxxxx1234567890",
"status": "queued",
"videos": [
"https://cdn.influencerstudio.com/generations/video_001.mp4"
],
"estimated_time": 120,
"credits_used": 50
}/api/v1/videos/lipsyncCreate lip sync video
Generate a lip-synced video by synchronizing video with audio
Request Body
| Field | Type | Description |
|---|---|---|
video_url* | string | Public URL of the video file to lip-sync |
audio_url* | string | Public URL of the audio file to sync with |
model | string3 options available default: sync-lipsync/v2/pro | Lip-sync model to use |
generation_id | string | Optional: Existing generation ID to add this lip-sync to |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/lipsync" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://example.com/video.mp4",
"audio_url": "https://example.com/audio.mp3",
"model": "sync-lipsync/v2/pro"
}'{
"generation_id": "clxxxx1234567890",
"status": "queued",
"estimated_time": 60,
"credits_used": 25
}/api/v1/videos/motion-controlMotion control video
Transfer movements from a reference video to a character image using Kling 3.0 Pro motion control. Supports element binding for facial consistency (requires character_orientation="video"). Automatically handles video compression.
Request Body
| Field | Type | Description |
|---|---|---|
video_url* | string | Public URL of the reference video containing the motion to transfer |
image_url* | string | Public URL of the character/subject image to apply motion to |
prompt | string | Optional: Text description to guide the motion control generation. Use @Element1 to reference a bound element. |
character_orientation | string2 options available default: video | Character orientation relative to the reference video. 'video' keeps the orientation from the reference video (max 30s), 'image' preserves the orientation from the character image (max 10s). Default: 'video' |
element | object | Optional: Face element for identity preservation (Kling 3.0 only). Requires character_orientation='video'. Reference in prompt as @Element1. |
element.frontal_image_url* | string | Frontal face image URL for the element. Used for facial consistency binding. |
element.reference_image_urls | array | Optional: Additional reference images from different angles (1-3 images) |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/motion-control" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://example.com/reference-video.mp4",
"character_image_url": "https://example.com/character.jpg",
"character_orientation": "video",
"element_binding": [
{
"element_index": 0,
"source_video_url": "https://example.com/face-reference.mp4"
}
]
}'{
"generation_id": "clxxxx_motion_001",
"status": "queued",
"estimated_time": 180
}/api/v1/videos/wan22Generate video with WAN 2.2 + LoRA
Generate a video using WAN 2.2 14B with custom LoRA weights. Pass multiple LoRAs (e.g. high-noise + low-noise variants) together for best results. When image_url is provided, runs image-to-video (I2V); otherwise runs text-to-video (T2V). This call is synchronous and returns the video URL directly — no polling required.
Request Body
| Field | Type | Description |
|---|---|---|
mode* | string2 options available | Generation mode: 't2v' for text-to-video, 'i2v' for image-to-video. |
prompt* | string | Text prompt describing the video content. |
image_url | string | Source image URL. Required when mode is 'i2v'. |
influencer_id | string | Optional influencer ID for tracking. |
loras* | array | LoRA weights to apply. Include both high-noise and low-noise variants together for best results, each with their own scale. |
settings | object | - |
settings.resolution | string3 options available default: 720p | Output resolution. Default: 720p |
settings.aspect_ratio | string3 options available default: 16:9 | Aspect ratio. Default: 16:9 |
settings.num_frames | integer default: 81 | Number of frames to generate (17–161). Default: 81 |
settings.frames_per_second | integer default: 16 | Playback FPS (4–60). Default: 16 |
settings.num_inference_steps | integer default: 27 | Inference steps. Higher = better quality, slower. Default: 27 |
settings.guidance_scale | number default: 3.5 | Prompt adherence strength. Default: 3.5 |
settings.enable_prompt_expansion | boolean default: false | Use LLM to expand the prompt with extra detail. Default: false |
settings.seed | integer | Random seed for reproducibility |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/wan22" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "t2v",
"prompt": "A beautiful woman walks confidently along a sunlit beach, slow motion, cinematic",
"loras": [
{
"path": "https://example.com/loras/T2V_14b_HighNoise_v2.safetensors",
"scale": 1,
"transformer": "high"
},
{
"path": "https://example.com/loras/T2V_14b_LowNoise_v2.safetensors",
"scale": 1,
"transformer": "low"
}
],
"settings": {
"resolution": "720p",
"aspect_ratio": "16:9",
"num_frames": 81,
"frames_per_second": 16
}
}'{
"generation_id": "clxxxx_wan22_001",
"video_url": "https://cdn.influencerstudio.com/generations/wan22_video_001.mp4",
"mode": "text-to-video"
}/api/v1/videos/reference-to-videoReference to video
Generate a video from reference images and text using Kling 3.0 Pro reference-to-video. Supports character/object elements for identity consistency, multi-shot prompts, start/end frames, voice conversion, and product/outfit/location images.
Request Body
| Field | Type | Description |
|---|---|---|
prompt* | string | Text description of the video to generate. Use @Element1, @Element2, etc. to reference character/object elements in the prompt. If influencer_id is provided, the influencer is automatically mapped to @Element1. |
influencer_id | string | Optional: ID of a trained influencer to use as a character element. The influencer's images are automatically resolved and mapped to @Element1 in the prompt. Requires the influencer to be ready for generation. |
elements | array | Optional: Character/object elements for identity-consistent video generation. Each element gets an @Element{N} reference for the prompt. Cannot be used together with influencer_id. |
image_urls | array | Optional: Style or background reference images (max 2). Referenced as @Image1, @Image2 in the prompt. |
start_image_url | string | Optional: Image to use as the first frame of the video |
end_image_url | string | Optional: Image to use as the last frame of the video |
multi_prompt | array | Optional: Multi-shot video with different prompts per segment. When provided, the main prompt is ignored and each segment uses its own prompt and duration. |
duration | string default: 5 | Video duration in seconds. Options: '5', '10'. Default: '5'. Ignored when multi_prompt is provided. |
aspect_ratio | string3 options available default: 16:9 | Video aspect ratio. Default: '16:9' |
script | string | Optional: Dialogue script for the character. Embedded into the prompt to generate lip movements. |
voice_id | string | Optional: Voice ID for post-generation voice conversion. Use a voice from GET /api/v1/voices. |
product_image_urls | array | Optional: Product images to incorporate into the video as elements |
outfit_image_url | string | Optional: Outfit image to apply to the character |
location_image_urls | array | Optional: Location/background images for the scene |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/reference-to-video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "@Element1 walks toward camera on a beach, picks up @Image1, and shows it while smiling",
"influencer_id": "your-influencer-id",
"image_urls": [
"https://example.com/product.jpg"
],
"duration": "5",
"aspect_ratio": "16:9"
}'{
"generation_id": "clxxxx_ref_video_001",
"status": "queued",
"estimated_time": 180
}/api/v1/videos/upscale/seedvrUpscale video with SeedVR
Upscale a video using SeedVR (FAL AI). Supports factor-based or target-resolution upscaling. Priced per output megapixel. Poll GET /api/v1/generations/{id}/status for the result.
Request Body
| Field | Type | Description |
|---|---|---|
video_url* | string | Public URL of the video to upscale. |
upscale_mode | string2 options available default: factor | Upscale mode. 'factor' scales by a multiplier, 'target' scales to a specific resolution. Default: 'factor' |
upscale_factor | number default: 2 | Upscale multiplier. Used when upscale_mode is 'factor'. Default: 2 |
target_resolution | string4 options available | Target output resolution. Used when upscale_mode is 'target'. |
output_format | string default: X264 (.mp4) | Output video format. Default: 'X264 (.mp4)' |
output_quality | string4 options available default: high | Output quality level. Default: 'high' |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/upscale/seedvr" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://example.com/video.mp4",
"upscale_mode": "factor",
"upscale_factor": 2,
"output_quality": "high",
"target_resolution": "720p"
}'{
"generation_id": "clxxxx_gen_upscale_001",
"status": "queued",
"estimated_time": 180
}/api/v1/videos/upscale/topazUpscale video with Topaz
Upscale a video using Topaz (FAL AI). Supports 1-4x upscaling, optional FPS boost (16-60 fps), and H.264 output. Priced per second based on output resolution tier. Poll GET /api/v1/generations/{id}/status for the result.
Request Body
| Field | Type | Description |
|---|---|---|
video_url* | string | Public URL of the video to upscale. |
upscale_mode | string2 options available default: factor | Upscale mode. 'factor' scales by a multiplier, 'target' scales to a specific resolution. Default: 'factor' |
upscale_factor | number default: 2 | Upscale multiplier (1-4x). Used when upscale_mode is 'factor'. Default: 2 |
target_resolution | string4 options available | Target output resolution. Used when upscale_mode is 'target'. |
output_format | string default: X264 (.mp4) | Output video format. Default: 'X264 (.mp4)' |
output_quality | string4 options available default: high | Output quality level. Default: 'high' |
target_fps | integer | Optional: Target frame rate for the output video (16-60 fps). Doubles the processing cost when set. |
h264_output | boolean | Optional: Force H.264 codec for the output video. |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/upscale/topaz" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://example.com/video.mp4",
"upscale_mode": "factor",
"target_resolution": "720p",
"output_quality": "high",
"target_fps": 30
}'{
"generation_id": "clxxxx_gen_upscale_002",
"status": "queued",
"estimated_time": 180
}/api/v1/videos/upscale/freepikUpscale video with Freepik
Upscale a video using Freepik. Maximum 15 seconds. Supports 1K/2K/4K output, FPS boost, creativity, sharpening, smart grain, and flavor controls. Flat credit pricing per resolution tier. Poll GET /api/v1/generations/{id}/status for the result.
Request Body
| Field | Type | Description |
|---|---|---|
video_url* | string | Public URL of the video to upscale. Maximum 15 seconds. |
resolution | string3 options available default: 2k | Output resolution. Options: '1k', '2k', '4k'. Default: '2k' |
fps_boost | boolean default: false | Optional: Enable frame rate boost. Default: false |
creativity | integer default: 0 | Optional: Creativity level (0-100). Higher values add more detail. Default: 0 |
sharpen | integer default: 0 | Optional: Sharpening intensity (0-100). Default: 0 |
smart_grain | integer default: 0 | Optional: Grain reduction (0-100). Default: 0 |
flavor | string2 options available default: natural | Optional: Output style. 'vivid' for more vibrant colors, 'natural' for realistic output. Default: 'natural' |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/videos/upscale/freepik" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://example.com/video.mp4",
"resolution": "2k",
"fps_boost": false,
"creativity": 20,
"sharpen": 30,
"flavor": "natural"
}'{
"generation_id": "clxxxx_gen_upscale_003",
"status": "queued",
"estimated_time": 180
}3D Models
/api/v1/models-3d/generateGenerate 3D model
Generate a 3D model from a text prompt using Meshy v6.
Request Body
| Field | Type | Description |
|---|---|---|
prompt* | string | Text description of the 3D model to generate. |
init_image | string | Optional: Image URL for image-to-3D generation |
model | string4 options available default: meshy/v6/text-to-3d | Model ID for 3D generation |
settings | object | Model settings |
settings.mode | string2 options available | Generation mode. 'preview' is faster, 'full' is higher quality. Default: full |
settings.art_style | string2 options available | Art style for the 3D model. Default: realistic |
settings.topology | string2 options available | Mesh topology. 'quad' is better for animation/rigging. Default: triangle |
settings.target_polycount | integer | Target polygon count. Range: 1000-100000. Default: 30000 |
settings.symmetry_mode | string3 options available | Symmetry mode. 'auto' detects automatically. Default: auto |
settings.should_remesh | boolean | Enable remeshing for cleaner topology. Default: true |
settings.is_a_t_pose | boolean | Generate character in A/T pose for rigging. Default: false |
settings.enable_pbr | boolean | Generate PBR texture maps (normal, roughness, metallic). Default: false |
settings.enable_prompt_expansion | boolean | Expand prompt with AI for better results. Default: false |
webhook | string | Optional: Webhook URL to receive completion notifications |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/models-3d/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A medieval knight in full armor",
"settings": {
"mode": "preview",
"art_style": "realistic",
"topology": "quad",
"target_polycount": 50000,
"symmetry_mode": "off",
"should_remesh": true,
"is_a_t_pose": true,
"enable_pbr": true,
"enable_prompt_expansion": true
},
"model": "meshy/v6/text-to-3d"
}'{
"generation_id": "clxxxx1234567890",
"status": "queued",
"model_url": "https://cdn.influencerstudio.com/generations/model_001.glb",
"estimated_time": 180,
"credits_used": 100
}Text
/api/v1/text/generateGenerate text
Generate text using supported Venice, Gemini, and OpenAI models.
Request Body
| Field | Type | Description |
|---|---|---|
prompt* | string | The text prompt to generate a response for |
model | string14 options available default: venice-uncensored | AI model to use. Default: venice-uncensored |
settings | object | Generation settings: temperature, max_tokens, system_prompt |
settings.temperature | number | Controls randomness. Lower = more focused, Higher = more creative. Range: 0-2. Default: 0.7 |
settings.max_tokens | integer | Maximum tokens to generate. Range: 1-16000. Default: 16000 |
settings.system_prompt | string | Optional system prompt to set AI behavior and context |
workspace_id | string | Optional: Specific workspace ID |
Responses
curl -X POST "https://influencerstudio.com/api/v1/text/generate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Write a creative story about a dog",
"model": "venice-uncensored",
"settings": {
"temperature": 0.5,
"max_tokens": 2000,
"system_prompt": "You are a helpful teacher who explains complex topics simply"
}
}'{
"generation_id": "clxxxx1234567890",
"text": "Once upon a time, there was a fluffy golden retriever named Max who loved to chase butterflies in the meadow...",
"model": "gpt-5.4",
"usage": {
"prompt_tokens": 25,
"completion_tokens": 150,
"total_tokens": 175
}
}Generations
/api/v1/generations/{id}/statusGet generation status
Check the status of any generation by its generation_id. Use this to poll for completion after creating an image, video, music, 3D model, or any async generation. The response includes the overall status (queued, processing, completed, failed), result URLs for completed items, per-item details with individual statuses, and credits used. Poll every 2-5 seconds until status is "completed" or "failed".
Responses
curl -X GET "https://influencerstudio.com/api/v1/generations/{id}/status" \
-H "Authorization: Bearer YOUR_API_KEY"{
"generation_id": "clxxxx1234567890",
"status": "completed",
"result_urls": [
"https://cdn.influencerstudio.com/generations/img_001.jpg",
"https://cdn.influencerstudio.com/generations/img_002.jpg"
],
"credits_used": 48,
"total_items": 2,
"completed_items": 2,
"failed_items": 0,
"items": [
{
"id": "clxxxx_img_001",
"type": "image",
"status": "COMPLETED",
"url": "https://cdn.influencerstudio.com/generations/img_001.jpg",
"created_at": "2026-02-03T10:00:00.000Z",
"updated_at": "2026-02-03T10:00:30.000Z"
},
{
"id": "clxxxx_img_002",
"type": "image",
"status": "COMPLETED",
"url": "https://cdn.influencerstudio.com/generations/img_002.jpg",
"created_at": "2026-02-03T10:00:00.000Z",
"updated_at": "2026-02-03T10:00:35.000Z"
}
]
}Billing
/api/v1/billing/plansGet available credit plans
Returns all available one-time credit purchase plans
Responses
curl -X GET "https://influencerstudio.com/api/v1/billing/plans" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "plan_starter",
"name": "Starter Pack",
"description": "500 credits for basic usage",
"storeId": "store_123",
"variants": [
{
"id": "497267",
"active": true,
"price": 9.99,
"currency": "USD",
"interval": "one_time",
"interval_count": 1
}
]
}
]/api/v1/billing/creditsGet current credit balance
Returns the total credit balance for the authenticated team
Responses
curl -X GET "https://influencerstudio.com/api/v1/billing/credits" \
-H "Authorization: Bearer YOUR_API_KEY"1500/api/v1/billing/top-upPurchase credits
Create a Stripe checkout session to purchase credits (one-time purchases only)
Request Body
| Field | Type | Description |
|---|---|---|
plan_id* | string | Plan ID from GET /api/v1/billing/plans |
variant_id | string | Optional: Specific variant ID |
success_url | string | Optional: URL to redirect after successful payment |
cancel_url | string | Optional: URL to redirect if payment is cancelled |
Responses
curl -X POST "https://influencerstudio.com/api/v1/billing/top-up" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "497267"
}'{
"checkoutUrl": "https://checkout.stripe.com/c/pay/cs_test_xxxxx"
}