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

# Edit a voice

> Update a saved voice. Optionally replace the reference sample.



## OpenAPI

````yaml /openapi.json patch /v1/voices/{voice_id}
openapi: 3.1.0
info:
  title: Breeze Developer API
  description: >-
    Breeze Developer API for models, voices, text-to-speech, history, balance,
    usage, and browser-managed API keys.
  version: 1.0.0
servers:
  - url: https://api.breeze.blue
security: []
tags:
  - name: Models
    description: Supported TTS models.
  - name: Text to Speech
    description: Text-to-speech synthesis and instruction rewriting.
  - name: Voices
    description: Saved voices and voice settings.
  - name: Voice Previews
    description: Create, audition, and save temporary voice previews.
  - name: Account
    description: Balance, usage, and API keys.
  - name: History
    description: Generated audio history.
paths:
  /v1/voices/{voice_id}:
    patch:
      tags:
        - Voices
      summary: Edit a voice
      description: Update a saved voice. Optionally replace the reference sample.
      operationId: voices_edit
      parameters:
        - name: voice_id
          in: path
          required: true
          schema:
            title: Voice Id
            type: string
          description: Saved voice identifier returned by GET /v1/voices.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/VoicesEditRequestBody'
      responses:
        '200':
          description: Update status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericStatusResponse'
          headers:
            x-breeze-api-key-id:
              description: >-
                Public API key identifier used to authenticate the request, when
                an API key was used.
              schema:
                type: string
        '400':
          description: HTTP 400 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: HTTP 401 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: HTTP 404 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: HTTP 422 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '502':
          description: HTTP 502 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl \
              --request PATCH \
              --url "https://api.breeze.blue/v1/voices/voc_xeh3w54cqvnp" \
              --header "xi-api-key: $BREEZE_API_KEY" \
              --form "name=Brand Narrator v2" \
              --form "description=Updated voice description for the saved clone." \
              --form "files=@sample.wav;type=audio/wav"
        - lang: Python
          label: Python SDK
          source: |-
            from pathlib import Path

            import os

            from breeze_blue import BreezeBlue

            client = BreezeBlue(api_key=os.environ["BREEZE_API_KEY"])

            client.voices.edit(
                "voc_xeh3w54cqvnp",
                name="Brand Narrator v2",
                description="Updated voice description for the saved clone.",
                file=Path("sample.wav"),
            )
        - lang: TypeScript
          label: TypeScript SDK
          source: |-
            import { readFile } from "node:fs/promises";
            import { BreezeBlueClient } from "@breeze.blue/sdk";

            const client = new BreezeBlueClient({
              apiKey: process.env.BREEZE_API_KEY!,
            });

            await client.voices.edit("voc_xeh3w54cqvnp", {
              name: "Brand Narrator v2",
              description: "Updated voice description for the saved clone.",
              file: {
                data: await readFile("sample.wav"),
                filename: "sample.wav",
                contentType: "audio/wav",
              },
            });
components:
  schemas:
    VoicesEditRequestBody:
      properties:
        name:
          type: string
          title: Name
          description: New display name.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: New description.
        labels:
          anyOf:
            - type: string
            - type: 'null'
          title: Labels
          description: JSON object encoded as a string.
        files:
          anyOf:
            - items:
                type: string
                contentMediaType: application/octet-stream
              type: array
              maxItems: 1
            - type: 'null'
          title: Files
          description: Optional replacement sample. One WAV or MP3 file.
      type: object
      required:
        - name
      title: Body_edit_voice_v1_voices__voice_id__patch
    GenericStatusResponse:
      properties:
        status:
          title: Status
          type: string
      required:
        - status
      title: GenericStatusResponse
      type: object
    ErrorResponse:
      properties:
        ok:
          default: false
          title: Ok
          type: boolean
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        error:
          title: Error
          type: string
        meta:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          default: null
          title: Meta
      required:
        - code
        - detail
        - error
      title: ErrorResponse
      type: object
    ValidationErrorResponse:
      properties:
        ok:
          default: false
          title: Ok
          type: boolean
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        error:
          title: Error
          type: string
        meta:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Meta
      required:
        - code
        - detail
        - error
      title: ValidationErrorResponse
      type: object
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: xi-api-key
      description: Breeze Developer API key.

````