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

# List Voices

> List and search voices with pagination.

## Query Parameters

| Parameter | Default | Description |
|-----------|---------|-------------|
| `page_size` | 30 | Number of voices per page (max 100) |
| `next_page_token` | - | Token for fetching next page |
| `search` | - | Search voices by name |
| `sort` | `created_at` | Sort field: `created_at` or `name` |
| `sort_direction` | `desc` | Sort order: `asc` or `desc` |
| `include_total_count` | true | Include total count in response |
| `voice_ids` | - | Filter by comma-separated voice IDs |




## OpenAPI

````yaml /specs/openapi-speech.json get /api/speech/v2/voices
openapi: 3.0.3
info:
  title: Perso Speech API
  version: 0.0.0
servers:
  - url: https://platform.perso.ai
security: []
paths:
  /api/speech/v2/voices:
    get:
      tags:
        - Speech
      summary: List Voices
      description: |
        List and search voices with pagination.

        ## Query Parameters

        | Parameter | Default | Description |
        |-----------|---------|-------------|
        | `page_size` | 30 | Number of voices per page (max 100) |
        | `next_page_token` | - | Token for fetching next page |
        | `search` | - | Search voices by name |
        | `sort` | `created_at` | Sort field: `created_at` or `name` |
        | `sort_direction` | `desc` | Sort order: `asc` or `desc` |
        | `include_total_count` | true | Include total count in response |
        | `voice_ids` | - | Filter by comma-separated voice IDs |
      operationId: speech_v2_voices_list
      parameters:
        - in: query
          name: include_total_count
          schema:
            type: boolean
            default: true
          description: Include total count in response.
        - in: query
          name: next_page_token
          schema:
            type: string
          description: Token for pagination.
        - in: query
          name: page_size
          schema:
            type: integer
            default: 30
          description: Number of voices per page (max 100).
        - in: query
          name: search
          schema:
            type: string
          description: Search voices by name.
        - in: query
          name: sort
          schema:
            type: string
            enum:
              - created_at
              - name
            default: created_at
          description: Sort field (created_at or name).
        - in: query
          name: sort_direction
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
          description: Sort direction.
        - in: query
          name: voice_ids
          schema:
            type: string
          description: Comma-separated list of voice IDs to filter.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VoiceListResponse'
          description: ''
        '401':
          description: Unauthorized - Invalid or missing authentication credentials.
        '403':
          description: Forbidden - You do not have permission to perform this action.
        '500':
          description: Internal Server Error - An unexpected error occurred.
      security:
        - PersoPlatform-APIKey: []
          xi-api-key: []
        - {}
components:
  schemas:
    VoiceListResponse:
      type: object
      properties:
        voices:
          type: array
          items:
            $ref: '#/components/schemas/VoiceList'
        has_more:
          type: boolean
        total_count:
          type: integer
        next_page_token:
          type: string
          nullable: true
      required:
        - has_more
        - next_page_token
        - voices
    VoiceList:
      type: object
      properties:
        voice_id:
          type: string
          readOnly: true
        name:
          type: string
          maxLength: 255
        description:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - created_at
        - name
        - voice_id
  securitySchemes:
    PersoPlatform-APIKey:
      type: apiKey
      in: header
      name: PersoPlatform-APIKey
    xi-api-key:
      type: apiKey
      in: header
      name: xi-api-key
      description: >-
        Use this header if you want to call the API with an
        ElevenLabs-compatible SDK. Pass your Perso API key as the `xi-api-key`
        header value.

````