API Reference v1

Complete REST API documentation for Influencer Studio. Generate images, videos, and manage your account programmatically.

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

GET/api/v1/influencers

List influencers

Get a list of all influencers belonging to your team with their basic information and generation readiness status.

Responses

200List of influencers
401Unauthorized
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/influencers" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
[
  {
    "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"
  }
]
POST/api/v1/influencers/create

Create 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

FieldTypeDescription
namestringName for the influencer (auto-generated if not provided)
image_urls*arrayArray of image URLs (1-20 images). First image will be used as face image.
workspace_idstringOptional workspace ID to associate the influencer with

Responses

200Influencer created successfully
400Invalid request
401Unauthorized
402Insufficient credits
Requires authentication
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"
  ]
}'
200Sample Response
{
  "influencer_id": "clxxxx_influencer_003",
  "name": "Sofia Martinez",
  "status": "completed",
  "ready_for_generation": true,
  "credits_used": 250
}
POST/api/v1/influencers/generate

Generate 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

FieldTypeDescription
influencer_id*stringID of a trained influencer
promptstringOptional text prompt to guide the generation (e.g., 'professional headshot', 'smiling')
outfit_imagestringURL of an outfit image - the influencer will be dressed in this outfit
location_imagestringURL of a location/background image - the influencer will be placed in this setting
reference_pose_imagestringURL of a reference pose image - the influencer will match this pose
product_imagestringURL of a product image - the product will be placed naturally in the scene
camera_stylestring
2 options available
default: pro
Camera style: 'pro' for studio quality or 'smartphone' for casual social media style
lora_urlstringURL to a LoRA .safetensors file. When provided, routes generation through the LoRA flow. Pair with lora_type to select the correct base model.
lora_typestring
6 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'.
batchinteger
default: 1
Number of images to generate (1-4)
settingsobject-
settings.aspect_ratiostring
default: 1:1
Image aspect ratio
workspace_idstringWorkspace ID to save results

Responses

200Generation queued successfully
400Invalid request or influencer not ready for generation
401Unauthorized
402Insufficient credits
404Influencer or workspace not found
Requires authentication
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"
  }
}'
200Sample Response
{
  "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
}
POST/api/v1/influencers/video

Generate 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

FieldTypeDescription
influencer_id*stringID of a trained influencer
prompt*stringVideo concept/description (e.g., 'influencer walking on beach, picks up product and shows it to camera')
dialogstringOptional script/dialog for the video (used for audio context and motion planning)
product_imagestringURL of a product image to feature in the video
outfit_imagestringURL of an outfit image - the influencer will be dressed in this outfit
location_imagestringURL of a location/background image - the influencer will be placed in this setting
aspect_ratiostring
2 options available
default: 9:16
Video aspect ratio (Veo 3.1 only supports 16:9 and 9:16)
workspace_idstringWorkspace ID to save results

Responses

200Video generation queued successfully
400Invalid request or influencer not ready for generation
401Unauthorized
402Insufficient credits
404Influencer or workspace not found
Requires authentication
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"
}'
200Sample Response
{
  "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

GET/api/v1/music

List music tracks

Get a list of all music tracks generated by your team. Optionally filter by workspace.

Responses

200List of music tracks
401Unauthorized
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/music" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
[
  {
    "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"
  }
]
POST/api/v1/music/generate

Generate 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

FieldTypeDescription
title*stringTitle for the music track
stylestringMusic style/genre description (e.g., 'pop, upbeat, electronic')
lyricsstringLyrics for the song. Leave empty for instrumental.
instrumentalboolean
default: false
Generate instrumental only (no vocals)
vocal_genderstring
2 options available
Vocal gender preference: 'm' for male, 'f' for female
modelstring
5 options available
default: V4_5PLUS
Suno model version
workspace_idstringOptional workspace ID

Responses

200Music generation queued successfully
400Invalid request
401Unauthorized
402Insufficient credits
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx_gen_music_001",
  "status": "queued",
  "estimated_time": 30,
  "credits_used": 50
}
GET/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

