> ## Documentation Index
> Fetch the complete documentation index at: https://developers.supapost.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Influencers

> Create AI-generated influencer personas with character consistency.

## Overview

The Influencer Studio lets you create consistent AI-generated personas for your content. Define a character's appearance and style, generate images, and maintain visual consistency across all future generations — regardless of which AI model you use.

## Creating an Influencer

1. Open **Studio > Influencers** in the dashboard
2. Click **+** to create a new influencer
3. Set the character traits in the **Properties** panel (demographics, face, hair, body)
4. Type a scene description (e.g. "smiling, casual outfit")
5. Select an AI model and click **Generate**
6. The first image defines the character — click **Save** to persist

## Character Consistency

After the first image is generated, all subsequent images automatically maintain the same character identity:

* The first image is used as a **character reference** sent to the AI model
* You only need to describe the **scene** (e.g. "on the beach", "in a coffee shop") — no need to re-describe the character
* This works across **all supported models**: Flux Pro, Nano Banana, Higgsfield Soul
* Each model uses its native reference image format for best results

### How it works per model

| Model             | Reference Method                             |
| ----------------- | -------------------------------------------- |
| Flux Pro          | Kontext image-to-image with `image_url`      |
| Flux Dev/Schnell  | Image-to-image with `image_url` + `strength` |
| Nano Banana Pro/2 | Edit endpoint with `image_urls` array        |
| Higgsfield Soul   | `reference_image_urls` array                 |

### Using Product References

You can also use product images as references alongside character consistency:

1. Click **Reference** in the prompt bar
2. Switch to the **Products** tab
3. Select a product image (e.g. a perfume bottle)
4. Type your scene: "holding the product in a studio"

The character stays consistent while the product appears in the scene.

## Structured Prompts

For the first image (character creation), Supapost sends a **JSON-structured prompt** to the AI model. This format produces more consistent and accurate results than plain text:

```json theme={null}
{
  "subject": { "type": "person", "gender": "female", "age": "18-24", "ethnicity": "White" },
  "face": { "shape": "Heart", "eye_color": "Blue", "expression": "neutral" },
  "hair": { "color": "Brown", "length": "Long", "style": "Wavy" },
  "scene": "portrait, looking at camera",
  "style": "Ultra realistic photography, professional portrait",
  "camera": { "angle": "eye level", "lens": "85mm", "aperture": "f/2.8" }
}
```

After the first image, subsequent prompts are just the scene description (e.g. "on a tropical beach") since the model gets the character from the reference image.

## Managing Images

* **Click an image** to open the fullscreen lightbox with metadata (model, prompt, timestamp)
* **Arrow keys** to navigate between images
* **Download** individual images
* **Delete** individual images (removes from R2 storage)
* **Delete influencer** removes all images and the influencer record

## Art Styles

| Style     | Description                                  |
| --------- | -------------------------------------------- |
| Realistic | Ultra-realistic photography, studio lighting |
| Anime     | Vibrant anime illustration style             |
| 3D        | Pixar-quality 3D rendered character          |
| Fashion   | High fashion editorial photography           |
| Minimal   | Clean, soft lighting, muted tones            |

## API Usage

### List Influencers

```bash theme={null}
curl https://api.supapost.so/influencers \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Create Influencer

```bash theme={null}
curl -X POST https://api.supapost.so/influencers \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Luna",
    "description": "Young woman with brown hair",
    "style": "realistic",
    "model": "fal:flux-pro",
    "images": ["https://cdn.supapost.so/..."],
    "traits": { "gender": "Female", "ageRange": "18-24" }
  }'
```

### Update Influencer (add images)

```bash theme={null}
curl -X PATCH https://api.supapost.so/influencers/INFLUENCER_UUID \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "images": ["https://cdn.supapost.so/img1.jpg", "https://cdn.supapost.so/img2.jpg", "https://cdn.supapost.so/new-img.jpg"]
  }'
```

<Note>
  When updating images, send the **full array** including existing images. The first image is always used as the avatar and character reference.
</Note>

### Delete Influencer

```bash theme={null}
curl -X DELETE https://api.supapost.so/influencers/INFLUENCER_UUID \
  -H "Authorization: Bearer YOUR_API_KEY"
```

<Warning>
  This permanently deletes the influencer and all associated images from storage.
</Warning>

### Delete Individual Image

To remove a single image, update the influencer with the image removed from the array, then delete the file from R2:

```bash theme={null}
# 1. Update influencer images (without the deleted one)
curl -X PATCH https://api.supapost.so/influencers/INFLUENCER_UUID \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "images": ["https://cdn.supapost.so/img1.jpg", "https://cdn.supapost.so/img2.jpg"] }'

# 2. Delete the image file from R2
curl -X POST https://api.supapost.so/assets/delete \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://cdn.supapost.so/removed-img.jpg" }'
```
