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

# Create a Custom Avatar by Uploading Files

> It may take up to 1 ~ 2 days to create a custom avatar. You can check the status of the custom avatar creation by calling the Get avatar by ID API.

### Quick Start Guide

[Bring Your Own Avatar](/api-documentation/custom-avatar/byoa#%F0%9F%93%A4-example-curl-request)


## OpenAPI

````yaml post /api/personas_v2/
openapi: 3.0.3
info:
  title: creatify.ai API
  version: 1.0.0
  description: API for creatify.ai
servers: []
security: []
paths:
  /api/personas_v2/:
    post:
      tags:
        - personas_v2
      description: >-
        Mixin to provide a reusable `list` method for filtering and paginating
        queryset results.
      operationId: personas_v2_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonaCreateSerializerV2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PersonaCreateSerializerV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PersonaCreateSerializerV2'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonaCreateSerializerV2'
          description: ''
      security:
        - X-API-ID: []
          X-API-KEY: []
components:
  schemas:
    PersonaCreateSerializerV2:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        gender:
          allOf:
            - $ref: '#/components/schemas/Gender7c5Enum'
          description: |-
            gender of the persona

            * `m` - Male
            * `f` - Female
            * `nb` - Non-Binary
        creator_name:
          type: string
          description: >-
            Name of the persona, used to identify the real person, not for
            display
          maxLength: 255
        video_scene:
          type: string
          nullable: true
          description: A word to describe the background setting. API user rely on this
          maxLength: 255
        keywords:
          type: string
          nullable: true
          description: keywords (comma separated)
          maxLength: 255
        lipsync_input:
          type: string
          format: uri
        gdown_url:
          type: string
          format: uri
        consent_video:
          type: string
          format: uri
          readOnly: true
          nullable: true
          description: The URL of the consent video
        lipsync_input_url:
          type: string
          readOnly: true
        labels:
          type: array
          items:
            type: string
        matching_voice_non_null:
          type: string
          readOnly: true
        original_voice_provider:
          allOf:
            - $ref: '#/components/schemas/OriginalVoiceProviderEnum'
          description: >-
            Provider that minted original_voice_provider_id (paired cache
            field). Default ELEVENLABS is correct for pre-Workstream-C rows
            whose cache could only ever hold 11labs ids.


            * `elevenlabs` - ElevenLabs

            * `minimax` - MiniMax

            * `fishaudio` - FishAudio
        process_status:
          allOf:
            - $ref: '#/components/schemas/ProcessStatusEnum'
          readOnly: true
          description: >-
            The status of creating process of the creator, if not done, it
            should not be shown in the UI


            * `pending` - Pending

            * `processing` - Processing

            * `voice_creating` - Voice Creating

            * `video_validating` - Video Validating

            * `crop_and_matte` - Crop And Matte

            * `reviewing` - Reviewing

            * `done` - Done

            * `failed` - Failed

            * `rejected` - Rejected
        failed_reason:
          type: string
          readOnly: true
          nullable: true
          description: >-
            The reason why the creator creation failed, if not failed, it should
            be empty
        webhook_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Webhook url, when the creator is created, we will send a webhook to
            the url(only for api user)
          maxLength: 200
        created_at:
          type: string
          format: date-time
          readOnly: true
          title: Created date
        updated_at:
          type: string
          format: date-time
          readOnly: true
          title: Updated date
      required:
        - consent_video
        - created_at
        - creator_name
        - failed_reason
        - gender
        - id
        - lipsync_input_url
        - matching_voice_non_null
        - process_status
        - updated_at
    Gender7c5Enum:
      enum:
        - m
        - f
        - nb
      type: string
      description: |-
        * `m` - Male
        * `f` - Female
        * `nb` - Non-Binary
    OriginalVoiceProviderEnum:
      enum:
        - elevenlabs
        - minimax
        - fishaudio
      type: string
      description: |-
        * `elevenlabs` - ElevenLabs
        * `minimax` - MiniMax
        * `fishaudio` - FishAudio
    ProcessStatusEnum:
      enum:
        - pending
        - processing
        - voice_creating
        - video_validating
        - crop_and_matte
        - reviewing
        - done
        - failed
        - rejected
      type: string
      description: |-
        * `pending` - Pending
        * `processing` - Processing
        * `voice_creating` - Voice Creating
        * `video_validating` - Video Validating
        * `crop_and_matte` - Crop And Matte
        * `reviewing` - Reviewing
        * `done` - Done
        * `failed` - Failed
        * `rejected` - Rejected
  securitySchemes:
    X-API-ID:
      type: apiKey
      in: header
      name: X-API-ID
      description: API ID, from your settings page.
    X-API-KEY:
      type: apiKey
      in: header
      name: X-API-KEY
      description: API Key, from your settings page.

````