200Music track details
401Unauthorized
403Workspace does not belong to team
404Music track not found
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/music/{id}" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
{
  "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

GET/api/v1/voices

List voices

Get a list of all voices belonging to your team. Optionally filter by influencer_id using a query parameter.

Responses

200List of voices
401Unauthorized
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/voices" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
[
  {
    "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"
  }
]
POST/api/v1/voices/generate

Generate 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

FieldTypeDescription
method*string
2 options available
Voice creation method: 'clone' from audio or 'design' from text prompt
influencer_idstringOptional influencer ID to associate the voice with
audio_urlstringRequired for 'clone' method: public URL of audio to clone
promptstringRequired for 'design' method: text description of the desired voice
namestringOptional name for the voice
workspace_idstringOptional workspace ID

Responses

200Voice created successfully
400Invalid request
401Unauthorized
404Influencer not found
Requires authentication
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"
}'
200Sample Response
{
  "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
}
GET/api/v1/voices/{id}

Get voice

Get details of a specific voice by its ID, including the Cartesia voice ID for TTS generation.

Responses

200Voice details
401Unauthorized
404Voice not found
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/voices/{id}" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
{
  "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

GET/api/v1/models/images

List 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

200List of image models
401Unauthorized
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/models/images" \
  -H "Authorization: Bearer YOUR_API_KEY"
GET/api/v1/models/videos

List video models

Returns all supported video models with their capabilities and settings.

Responses

200List of video models
401Unauthorized
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/models/videos" \
  -H "Authorization: Bearer YOUR_API_KEY"

Images

POST/api/v1/images/generate-face

Generate 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

FieldTypeDescription
prompt*stringText description of the face to generate (e.g., 'beautiful woman with green eyes, natural lighting')
negative_promptstringThings to avoid in the generated face
batchinteger
default: 4
Number of face images to generate (1-10)
genderstringGender for the face (e.g., 'female', 'male')
ethnicitystringEthnicity for the face (e.g., 'Asian', 'White Caucasian')
hair_colorstringHair color (e.g., 'blonde hair', 'brown hair')
seednumberOptional seed for reproducibility
workspace_idstringOptional workspace ID

Responses

200Face generation queued successfully
400Invalid request
401Unauthorized
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx_gen_face_001",
  "status": "queued",
  "batch": 4,
  "estimated_time": 60,
  "credits_used": 0
}
POST/api/v1/images/generate

Generate 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

FieldTypeDescription
prompt*stringText description of the image to generate.
negative_promptstringThings to avoid in the generated image
modelstring
34 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_idstringOptional: ID of a trained influencer. If an influencer is used, studio-1 model will be used.
lora_urlstringOptional: 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_typestring
6 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'.
batchinteger
default: 1
Number of images to be generated.
settingsobject-
settings.aspect_ratiostring
default: 1:1
Image aspect ratio
settings.num_inference_stepsinteger
default: 28
-
init_imagestringOptional: URL of an initial image
webhookstring-
workspace_idstring-

Responses

200Generation queued successfully
400Invalid request
401Unauthorized
404Influencer or workspace not found
Requires authentication
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"
}'
200Sample Response
{
  "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
}
POST/api/v1/images/edit

Edit image

Edit an existing image using AI inpainting with a text prompt

Request Body

FieldTypeDescription
image_url*stringPublic URL of the image to edit
prompt*stringDescription of the edits to make to the image
additional_imagesarrayOptional: Additional reference images for context
modelstring
8 options available
default: SEEDREAM
AI model for editing
webhookstringOptional: Webhook URL to receive completion notifications
workspace_idstringOptional: Specific workspace ID

Responses

200Image edit queued successfully
400Invalid request
401Unauthorized
403Workspace does not belong to team
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx1234567890",
  "status": "queued",
  "image_id": "clxxxx0987654321",
  "estimated_time": 15,
  "credits_used": 18
}

Videos

POST/api/v1/videos/generate

Generate 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

FieldTypeDescription
prompt*stringText description of the video to generate.
modelstring
20 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.
settingsobject-
settings.aspect_ratiostring
default: 16:9
Video aspect ratio. Options: '16:9', '9:16', '1:1'. Default: '16:9'
settings.durationinteger
default: 5
Video duration in seconds. Range: 1-10, Default: 5
first_frame_imagestringOptional: URL of image to use as first frame
webhookstringOptional: Webhook URL to receive completion notifications
workspace_idstringOptional: Specific workspace ID

