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 `.'