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

# Create influencer

> Queue one or more AI influencer portrait jobs.

Creates **AI influencer** image job(s). Each image in `count` is a separate generation row and credit charge. Poll each id via [Poll generation status](/api-reference/image/poll-status) (`type`: `INFLUENCER`).

## Headers

| Header          | Required | Description                              |
| --------------- | -------- | ---------------------------------------- |
| `Authorization` | Yes      | `Bearer uns_live_*` API key or Clerk JWT |
| `Content-Type`  | Yes      | `application/json`                       |

## Request body

<ParamField body="prompt" type="string" required>
  Describe the influencer scene, outfit, mood, or action.
</ParamField>

<ParamField body="aspectRatio" type="string">
  Output aspect ratio. Default: `1:1`.

  Allowed: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`
</ParamField>

<ParamField body="count" type="integer">
  Number of images to generate (separate jobs). Min `1`, max `10`. Default: `1`.
</ParamField>

<ParamField body="cameraAngle" type="string">
  Optional framing preset.

  Allowed: `pov`, `portrait`, `full-body`, `close-up`, `side-profile`
</ParamField>

<ParamField body="styleMode" type="string">
  Optional look / lighting preset.

  Allowed: `ugc`, `casual_daylight`, `cozy_indoor`, `low_light_intimate`, `raw_flash`, `golden_hour`, `moody_night`, `car_selfie`, `mirror_selfie`, `luxury_influencer`, `cinematic`, `travel_content`, `beauty_closeup`, `party_night_out`
</ParamField>

<ParamField body="age" type="integer">
  Optional subject age in years. Min `18`, max `70`.
</ParamField>

## Async completion

Poll each `generations[].id` via [Poll generation status](/api-reference/image/poll-status) until `COMPLETED` or `FAILED`. Webhooks are not supported on the public API.

## Response

Single image (`count: 1`):

```json theme={null}
{
  "success": true,
  "generations": [
    { "id": "cm123abc", "status": "QUEUED" }
  ],
  "creditsDeducted": 10,
  "creditsRemaining": 90
}
```

Multiple images (`count` > 1) return one entry per job in `generations`. Credits deducted = per-image cost × `count`.

## Example

<RequestExample>
  ```bash Single portrait theme={null} theme={null}
  curl -X POST "https://mvp.tryunsora.com/api/v1/influencer-studio/create" \
    -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "Fitness creator in athleisure, gym mirror selfie, natural light",
      "aspectRatio": "9:16",
      "styleMode": "mirror_selfie",
      "cameraAngle": "pov"
    }'
  ```

  ```bash Batch variations theme={null} theme={null}
  curl -X POST "https://mvp.tryunsora.com/api/v1/influencer-studio/create" \
    -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "Luxury travel influencer at rooftop pool, golden hour",
      "aspectRatio": "4:3",
      "count": 3,
      "styleMode": "golden_hour",
      "age": 25
    }'
  ```
</RequestExample>

## Errors

| HTTP  | When                                                                        |
| ----- | --------------------------------------------------------------------------- |
| `400` | Missing/invalid prompt, `aspectRatio`, `cameraAngle`, `styleMode`, or `age` |
| `401` | Invalid auth                                                                |
| `402` | Insufficient credits                                                        |
| `404` | User not found                                                              |
| `500` | Server error                                                                |


## OpenAPI

````yaml POST /influencer-studio/create
openapi: 3.1.0
info:
  title: Unsora API
  version: 1.2.0
  description: >-
    Public API for Unsora integrations. Authenticate with Clerk JWT or
    uns_live_* API key. API keys are rate-limited to 60 requests/minute and
    support idempotency keys. Async jobs complete via polling GET
    /image/status/{id}.
servers:
  - url: https://mvp.tryunsora.com/api/v1
    description: Versioned API (recommended)
security: []
tags:
  - name: Clippings
  - name: Connect
  - name: Image Generations
  - name: Music Generations
  - name: Influencer Studio
  - name: Posts
  - name: Thumbnails
  - name: User
  - name: Video Generations
paths:
  /influencer-studio/create:
    post:
      tags:
        - Influencer Studio
      summary: Create AI influencer generation job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInfluencerStudioRequest'
      responses:
        '200':
          description: Job queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateInfluencerStudioResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Insufficient credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    CreateInfluencerStudioRequest:
      type: object
      properties:
        prompt:
          type: string
        aspectRatio:
          type: string
          default: '1:1'
          enum:
            - '1:1'
            - '16:9'
            - '9:16'
            - '4:3'
            - '3:4'
        count:
          type: integer
          minimum: 1
          maximum: 10
          default: 1
        cameraAngle:
          type: string
          enum:
            - pov
            - portrait
            - full-body
            - close-up
            - side-profile
        styleMode:
          type: string
          enum:
            - ugc
            - casual_daylight
            - cozy_indoor
            - low_light_intimate
            - raw_flash
            - golden_hour
            - moody_night
            - car_selfie
            - mirror_selfie
            - luxury_influencer
            - cinematic
            - travel_content
            - beauty_closeup
            - party_night_out
        age:
          type: integer
          minimum: 18
          maximum: 70
          description: Subject age in years.
      required:
        - prompt
    CreateInfluencerStudioResponse:
      type: object
      properties:
        success:
          type: boolean
        generations:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              status:
                type: string
                enum:
                  - QUEUED
                  - PROCESSING
                  - COMPLETED
                  - FAILED
            required:
              - id
              - status
        creditsDeducted:
          type: number
        creditsRemaining:
          type: number
      required:
        - success
        - generations
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
        error:
          type: string
        code:
          type: string
        message:
          type: string
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Clerk session JWT or Unsora API key (uns_live_*)

````