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

# Resolve upload limits

> Returns the upload limits that apply to the calling workspace, plus its live PVC voice slot usage (`usedPvcVoiceSlots` / `maxPvcVoiceSlots`). Use it to discover your limits programmatically instead of hard-coding them.

Returns the upload limits that apply to your workspace, plus your live PVC voice slot usage (`usedPvcVoiceSlots` / `maxPvcVoiceSlots`). Slot capacity is plan-dependent, so query it here instead of hard-coding numbers.


## OpenAPI

````yaml get /voices/v1/pvcVoices:resolveUploadLimits
openapi: 3.0.0
info:
  title: Inworld Professional Voice Cloning API
  version: v1
  contact:
    name: Inworld AI
    url: https://inworld.ai
    email: support@inworld.ai
servers:
  - url: https://api.inworld.ai
security:
  - inworld_basic: []
tags:
  - name: PvcVoiceService
paths:
  /voices/v1/pvcVoices:resolveUploadLimits:
    get:
      tags:
        - PvcVoiceService
      summary: Resolve upload limits and slot usage
      description: >-
        Returns the upload limits that apply to the calling workspace, plus its
        live PVC voice slot usage (`usedPvcVoiceSlots` / `maxPvcVoiceSlots`).
        Use it to discover your limits programmatically instead of hard-coding
        them.
      operationId: PvcVoiceService_ResolvePvcUploadLimits
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/inworldvoicev1ResolvePvcUploadLimitsResponse
              examples:
                limits:
                  summary: Limits and slot usage
                  value:
                    maxSamples: 50
                    maxFileSizeBytes: '1000000000'
                    maxTotalSizeBytes: '5368709120'
                    acceptedMimeTypes:
                      - audio/wav
                      - audio/mpeg
                      - audio/webm
                    supportedLanguages:
                      - EN_US
                    minTotalAudioDurationSec: 600
                    maxFilesPerUpload: 10
                    usedPvcVoiceSlots: 3
                    maxPvcVoiceSlots: 10
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >-
            curl -s
            'https://api.inworld.ai/voices/v1/pvcVoices:resolveUploadLimits' \
              -H "Authorization: Basic $INWORLD_API_KEY"
        - lang: python
          label: Python
          source: >-
            import requests


            url =
            "https://api.inworld.ai/voices/v1/pvcVoices:resolveUploadLimits"

            headers = {"Authorization": "Basic <api-key>"}


            response = requests.get(url, headers=headers)

            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const url =
            'https://api.inworld.ai/voices/v1/pvcVoices:resolveUploadLimits';


            const response = await fetch(url, {
              headers: { 'Authorization': 'Basic <api-key>' },
            });


            console.log(await response.json());
components:
  schemas:
    inworldvoicev1ResolvePvcUploadLimitsResponse:
      type: object
      properties:
        maxSamples:
          type: integer
          format: int32
          description: Maximum samples one voice can hold.
        maxFileSizeBytes:
          type: string
          format: int64
          description: Maximum size of a single audio file, in bytes.
        maxTotalSizeBytes:
          type: string
          format: int64
          description: Maximum combined sample storage per voice, in bytes.
        acceptedMimeTypes:
          type: array
          items:
            type: string
          description: >-
            Accepted audio MIME types. The actual byte content is sniffed to
            determine format.
        supportedLanguages:
          type: array
          items:
            type: string
          description: Languages PVC training currently supports.
        minTotalAudioDurationSec:
          type: integer
          format: int32
          description: >-
            Minimum cumulative sample audio (after trims) required to train, in
            seconds.
        maxFilesPerUpload:
          type: integer
          format: int32
          description: Maximum files in a single upload request.
        usedPvcVoiceSlots:
          type: integer
          format: int32
          description: PVC voice slots currently claimed by this account.
        maxPvcVoiceSlots:
          type: integer
          format: int32
          description: Total PVC voice slots this account's plan allows, including add-ons.
    rpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: >-
            The status code, which should be an enum value of
            [google.rpc.Code][google.rpc.Code].
        message:
          type: string
          description: >-
            A developer-facing error message, which should be in English. Any
            user-facing error message should be localized and sent in the
            [google.rpc.Status.details][google.rpc.Status.details] field, or
            localized by the client.
        details:
          type: array
          items:
            $ref: '#/components/schemas/protobufAny'
          description: >-
            A list of messages that carry the error details. There is a common
            set of message types for APIs to use.
      description: >-
        The `Status` type defines a logical error model that is suitable for
        different programming environments, including REST APIs and RPC APIs.
    protobufAny:
      type: object
      properties:
        '@type':
          type: string
          description: >-
            A URL/resource name that uniquely identifies the type of the
            serialized protocol buffer message.
      additionalProperties: {}
      description: >-
        `Any` contains an arbitrary serialized protocol buffer message along
        with a URL that describes the type of the serialized message.
  securitySchemes:
    inworld_basic:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your [API key](../../../api-reference/introduction). Read permissions
        are required for GET endpoints. Write permissions are required for POST,
        PATCH, and DELETE endpoints.

         For Basic authentication, please populate `Basic $INWORLD_API_KEY`. You can create a key in one command with the [Inworld CLI](../../../tts/resources/inworld-cli): `inworld workspace add-key`.

````