Responses

200Video generation queued successfully
400Invalid request or model not found
401Unauthorized
403Workspace does not belong to team
Requires authentication
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
  }
}'
200Sample Response
{
  "generation_id": "clxxxx1234567890",
  "status": "queued",
  "videos": [
    "https://cdn.influencerstudio.com/generations/video_001.mp4"
  ],
  "estimated_time": 120,
  "credits_used": 50
}
POST/api/v1/videos/lipsync

Create lip sync video

Generate a lip-synced video by synchronizing video with audio

Request Body

FieldTypeDescription
video_url*stringPublic URL of the video file to lip-sync
audio_url*stringPublic URL of the audio file to sync with
modelstring
3 options available
default: sync-lipsync/v2/pro
Lip-sync model to use
generation_idstringOptional: Existing generation ID to add this lip-sync to
workspace_idstringOptional: Specific workspace ID

Responses

200Lip sync generation queued successfully
400Invalid request or model not found
401Unauthorized
404Workspace or generation not found
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx1234567890",
  "status": "queued",
  "estimated_time": 60,
  "credits_used": 25
}
POST/api/v1/videos/motion-control

Motion 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

FieldTypeDescription
video_url*stringPublic URL of the reference video containing the motion to transfer
image_url*stringPublic URL of the character/subject image to apply motion to
promptstringOptional: Text description to guide the motion control generation. Use @Element1 to reference a bound element.
character_orientationstring
2 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'
elementobjectOptional: Face element for identity preservation (Kling 3.0 only). Requires character_orientation='video'. Reference in prompt as @Element1.
element.frontal_image_url*stringFrontal face image URL for the element. Used for facial consistency binding.
element.reference_image_urlsarrayOptional: Additional reference images from different angles (1-3 images)
workspace_idstringOptional: Specific workspace ID

Responses

200Motion control generation queued successfully
400Invalid request
401Unauthorized
402Insufficient credits
403Workspace does not belong to team
Requires authentication
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"
    }
  ]
}'
200Sample Response
{
  "generation_id": "clxxxx_motion_001",
  "status": "queued",
  "estimated_time": 180
}
POST/api/v1/videos/wan22

Generate 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

FieldTypeDescription
mode*string
2 options available
Generation mode: 't2v' for text-to-video, 'i2v' for image-to-video.
prompt*stringText prompt describing the video content.
image_urlstringSource image URL. Required when mode is 'i2v'.
influencer_idstringOptional influencer ID for tracking.
loras*arrayLoRA weights to apply. Include both high-noise and low-noise variants together for best results, each with their own scale.
settingsobject-
settings.resolutionstring
3 options available
default: 720p
Output resolution. Default: 720p
settings.aspect_ratiostring
3 options available
default: 16:9
Aspect ratio. Default: 16:9
settings.num_framesinteger
default: 81
Number of frames to generate (17–161). Default: 81
settings.frames_per_secondinteger
default: 16
Playback FPS (4–60). Default: 16
settings.num_inference_stepsinteger
default: 27
Inference steps. Higher = better quality, slower. Default: 27
settings.guidance_scalenumber
default: 3.5
Prompt adherence strength. Default: 3.5
settings.enable_prompt_expansionboolean
default: false
Use LLM to expand the prompt with extra detail. Default: false
settings.seedintegerRandom seed for reproducibility

Responses

200Video generated successfully
400Invalid request
401Unauthorized
500Generation failed
Requires authentication
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
  }
}'
200Sample Response
{
  "generation_id": "clxxxx_wan22_001",
  "video_url": "https://cdn.influencerstudio.com/generations/wan22_video_001.mp4",
  "mode": "text-to-video"
}
POST/api/v1/videos/reference-to-video

Reference 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

