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

Images

POST/api/v1/images/generate

Generate images

Generate images from a text prompt with optional influencer and settings

Request Body

FieldTypeDescription
prompt*stringText description of the image to generate.
negative_promptstringThings to avoid in the generated image
modelstring
48 options available
default: studio-1
AI model to use for generation
influencer_idstringOptional: ID of a trained influencer. If an influencer is used, studio-1 model will be used.
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",
  "batch": 2,
  "settings": {
    "aspect_ratio": "1:1"
  }
}'
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
4 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
}
POST/api/v1/images/face-swap

Swap faces in images

Swap faces between a source image and target image

Request Body

FieldTypeDescription
source_image*stringPublic URL of the source face image - the face that will be swapped into the target
target_image*stringPublic URL of the target image - the image where the face will be swapped
generation_idstringOptional: Existing generation ID to add this face swap to
workspace_idstringOptional: Specific workspace ID

Responses

200Face swap queued successfully
400Invalid request
401Unauthorized
404Workspace not found
Requires authentication
curl -X POST "https://influencerstudio.com/api/v1/images/face-swap" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "source_image": "https://example.com/face.jpg",
  "target_image": "https://example.com/body.jpg"
}'
200Sample Response
{
  "generation_id": "clxxxx1234567890",
  "status": "queued",
  "images": [
    "https://cdn.influencerstudio.com/generations/faceswap_001.jpg"
  ],
  "estimated_time": 20,
  "credits_used": 8
}

Videos

POST/api/v1/videos/generate

Generate video

Generate a video from a text prompt with optional first frame image

Request Body

FieldTypeDescription
prompt*stringText description of the video to generate.
modelstring
64 options available
default: kling-video/v2.6/pro/text-to-video
Video generation model
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-video/v2.6/pro/text-to-video",
  "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
}

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 Venice AI private and uncensored models.

Request Body

FieldTypeDescription
prompt*stringThe text prompt to generate a response for
modelstring
3 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-4000. Default: 1000
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": "llama-3.3-70b",
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 150,
    "total_tokens": 175
  }
}

Generations

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

Get generation status

Poll the status of a generation and get result URLs when complete

Responses

200Generation status
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"
}