KugelAudio Voices API

The Voices API from KugelAudio — 6 operation(s) for voices.

OpenAPI Specification

kugelaudio-voices-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: KugelAudio TTS 11labs Voices API
  description: 'Unified API: REST + WebSocket + ElevenLabs + Vapi'
  version: 2.0.0
tags:
- name: Voices
paths:
  /v1/voices:
    get:
      summary: Get Voices
      description: 'Voices visible to the caller: public catalog page + own voices.'
      operationId: get_voices_v1_voices_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 20
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
    post:
      summary: Create Voice
      description: "Create a new voice, optionally with reference audio files.\n\nAccepts either:\n\n- ``application/json`` with a :class:`CreateVoiceRequest` body, or\n- ``multipart/form-data`` with a ``metadata`` JSON part and optional\n  ``files`` parts (audio files). This is the format sent by the\n  Python and JS SDKs when ``reference_files`` are provided."
      operationId: create_voice_v1_voices_post
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoiceDetailInfo'
      tags:
      - Voices
  /v1/voices/{voice_id}:
    get:
      summary: Get Voice By Id
      description: 'One voice by handle or legacy numeric id.


        The caller''s org rides along so private/unverified own voices —

        which the listing endpoint shows — resolve individually too.'
      operationId: get_voice_by_id_v1_voices__voice_id__get
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoiceInfo'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
    patch:
      summary: Update Voice
      description: Update a voice you own.
      operationId: update_voice_v1_voices__voice_id__patch
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVoiceRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoiceDetailInfo'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
    delete:
      summary: Delete Voice
      description: Archive (soft-delete) a voice you own.
      operationId: delete_voice_v1_voices__voice_id__delete
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
  /v1/voices/{voice_id}/references:
    get:
      summary: List Voice References
      description: List all reference audio files for a voice you own.
      operationId: list_voice_references_v1_voices__voice_id__references_get
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VoiceReferenceInfo'
                title: Response List Voice References V1 Voices  Voice Id  References Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
    post:
      summary: Upload Voice Reference
      description: 'Upload a reference audio file for a voice you own.


        Accepts multipart/form-data with a ``file`` field (audio).

        Optionally include ``reference_text`` for the transcript.'
      operationId: upload_voice_reference_v1_voices__voice_id__references_post
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_voice_reference_v1_voices__voice_id__references_post'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoiceReferenceInfo'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
  /v1/voices/{voice_id}/references/{ref_id}:
    delete:
      summary: Delete Voice Reference
      description: Delete a reference audio file from a voice you own.
      operationId: delete_voice_reference_v1_voices__voice_id__references__ref_id__delete
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      - name: ref_id
        in: path
        required: true
        schema:
          type: integer
          title: Ref Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
  /v1/voices/{voice_id}/publish:
    post:
      summary: Publish Voice
      description: 'Publish a voice (sets is_public=True, pending_verification=True).


        Verification is admin-controlled and cannot be bypassed via the API.'
      operationId: publish_voice_v1_voices__voice_id__publish_post
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoiceDetailInfo'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
  /v1/voices/{voice_id}/generate-sample:
    post:
      summary: Generate Voice Sample
      description: 'Generate a sample WAV for a voice you own.


        Requires at least one reference audio to be uploaded first. The

        sample is generated through the TTS engine without billing (no

        usage lease — parity with v1) and stored via the admin seam.'
      operationId: generate_voice_sample_v1_voices__voice_id__generate_sample_post
      parameters:
      - name: voice_id
        in: path
        required: true
        schema:
          type: string
          title: Voice Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Generate Voice Sample V1 Voices  Voice Id  Generate Sample Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Voices
components:
  schemas:
    VoiceDetailInfo:
      properties:
        id:
          type: integer
          title: Id
        voice_id:
          type: integer
          title: Voice Id
        handle:
          anyOf:
          - type: string
          - type: 'null'
          title: Handle
        public_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Public Id
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
          default: ''
        generative_voice_description:
          type: string
          title: Generative Voice Description
          default: ''
        supported_languages:
          items:
            type: string
          type: array
          title: Supported Languages
          default: []
        category:
          type: string
          title: Category
          default: cloned
        age:
          anyOf:
          - type: string
          - type: 'null'
          title: Age
        sex:
          anyOf:
          - type: string
          - type: 'null'
          title: Sex
        quality:
          type: string
          title: Quality
          default: mid
        is_public:
          type: boolean
          title: Is Public
          default: false
        verified:
          type: boolean
          title: Verified
          default: false
        pending_verification:
          type: boolean
          title: Pending Verification
          default: false
        sample_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Sample Url
        avatar_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Avatar Url
        sample_text:
          type: string
          title: Sample Text
          default: ''
      type: object
      required:
      - id
      - voice_id
      - name
      title: VoiceDetailInfo
      description: Extended voice metadata returned by CRUD endpoints.
    VoiceReferenceInfo:
      properties:
        id:
          type: integer
          title: Id
        voice_id:
          type: integer
          title: Voice Id
        name:
          type: string
          title: Name
          default: ''
        reference_text:
          type: string
          title: Reference Text
          default: ''
        s3_path:
          type: string
          title: S3 Path
          default: ''
        audio_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Audio Url
        is_generated:
          type: boolean
          title: Is Generated
          default: false
      type: object
      required:
      - id
      - voice_id
      title: VoiceReferenceInfo
      description: Voice reference audio metadata.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    VoiceInfo:
      properties:
        id:
          type: integer
          title: Id
        voice_id:
          type: integer
          title: Voice Id
        handle:
          anyOf:
          - type: string
          - type: 'null'
          title: Handle
        public_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Public Id
        name:
          type: string
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        category:
          type: string
          title: Category
          default: cloned
        sex:
          anyOf:
          - type: string
          - type: 'null'
          title: Sex
        age:
          anyOf:
          - type: string
          - type: 'null'
          title: Age
        quality:
          type: string
          title: Quality
          default: mid
        supported_languages:
          items:
            type: string
          type: array
          title: Supported Languages
          default: []
        sample_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Sample Url
        avatar_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Avatar Url
      type: object
      required:
      - id
      - voice_id
      - name
      title: VoiceInfo
      description: Voice metadata.
    Body_upload_voice_reference_v1_voices__voice_id__references_post:
      properties:
        file:
          type: string
          contentMediaType: application/octet-stream
          title: File
        reference_text:
          type: string
          title: Reference Text
          default: ''
      type: object
      required:
      - file
      title: Body_upload_voice_reference_v1_voices__voice_id__references_post
    VoicesResponse:
      properties:
        voices:
          items:
            $ref: '#/components/schemas/VoiceInfo'
          type: array
          title: Voices
        total:
          type: integer
          title: Total
          default: 0
        limit:
          type: integer
          title: Limit
          default: 20
        offset:
          type: integer
          title: Offset
          default: 0
      type: object
      required:
      - voices
      title: VoicesResponse
      description: List of available voices.
    UpdateVoiceRequest:
      properties:
        name:
          anyOf:
          - type: string
            maxLength: 200
            minLength: 1
          - type: 'null'
          title: Name
        description:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Description
        generative_voice_description:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Generative Voice Description
        supported_languages:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Supported Languages
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
        age:
          anyOf:
          - type: string
          - type: 'null'
          title: Age
        sex:
          anyOf:
          - type: string
          - type: 'null'
          title: Sex
        quality:
          anyOf:
          - type: string
          - type: 'null'
          title: Quality
        sample_text:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Sample Text
      type: object
      title: UpdateVoiceRequest
      description: Request body for updating an existing voice (partial update).
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError