Character Creation

Train a consistent character identity from photos (FLUX LoRA). Upload 10-30 images, get a character ID, then generate unlimited consistent images via API. 500 credits per training, 15 credits per image.

New: Train a consistent character identity from photos. Upload 10-30 images of a person, train a FLUX LoRA, then generate unlimited images of that person in any scene, outfit, or style.

Pricing

ActionCreditsPrice (Pro Yearly)Price (Pro Monthly)
Train character500$3.00$4.00
Generate image15 per image$0.09$0.12

Training credits are deducted upfront when you create a character. Refunded automatically if training fails.


Workflow

  1. Create — Upload 10-30 photos of a person. Returns character_id immediately.
  2. Poll — Check training status (takes ~2-3 minutes).
  3. Generate — Once ready, generate unlimited consistent images.

Create Character

Train a new character identity from photos.

POST https://vicsee.com/api/v1/characters/create

See Authentication for API key setup.

Parameters

ParameterTypeRequiredDescription
image_urlsstring[]YesArray of 10-30 public image URLs (JPEG, PNG, WebP). More images = better consistency.
namestringNoDisplay name for the character. Default: "Character"
trigger_wordstringNoUnique keyword to activate the character in prompts. Auto-generated if not provided.

Example Request

curl -X POST https://vicsee.com/api/v1/characters/create \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sarah",
    "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",
      "https://example.com/photo6.jpg",
      "https://example.com/photo7.jpg",
      "https://example.com/photo8.jpg",
      "https://example.com/photo9.jpg",
      "https://example.com/photo10.jpg"
    ]
  }'

Response

{
  "success": true,
  "data": {
    "character_id": "abc123-def456",
    "name": "Sarah",
    "trigger_word": "CHAR1N2K3M4",
    "status": "training",
    "image_count": 10,
    "credits_used": 500,
    "created_at": "2026-03-01T12:00:00.000Z"
  }
}

Training takes approximately 2-3 minutes. Use the status endpoint to check when it's ready.


Check Status

Get character details and training status.

GET https://vicsee.com/api/v1/characters/{character_id}

Response (Training)

{
  "success": true,
  "data": {
    "character_id": "abc123-def456",
    "name": "Sarah",
    "trigger_word": "CHAR1N2K3M4",
    "status": "training",
    "image_count": 10,
    "created_at": "2026-03-01T12:00:00.000Z"
  }
}

Response (Ready)

{
  "success": true,
  "data": {
    "character_id": "abc123-def456",
    "name": "Sarah",
    "trigger_word": "CHAR1N2K3M4",
    "status": "ready",
    "image_count": 10,
    "created_at": "2026-03-01T12:00:00.000Z"
  }
}

Status Values

StatusDescription
trainingLoRA training in progress (~2-3 minutes)
readyCharacter trained and ready for generation
failedTraining failed (credits refunded automatically)

Generate Images

Generate consistent images of a trained character.

POST https://vicsee.com/api/v1/characters/{character_id}/generate

Parameters

ParameterTypeRequiredDescription
promptstringYesText description of the scene. The trigger word is auto-injected.
aspect_ratiostringNoImage aspect ratio. Default: "1:1".
num_outputsintegerNoNumber of images (1-4). Default: 1.

Aspect Ratios

1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3

Example Request

curl -X POST https://vicsee.com/api/v1/characters/abc123-def456/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "professional headshot in a modern office, wearing a navy blazer",
    "aspect_ratio": "3:4",
    "num_outputs": 2
  }'

Response

{
  "success": true,
  "data": {
    "id": "task_xyz789",
    "character_id": "abc123-def456",
    "status": "completed",
    "output": {
      "images": [
        { "url": "https://cdn.vicsee.com/results/dew/user-id/img1.png" },
        { "url": "https://cdn.vicsee.com/results/dew/user-id/img2.png" }
      ]
    },
    "credits_used": 30,
    "credits_remaining": 470,
    "created_at": "2026-03-01T12:05:00.000Z"
  }
}

Generation takes approximately 30 seconds per image. Output URLs are hosted on VicSee CDN (available for 7 days).


Complete Pipeline Example

Train a character and generate marketing photos:

# Step 1: Create character
CHAR_ID=$(curl -s -X POST https://vicsee.com/api/v1/characters/create \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Brand Ambassador",
    "image_urls": ["https://...", "https://...", "...10-30 URLs..."]
  }' | jq -r '.data.character_id')

echo "Character ID: $CHAR_ID"

# Step 2: Poll until ready (typically 2-3 minutes)
while true; do
  STATUS=$(curl -s https://vicsee.com/api/v1/characters/$CHAR_ID \
    -H "Authorization: Bearer YOUR_API_KEY" | jq -r '.data.status')
  echo "Status: $STATUS"
  [ "$STATUS" = "ready" ] && break
  [ "$STATUS" = "failed" ] && echo "Training failed" && exit 1
  sleep 10
done

# Step 3: Generate marketing photos
curl -X POST https://vicsee.com/api/v1/characters/$CHAR_ID/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "professional photoshoot, studio lighting, white background",
    "aspect_ratio": "3:4",
    "num_outputs": 4
  }'

Photo Guidelines

For best results:

  • Minimum 10 photos, 20+ recommended for best quality
  • Include variety: different angles, lighting, expressions, backgrounds
  • Clear, well-lit photos of the person's face
  • Avoid heavy makeup, sunglasses, or face-obscuring accessories
  • Higher resolution = better results (minimum 512x512)
  • Consistent appearance: same hairstyle/hair color across photos

Limits

ConstraintValue
Minimum images per character10
Maximum images per character30
Maximum image size10 MB per image
Supported image formatsJPEG, PNG, WebP
Training time~2-3 minutes
Generation time~30 seconds per image
Max images per generation4
Output URL availability7 days

Errors

CodeHTTPDescription
TOO_FEW_IMAGES400Fewer than 10 image URLs provided
TOO_MANY_IMAGES400More than 30 image URLs provided
INVALID_IMAGE_URL400Image URL is not a valid HTTP(S) URL
MISSING_PROMPT400No prompt provided for generation
INVALID_ASPECT_RATIO400Unsupported aspect ratio
CHARACTER_NOT_READY422Character is still training or failed
IMAGE_DOWNLOAD_FAILED422Could not download one or more images
INSUFFICIENT_CREDITS402Not enough credits
NOT_FOUND404Character not found or not owned by user
TRAINING_SUBMIT_FAILED500Failed to start training on Replicate
GENERATION_FAILED500Image generation failed or timed out