FieldTypeDescription
prompt*stringText 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_idstringOptional: 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.
elementsarrayOptional: 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_urlsarrayOptional: Style or background reference images (max 2). Referenced as @Image1, @Image2 in the prompt.
start_image_urlstringOptional: Image to use as the first frame of the video
end_image_urlstringOptional: Image to use as the last frame of the video
multi_promptarrayOptional: Multi-shot video with different prompts per segment. When provided, the main prompt is ignored and each segment uses its own prompt and duration.
durationstring
default: 5
Video duration in seconds. Options: '5', '10'. Default: '5'. Ignored when multi_prompt is provided.
aspect_ratiostring
3 options available
default: 16:9
Video aspect ratio. Default: '16:9'
scriptstringOptional: Dialogue script for the character. Embedded into the prompt to generate lip movements.
voice_idstringOptional: Voice ID for post-generation voice conversion. Use a voice from GET /api/v1/voices.
product_image_urlsarrayOptional: Product images to incorporate into the video as elements
outfit_image_urlstringOptional: Outfit image to apply to the character
location_image_urlsarrayOptional: Location/background images for the scene
workspace_idstringOptional: Specific workspace ID

Responses

200Reference-to-video generation queued successfully
400Invalid request
401Unauthorized
402Insufficient credits
403Workspace does not belong to team
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx_ref_video_001",
  "status": "queued",
  "estimated_time": 180
}
POST/api/v1/videos/upscale/seedvr

Upscale 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

FieldTypeDescription
video_url*stringPublic URL of the video to upscale.
upscale_modestring
2 options available
default: factor
Upscale mode. 'factor' scales by a multiplier, 'target' scales to a specific resolution. Default: 'factor'
upscale_factornumber
default: 2
Upscale multiplier. Used when upscale_mode is 'factor'. Default: 2
target_resolutionstring
4 options available
Target output resolution. Used when upscale_mode is 'target'.
output_formatstring
default: X264 (.mp4)
Output video format. Default: 'X264 (.mp4)'
output_qualitystring
4 options available
default: high
Output quality level. Default: 'high'
workspace_idstringOptional: Specific workspace ID

Responses

200Upscale queued successfully
400Invalid request
401Unauthorized
402Insufficient credits
403Workspace does not belong to team
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx_gen_upscale_001",
  "status": "queued",
  "estimated_time": 180
}
POST/api/v1/videos/upscale/topaz

Upscale 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

FieldTypeDescription
video_url*stringPublic URL of the video to upscale.
upscale_modestring
2 options available
default: factor
Upscale mode. 'factor' scales by a multiplier, 'target' scales to a specific resolution. Default: 'factor'
upscale_factornumber
default: 2
Upscale multiplier (1-4x). Used when upscale_mode is 'factor'. Default: 2
target_resolutionstring
4 options available
Target output resolution. Used when upscale_mode is 'target'.
output_formatstring
default: X264 (.mp4)
Output video format. Default: 'X264 (.mp4)'
output_qualitystring
4 options available
default: high
Output quality level. Default: 'high'
target_fpsintegerOptional: Target frame rate for the output video (16-60 fps). Doubles the processing cost when set.
h264_outputbooleanOptional: Force H.264 codec for the output video.
workspace_idstringOptional: Specific workspace ID

Responses

200Upscale queued successfully
400Invalid request
401Unauthorized
402Insufficient credits
403Workspace does not belong to team
Requires authentication
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
}'
200Sample Response
{
  "generation_id": "clxxxx_gen_upscale_002",
  "status": "queued",
  "estimated_time": 180
}
POST/api/v1/videos/upscale/freepik

Upscale 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

FieldTypeDescription
video_url*stringPublic URL of the video to upscale. Maximum 15 seconds.
resolutionstring
3 options available
default: 2k
Output resolution. Options: '1k', '2k', '4k'. Default: '2k'
fps_boostboolean
default: false
Optional: Enable frame rate boost. Default: false
creativityinteger
default: 0
Optional: Creativity level (0-100). Higher values add more detail. Default: 0
sharpeninteger
default: 0
Optional: Sharpening intensity (0-100). Default: 0
smart_graininteger
default: 0
Optional: Grain reduction (0-100). Default: 0
flavorstring
2 options available
default: natural
Optional: Output style. 'vivid' for more vibrant colors, 'natural' for realistic output. Default: 'natural'
workspace_idstringOptional: Specific workspace ID

Responses

200Upscale queued successfully
400Invalid request or video exceeds 15 second limit
401Unauthorized
402Insufficient credits
403Workspace does not belong to team
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx_gen_upscale_003",
  "status": "queued",
  "estimated_time": 180
}

