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

# Create Voice

> Creates a new Voice for the given user. Only `name` and `userId` are required — a Voice may be created with just the background group, just the tone group, or neither, and completed later with `update`.



## OpenAPI

````yaml https://api.goextrovert.com/client/v2/docs-json post /client/v2/voices
openapi: 3.0.0
info:
  title: Extrovert Client API
  description: >-
    Public API for Extrovert platform integration. Use your API key for
    authentication.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.goextrovert.com/
    description: API Server
security: []
tags: []
paths:
  /client/v2/voices:
    post:
      tags:
        - Voices
      summary: Create Voice
      description: >-
        Creates a new Voice for the given user. Only `name` and `userId` are
        required — a Voice may be created with just the background group, just
        the tone group, or neither, and completed later with `update`.
      operationId: VoiceClientApiController_create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRequestDto3'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponseDto3'
        '401':
          description: Invalid or missing API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientApiErrorResponseDto'
      security:
        - api-key: []
components:
  schemas:
    CreateRequestDto3:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          description: >-
            Short human-readable Voice name (e.g., 'Founder voice', 'Casual
            replies'). Required.
        userId:
          type: string
          format: uuid
          description: >-
            ID of the user that will own the new Voice. Usually the current
            user. Required.
        backgroundAboutUser:
          type: string
          description: >-
            Free-form plain text about the user themselves — role, background,
            perspective. Used as background when generating comments and direct
            messages, and when analyzing incoming posts. Optional — may be added
            later.
        backgroundAboutCompany:
          type: string
          description: >-
            Free-form plain text about the user's company, product, market, and
            target audience. Used as background when generating comments and
            direct messages, and when analyzing incoming posts. Optional — may
            be added later.
        instructionsForComments:
          type: string
          description: >-
            Free-form plain text with tone instructions for comment generation
            (tone, structure, do/don't). Used only when generating comments, not
            direct messages. Optional — may be added later.
        instructionsForDm:
          type: string
          description: >-
            Free-form plain text with tone instructions for direct-message
            generation (tone, structure, do/don't). Used only when generating
            direct messages, not comments. Optional — may be added later.
        isLearningModeEnabled:
          type: boolean
          description: >-
            Whether the Voice is in learning mode. When `true`, the backend
            auto-saves as Comment Examples only those comments the user both
            approved AND edited before approval (unchanged auto-approved
            comments are NOT saved). Only comments are learned — direct messages
            are never auto-saved. The Voice's Comment Examples are capped at 20
            entries; auto-saved and manual entries share the same 20-slot cap.
            When `false`, no auto-learning happens and existing Comment Examples
            keep being used as-is. Optional — omit to leave auto-learning off.
      required:
        - name
        - userId
    CreateResponseDto3:
      type: object
      properties:
        status:
          type: string
          description: Response status
          enum:
            - success
        data:
          type: object
          properties:
            id:
              type: string
              format: uuid
              description: Created entity ID
              example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
        message:
          type: string
          description: Success message
          example: Operation completed successfully
      required:
        - status
        - data
        - message
    ClientApiErrorResponseDto:
      type: object
      properties:
        status:
          type: string
          description: Response status
          example: error
          enum:
            - error
        data:
          type: object
          description: Response data
          example: null
          nullable: true
        message:
          type: string
          description: Error message
          example: An error occurred while processing the request
      required:
        - status
        - data
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: X-API-Key
      description: API Key for authentication

````