Arpeggi Labs Voice Blender API
Blend two to four voice models into a new voice model.
Blend two to four voice models into a new voice model.
openapi: 3.0.3
info:
title: Kits AI Stem Splitter Voice Blender API
version: v1
description: 'The Kits AI API (operated by Arpeggi Labs) provides studio-quality AI music and audio tools as asynchronous inference jobs: voice conversion, vocal separation, stem splitting, and voice-model blending, plus a catalog of royalty-free artist voice models. All create endpoints enqueue a job and return its status; poll the corresponding fetch endpoint for the signed output file URLs. This specification was generated by API Evangelist from the published Kits AI documentation (https://docs.kits.ai/); the provider lists an openapi.json in its llms.txt but the file was not retrievable at generation time.'
contact:
name: Kits AI Support
url: https://help.kits.ai/
x-generated-by: api-evangelist-enrichment
x-source: https://docs.kits.ai/api-reference
servers:
- url: https://arpeggi.io/api/kits/v1
description: Production
security:
- bearerAuth: []
tags:
- name: Voice Blender
description: Blend two to four voice models into a new voice model.
paths:
/voice-blender:
post:
tags:
- Voice Blender
operationId: createVoiceBlend
summary: Create a voice blender job
description: Creates a voice blender job and adds it to the blender queue. Provide two to four voice models and one fewer alpha value than the number of models (the last alpha is 1 minus the sum of the others). The output model is usable once the job status is "success".
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- modelId1
- modelId2
- alpha
properties:
modelId1:
type: integer
description: ID of the first voice model to blend.
modelId2:
type: integer
description: ID of the second voice model to blend.
modelId3:
type: integer
description: ID of the third voice model to blend.
modelId4:
type: integer
description: ID of the fourth voice model to blend.
alpha:
type: number
minimum: 0
maximum: 1
description: Percentage of output from the first model (0 to 1).
alpha2:
type: number
minimum: 0
maximum: 1
description: Percentage from the second model. Required if modelId3 is provided.
alpha3:
type: number
minimum: 0
maximum: 1
description: Percentage from the third model. Required if modelId4 is provided.
title:
type: string
description: Title of the new voice model.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceBlenderJob'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
get:
tags:
- Voice Blender
operationId: listVoiceBlends
summary: Fetch voice blender jobs
description: Returns a paginated list of voice blender jobs.
parameters:
- $ref: '#/components/parameters/Order'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/VoiceBlenderJob'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/voice-blender/{id}:
get:
tags:
- Voice Blender
operationId: getVoiceBlend
summary: Fetch a voice blender job by ID
description: Returns a single voice blender job by id.
parameters:
- $ref: '#/components/parameters/JobId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceBlenderJob'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
parameters:
JobId:
name: id
in: path
required: true
schema:
type: integer
PerPage:
name: perPage
in: query
description: Page size (default 10).
schema:
type: integer
default: 10
Page:
name: page
in: query
description: Page offset (default 1).
schema:
type: integer
default: 1
Order:
name: order
in: query
description: Sort order, asc (default) or desc.
schema:
type: string
enum:
- asc
- desc
default: asc
responses:
TooManyRequests:
description: Rate limit exceeded.
content:
text/plain:
schema:
type: string
Forbidden:
description: Attempted to fetch a resource that does not belong to the requesting user.
content:
text/plain:
schema:
type: string
Unauthorized:
description: Authentication was not provided or was invalid.
content:
text/plain:
schema:
type: string
UnprocessableEntity:
description: Request body or query params are invalid.
content:
text/plain:
schema:
type: string
schemas:
VoiceBlenderJob:
type: object
description: A voice blender job that combines two to four voice models.
properties:
id:
type: integer
model1Id:
type: integer
model2Id:
type: integer
model3Id:
type: integer
nullable: true
model4Id:
type: integer
nullable: true
alpha:
type: number
alpha2:
type: number
nullable: true
alpha3:
type: number
nullable: true
status:
type: string
enum:
- running
- success
- error
- cancelled
outputModelId:
type: integer
nullable: true
title:
type: string
PaginationMeta:
type: object
properties:
total:
type: integer
perPage:
type: integer
currentPage:
type: integer
lastPage:
type: integer
firstPage:
type: integer
firstPageUrl:
type: string
lastPageUrl:
type: string
nextPageUrl:
type: string
nullable: true
previousPageUrl:
type: string
nullable: true
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'API key issued from the Kits AI API access page (https://app.kits.ai/api-access), sent as `Authorization: Bearer <api-key>`.'