3D Models

POST/api/v1/models-3d/generate

Generate 3D model

Generate a 3D model from a text prompt using Meshy v6.

Request Body

FieldTypeDescription
prompt*stringText description of the 3D model to generate.
init_imagestringOptional: Image URL for image-to-3D generation
modelstring
4 options available
default: meshy/v6/text-to-3d
Model ID for 3D generation
settingsobjectModel settings
settings.modestring
2 options available
Generation mode. 'preview' is faster, 'full' is higher quality. Default: full
settings.art_stylestring
2 options available
Art style for the 3D model. Default: realistic
settings.topologystring
2 options available
Mesh topology. 'quad' is better for animation/rigging. Default: triangle
settings.target_polycountintegerTarget polygon count. Range: 1000-100000. Default: 30000
settings.symmetry_modestring
3 options available
Symmetry mode. 'auto' detects automatically. Default: auto
settings.should_remeshbooleanEnable remeshing for cleaner topology. Default: true
settings.is_a_t_posebooleanGenerate character in A/T pose for rigging. Default: false
settings.enable_pbrbooleanGenerate PBR texture maps (normal, roughness, metallic). Default: false
settings.enable_prompt_expansionbooleanExpand prompt with AI for better results. Default: false
webhookstringOptional: Webhook URL to receive completion notifications
workspace_idstringOptional: Specific workspace ID

Responses

2003D model generation queued successfully
400Invalid request
401Unauthorized
402Insufficient credits
403Workspace does not belong to team
404Workspace not found
Requires authentication
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"
}'
200Sample Response
{
  "generation_id": "clxxxx1234567890",
  "status": "queued",
  "model_url": "https://cdn.influencerstudio.com/generations/model_001.glb",
  "estimated_time": 180,
  "credits_used": 100
}

Text

POST/api/v1/text/generate

Generate text

Generate text using supported Venice, Gemini, and OpenAI models.

Request Body

FieldTypeDescription
prompt*stringThe text prompt to generate a response for
modelstring
14 options available
default: venice-uncensored
AI model to use. Default: venice-uncensored
settingsobjectGeneration settings: temperature, max_tokens, system_prompt
settings.temperaturenumberControls randomness. Lower = more focused, Higher = more creative. Range: 0-2. Default: 0.7
settings.max_tokensintegerMaximum tokens to generate. Range: 1-16000. Default: 16000
settings.system_promptstringOptional system prompt to set AI behavior and context
workspace_idstringOptional: Specific workspace ID

Responses

200Text generated successfully
400Invalid request
401Unauthorized
402Insufficient credits
403Workspace does not belong to team
404Workspace not found
Requires authentication
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"
  }
}'
200Sample Response
{
  "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

GET/api/v1/generations/{id}/status

Get 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

200Generation status with item details and result URLs
401Unauthorized
403Workspace does not belong to team
404Generation not found
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/generations/{id}/status" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
{
  "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

GET/api/v1/billing/plans

Get available credit plans

Returns all available one-time credit purchase plans

Responses

200List of available plans
401Unauthorized
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/billing/plans" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
[
  {
    "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
      }
    ]
  }
]
GET/api/v1/billing/credits

Get current credit balance

Returns the total credit balance for the authenticated team

Responses

200Total credits
401Unauthorized
Requires authentication
curl -X GET "https://influencerstudio.com/api/v1/billing/credits" \
  -H "Authorization: Bearer YOUR_API_KEY"
200Sample Response
1500
POST/api/v1/billing/top-up

Purchase credits

Create a Stripe checkout session to purchase credits (one-time purchases only)

Request Body

FieldTypeDescription
plan_id*stringPlan ID from GET /api/v1/billing/plans
variant_idstringOptional: Specific variant ID
success_urlstringOptional: URL to redirect after successful payment
cancel_urlstringOptional: URL to redirect if payment is cancelled

Responses

200Checkout URL created
400Invalid request
401Unauthorized
404Plan not found
Requires authentication
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"
}'
200Sample Response
{
  "checkoutUrl": "https://checkout.stripe.com/c/pay/cs_test_xxxxx"
}