Characters API
The Characters API is the main workspace-facing surface for managing AI personas.
Core endpoints
POST /api/v1/charactersGET /api/v1/charactersGET /api/v1/characters/{id}PATCH /api/v1/characters/{id}POST /api/v1/characters/{id}/defaultPOST /api/v1/characters/{id}/duplicate
The older /api/v1/influencers aliases still exist, but new integrations should prefer /api/v1/characters.
Create a character
curl https://api.influgen.ai/api/v1/characters \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Mila Hart",
"niche": "fitness",
"appearance": {
"age_range": "25-34",
"aesthetic": "editorial athleisure"
},
"identity": {
"location": "Los Angeles",
"occupation": "Pilates coach"
},
"personality": {
"tone": "confident"
},
"style": {
"presets": ["soft-luxe"]
},
"reference_images": ["https://cdn.example.com/reference/mila-front.jpg"],
"settings": {
"autopilot": false
},
"talking_head_enabled": false
}'
Example response:
{
"character": {
"id": "char_01HZX6FQJ5N6E7T2M3A4B5C6D7",
"name": "Mila Hart",
"niche": "fitness",
"reference_images": [
"https://cdn.example.com/reference/mila-front.jpg"
],
"autopilot": false,
"face_consistency_tier": "ip_adapter",
"lora_training_status": "none",
"content_count": 0,
"last_post_date": null,
"follower_count": 0,
"is_default": false
}
}
Upload a reference image
Reference image upload is multipart and accepts any of these form fields:
fileimagereference_image
curl https://api.influgen.ai/api/v1/characters/char_01HZX6FQJ5N6E7T2M3A4B5C6D7/reference-images \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-F "file=@/path/to/reference.jpg" \
-F "type=primary"
Uploading a reference image stores the file, creates the reference record, and refreshes the stored face embedding for the character.
LoRA endpoints
GET /api/v1/characters/{id}/loraGET /api/v1/characters/{id}/lora/statusPOST /api/v1/characters/{id}/lora/imagesGET /api/v1/characters/{id}/lora/imagesPOST /api/v1/characters/{id}/lora/trainDELETE /api/v1/characters/{id}/lora
Key rules:
- Pro or Agency plan required
10to30training images- training steps
1000to1500 - rank
16to32 - default cost
500credits
Example training request:
curl https://api.influgen.ai/api/v1/characters/char_01HZX6FQJ5N6E7T2M3A4B5C6D7/lora/train \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_model": "fal-ai/flux-lora",
"training_steps": 1200,
"lora_rank": 16
}'
Voice endpoints
GET /api/v1/voicesGET /api/v1/characters/{id}/voiceGET /api/v1/characters/{id}/voice/settingsPUT /api/v1/characters/{id}/voice/settingsPOST /api/v1/characters/{id}/voice-clonePOST /api/v1/characters/{id}/voice/previewPOST /api/v1/characters/{id}/voice/generate
Voice clone supports JSON with sample_urls or multipart uploads with sample or samples.
Example JSON clone request:
curl https://api.influgen.ai/api/v1/characters/char_01HZX6FQJ5N6E7T2M3A4B5C6D7/voice-clone \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Mila Voice",
"description": "Warm luxury wellness narrator",
"sample_urls": [
"https://cdn.example.com/audio/mila-1.mp3",
"https://cdn.example.com/audio/mila-2.mp3"
],
"stability": 0.55,
"similarity_boost": 0.8,
"style": 0.25,
"use_speaker_boost": true
}'
Talking head and motion transfer
Character-scoped video subresources include:
POST /api/v1/characters/{id}/talking-head/previewPOST /api/v1/characters/{id}/talking-head/generateGET /api/v1/characters/{id}/talking-head/generationsGET /api/v1/talking-head/{generationId}POST /api/v1/characters/{id}/motion-transferGET /api/v1/characters/{id}/motion-transfer/{jobId}GET /api/v1/characters/{id}/motion-transfers
Those routes are documented in more detail under Content API.