Vapi Provider Resources API

Generic CRUD over provider-side resources (e.g. ElevenLabs voices, Cartesia voices, Deepgram custom models) so they can be created and managed through Vapi without leaving the platform.

OpenAPI Specification

vapi-provider-resources-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Vapi Provider Resources API
  description: Vapi API — Provider Resources resource. Voice AI for developers.
  version: '1.0'
  contact:
    name: Vapi
    url: https://vapi.ai
servers:
- url: https://api.vapi.ai
security:
- bearer: []
tags:
- name: Provider Resources
  description: Provider Resources endpoints.
paths:
  /provider/{provider}/{resourceName}:
    post:
      operationId: ProviderResourceController_createProviderResource
      summary: Create Provider Resource
      parameters:
      - name: content-type
        required: true
        in: header
        schema:
          type: string
      - name: provider
        required: true
        in: path
        description: The provider (e.g., 11labs)
        schema:
          enum:
          - cartesia
          - 11labs
          type: string
      - name: resourceName
        required: true
        in: path
        description: The resource name (e.g., pronunciation-dictionary)
        schema:
          enum:
          - pronunciation-dictionary
          type: string
      responses:
        '201':
          description: Successfully created provider resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResource'
      tags:
      - Provider Resources
      security:
      - bearer: []
    get:
      operationId: ProviderResourceController_getProviderResourcesPaginated
      summary: List Provider Resources
      parameters:
      - name: provider
        required: true
        in: path
        description: The provider (e.g., 11labs)
        schema:
          enum:
          - cartesia
          - 11labs
          type: string
      - name: resourceName
        required: true
        in: path
        description: The resource name (e.g., pronunciation-dictionary)
        schema:
          enum:
          - pronunciation-dictionary
          type: string
      - name: id
        required: false
        in: query
        schema:
          type: string
      - name: resourceId
        required: false
        in: query
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: This is the page number to return. Defaults to 1.
        schema:
          minimum: 1
          type: number
      - name: sortOrder
        required: false
        in: query
        description: This is the sort order for pagination. Defaults to 'DESC'.
        schema:
          enum:
          - ASC
          - DESC
          type: string
      - name: sortBy
        required: false
        in: query
        description: This is the column to sort by. Defaults to 'createdAt'.
        schema:
          enum:
          - createdAt
          - duration
          - cost
          type: string
      - name: limit
        required: false
        in: query
        description: This is the maximum number of items to return. Defaults to 100.
        schema:
          minimum: 0
          maximum: 1000
          type: number
      - name: createdAtGt
        required: false
        in: query
        description: This will return items where the createdAt is greater than the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtLt
        required: false
        in: query
        description: This will return items where the createdAt is less than the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtGe
        required: false
        in: query
        description: This will return items where the createdAt is greater than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtLe
        required: false
        in: query
        description: This will return items where the createdAt is less than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtGt
        required: false
        in: query
        description: This will return items where the updatedAt is greater than the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtLt
        required: false
        in: query
        description: This will return items where the updatedAt is less than the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtGe
        required: false
        in: query
        description: This will return items where the updatedAt is greater than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtLe
        required: false
        in: query
        description: This will return items where the updatedAt is less than or equal to the specified value.
        schema:
          format: date-time
          type: string
      responses:
        '200':
          description: List of provider resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResourcePaginatedResponse'
      tags:
      - Provider Resources
      security:
      - bearer: []
  /provider/{provider}/{resourceName}/{id}:
    get:
      operationId: ProviderResourceController_getProviderResource
      summary: Get Provider Resource
      parameters:
      - name: provider
        required: true
        in: path
        description: The provider (e.g., 11labs)
        schema:
          enum:
          - cartesia
          - 11labs
          type: string
      - name: resourceName
        required: true
        in: path
        description: The resource name (e.g., pronunciation-dictionary)
        schema:
          enum:
          - pronunciation-dictionary
          type: string
      - name: id
        required: true
        in: path
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: Successfully retrieved provider resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResource'
        '404':
          description: Provider resource not found
      tags:
      - Provider Resources
      security:
      - bearer: []
    delete:
      operationId: ProviderResourceController_deleteProviderResource
      summary: Delete Provider Resource
      parameters:
      - name: provider
        required: true
        in: path
        description: The provider (e.g., 11labs)
        schema:
          enum:
          - cartesia
          - 11labs
          type: string
      - name: resourceName
        required: true
        in: path
        description: The resource name (e.g., pronunciation-dictionary)
        schema:
          enum:
          - pronunciation-dictionary
          type: string
      - name: id
        required: true
        in: path
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResource'
        '404':
          description: Provider resource not found
      tags:
      - Provider Resources
      security:
      - bearer: []
    patch:
      operationId: ProviderResourceController_updateProviderResource
      summary: Update Provider Resource
      parameters:
      - name: provider
        required: true
        in: path
        description: The provider (e.g., 11labs)
        schema:
          enum:
          - cartesia
          - 11labs
          type: string
      - name: resourceName
        required: true
        in: path
        description: The resource name (e.g., pronunciation-dictionary)
        schema:
          enum:
          - pronunciation-dictionary
          type: string
      - name: id
        required: true
        in: path
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderResource'
        '404':
          description: Provider resource not found
      tags:
      - Provider Resources
      security:
      - bearer: []
components:
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: Bearer
      type: http
      description: Retrieve your API Key from [Dashboard](dashboard.vapi.ai).
  schemas:
    PaginationMeta:
      type: object
      properties:
        itemsPerPage:
          type: number
        totalItems:
          type: number
        currentPage:
          type: number
        totalPages:
          type: number
        hasNextPage:
          type: boolean
        sortOrder:
          type: string
          enum:
          - ASC
          - DESC
        itemsBeyondRetention:
          type: boolean
        createdAtLe:
          format: date-time
          type: string
        createdAtGe:
          format: date-time
          type: string
      required:
      - itemsPerPage
      - totalItems
      - currentPage
    ProviderResource:
      type: object
      properties:
        id:
          type: string
          description: This is the unique identifier for the provider resource.
        orgId:
          type: string
          description: This is the unique identifier for the org that this provider resource belongs to.
        createdAt:
          format: date-time
          type: string
          description: This is the ISO 8601 date-time string of when the provider resource was created.
        updatedAt:
          format: date-time
          type: string
          description: This is the ISO 8601 date-time string of when the provider resource was last updated.
        provider:
          type: string
          description: This is the provider that manages this resource.
          enum:
          - cartesia
          - 11labs
        resourceName:
          type: string
          description: This is the name/type of the resource.
          enum:
          - pronunciation-dictionary
        resourceId:
          type: string
          description: This is the provider-specific identifier for the resource.
        resource:
          type: object
          description: This is the full resource data from the provider's API.
      required:
      - id
      - orgId
      - createdAt
      - updatedAt
      - provider
      - resourceName
      - resourceId
      - resource
    ProviderResourcePaginatedResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ProviderResource'
        metadata:
          $ref: '#/components/schemas/PaginationMeta'
      required:
      - results
      - metadata