{
  "openapi": "3.1.0",
  "info": {
    "title": "AudioDojo — Chutes API",
    "description": "One chute, 12 models, 13 endpoints — covering text-to-speech, voice cloning, voice design, transcription, denoising, source separation, speaker verification, VAD, and language detection. Including Kokoro-82M, Qwen3-TTS 1.7B, Whisper large-v3-turbo, NVIDIA Canary-Qwen 2.5B, and...",
    "version": "33685e32-b209-5b82-8079-d43326fb1319",
    "contact": {
      "name": "Chutes",
      "url": "https://chutes.ai"
    },
    "x-chutes": {
      "chuteId": "d6c66e0a-3e04-595b-825c-f3a65e50b2c7",
      "slug": "vonkaiser-audiodojo",
      "modelName": "AudioDojo",
      "standardTemplate": null,
      "openaiCompatible": false,
      "confidentialCompute": true,
      "modelPage": "https://chutes.ai/app/chute/vonkaiser-audiodojo",
      "llmsTxt": "https://chutes.ai/app/chute/vonkaiser-audiodojo/llms.txt",
      "pricing": {
        "usdPerHour": 1.8
      }
    }
  },
  "servers": [
    {
      "url": "https://vonkaiser-audiodojo.chutes.ai"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Chutes API key. Send as `Authorization: Bearer $CHUTES_API_KEY`."
      }
    }
  },
  "paths": {
    "/speak": {
      "post": {
        "operationId": "speak",
        "summary": "POST /speak",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "speed": {
                    "type": "number",
                    "description": "Voice output speed.",
                    "default": 1,
                    "minimum": 0.1,
                    "maximum": 3
                  },
                  "voice": {
                    "type": "string",
                    "description": "Voice selection for text-to-speech",
                    "enum": [
                      "af_heart",
                      "af_alloy",
                      "af_aoede",
                      "af_bella",
                      "af_jessica",
                      "af_kore",
                      "af_nicole",
                      "af_nova",
                      "af_river",
                      "af_sarah",
                      "af_sky",
                      "am_adam",
                      "am_echo",
                      "am_eric",
                      "am_fenrir",
                      "am_liam",
                      "am_michael",
                      "am_onyx",
                      "am_puck",
                      "am_santa",
                      "bf_alice",
                      "bf_emma",
                      "bf_isabella",
                      "bf_lily",
                      "bm_daniel",
                      "bm_fable",
                      "bm_george",
                      "bm_lewis",
                      "ef_dora",
                      "em_alex",
                      "em_santa",
                      "ff_siwis",
                      "hf_alpha",
                      "hf_beta",
                      "hm_omega",
                      "hm_psi",
                      "if_sara",
                      "im_nicola",
                      "jf_alpha",
                      "jf_gongitsune",
                      "jf_nezumi",
                      "jf_tebukuro",
                      "jm_kumo",
                      "pf_dora",
                      "pm_alex",
                      "pm_santa",
                      "zf_xiaobei",
                      "zf_xiaoni",
                      "zf_xiaoxiao",
                      "zf_xiaoyi",
                      "zm_yunjian",
                      "zm_yunxi",
                      "zm_yunxia",
                      "zm_yunyang"
                    ],
                    "default": "af_heart"
                  }
                },
                "required": [
                  "text"
                ]
              },
              "example": {
                "text": "Your text here",
                "speed": 1,
                "voice": "af_heart"
              }
            }
          }
        }
      }
    },
    "/tts/kokoro": {
      "post": {
        "operationId": "tts_kokoro",
        "summary": "POST /tts/kokoro",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "speed": {
                    "type": "number",
                    "description": "Playback speed multiplier (0.1–3.0).",
                    "default": 1,
                    "minimum": 0.1,
                    "maximum": 3
                  },
                  "voice": {
                    "type": "string",
                    "description": "Built-in voice ID. See KokoroVoice enum for the full list.",
                    "enum": [
                      "af_heart",
                      "af_alloy",
                      "af_aoede",
                      "af_bella",
                      "af_jessica",
                      "af_kore",
                      "af_nicole",
                      "af_nova",
                      "af_river",
                      "af_sarah",
                      "af_sky",
                      "am_adam",
                      "am_echo",
                      "am_eric",
                      "am_fenrir",
                      "am_liam",
                      "am_michael",
                      "am_onyx",
                      "am_puck",
                      "am_santa",
                      "bf_alice",
                      "bf_emma",
                      "bf_isabella",
                      "bf_lily",
                      "bm_daniel",
                      "bm_fable",
                      "bm_george",
                      "bm_lewis",
                      "ef_dora",
                      "em_alex",
                      "em_santa",
                      "ff_siwis",
                      "hf_alpha",
                      "hf_beta",
                      "hm_omega",
                      "hm_psi",
                      "if_sara",
                      "im_nicola",
                      "jf_alpha",
                      "jf_gongitsune",
                      "jf_nezumi",
                      "jf_tebukuro",
                      "jm_kumo",
                      "pf_dora",
                      "pm_alex",
                      "pm_santa",
                      "zf_xiaobei",
                      "zf_xiaoni",
                      "zf_xiaoxiao",
                      "zf_xiaoyi",
                      "zm_yunjian",
                      "zm_yunxi",
                      "zm_yunxia",
                      "zm_yunyang"
                    ],
                    "default": "af_heart"
                  }
                },
                "required": [
                  "text"
                ]
              },
              "example": {
                "text": "Your text here",
                "speed": 1,
                "voice": "af_heart"
              }
            }
          }
        }
      }
    },
    "/tts/qwen3clone": {
      "post": {
        "operationId": "tts_qwen3_clone",
        "summary": "POST /tts/qwen3clone",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "language": {
                    "type": "string",
                    "description": "Target language name (e.g. 'English', 'Chinese').",
                    "default": "English"
                  },
                  "ref_text": {
                    "type": "string",
                    "description": "Transcript of the reference audio. If omitted, Whisper auto-transcribes it.",
                    "default": ""
                  },
                  "trim_sample": {
                    "type": "boolean",
                    "description": "If True, automatically trim ref audio to the first 6s. If False and the audio exceeds 6s, the request is rejected with an error.",
                    "default": false
                  },
                  "auto_denoise": {
                    "type": "boolean",
                    "description": "If True, run MetricGAN+ speech enhancement on the reference audio before cloning. Improves clone quality when the reference recording is noisy.",
                    "default": false
                  },
                  "high_fidelity": {
                    "type": "boolean",
                    "description": "Controls the voice cloning mode. False (default): speaker-embedding-only mode (xvec). The model extracts a speaker embedding from the reference audio and conditions generation purely on that vector — clean output with no risk of reference audio bleed-through. Recommended for most use cases. True: in-context learning (ICL) mode. The reference audio is prepended as acoustic context so the model can mimic fine-grained prosody and timbre directly. Higher voice similarity is possible, but the last word or syllable of your reference clip may bleed into the start of the generated output if the reference does not end on a clean silence.",
                    "default": false
                  },
                  "ref_audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded reference audio for voice cloning (max 6s)."
                  }
                },
                "required": [
                  "text",
                  "ref_audio_b64"
                ]
              },
              "example": {
                "text": "Your text here",
                "language": "English",
                "ref_text": "",
                "trim_sample": false,
                "auto_denoise": false,
                "high_fidelity": false,
                "ref_audio_b64": "<base64-encoded audio>"
              }
            }
          }
        }
      }
    },
    "/tts/qwen3custom": {
      "post": {
        "operationId": "tts_qwen3_custom",
        "summary": "POST /tts/qwen3custom",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "speaker": {
                    "type": "string",
                    "description": "Preset speaker identity: Vivian, Serena, Uncle Fu, Dylan, Eric, Ryan, Aiden, Ono Anna, Sohee. Defaults to Ryan.",
                    "default": null
                  },
                  "instruct": {
                    "type": "string",
                    "description": "Free-text delivery style, e.g. 'Very happy', 'calm husky', 'whispering'. Leave blank for neutral.",
                    "default": null
                  },
                  "language": {
                    "type": "string",
                    "description": "Target language name.",
                    "default": "English"
                  }
                },
                "required": [
                  "text"
                ]
              },
              "example": {
                "text": "Your text here",
                "language": "English"
              }
            }
          }
        }
      }
    },
    "/tts/qwen3design": {
      "post": {
        "operationId": "tts_qwen3_design",
        "summary": "POST /tts/qwen3design",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "instruct": {
                    "type": "string",
                    "description": "Voice description, e.g. 'A warm, confident male narrator with a slight British accent'."
                  },
                  "language": {
                    "type": "string",
                    "description": "Target language name.",
                    "default": "English"
                  }
                },
                "required": [
                  "text",
                  "instruct"
                ]
              },
              "example": {
                "text": "Your text here",
                "instruct": "example-string",
                "language": "English"
              }
            }
          }
        }
      }
    },
    "/stt/whisper": {
      "post": {
        "operationId": "stt_whisper",
        "summary": "POST /stt/whisper",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "language": {
                    "type": "string",
                    "description": "BCP-47 language code, e.g. 'en', 'fr', 'zh'. Auto-detected if omitted.",
                    "default": null
                  },
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file (any common format)."
                  },
                  "return_timestamps": {
                    "type": "boolean",
                    "description": "Include word-level timestamp chunks in the response.",
                    "default": true
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>",
                "return_timestamps": true
              }
            }
          }
        }
      }
    },
    "/stt/canary": {
      "post": {
        "operationId": "stt_canary",
        "summary": "POST /stt/canary",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file."
                  },
                  "max_new_tokens": {
                    "type": "integer",
                    "description": "Maximum tokens to generate for the transcript.",
                    "default": 256,
                    "minimum": 16,
                    "maximum": 4096
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>",
                "max_new_tokens": 256
              }
            }
          }
        }
      }
    },
    "/stt/parakeet": {
      "post": {
        "operationId": "stt_parakeet",
        "summary": "POST /stt/parakeet",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file."
                  },
                  "timestamps": {
                    "type": "boolean",
                    "description": "Include word and segment timestamps in the response.",
                    "default": true
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>",
                "timestamps": true
              }
            }
          }
        }
      }
    },
    "/audio/vad": {
      "post": {
        "operationId": "audio_vad",
        "summary": "POST /audio/vad",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file (any common format)."
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>"
              }
            }
          }
        }
      }
    },
    "/audio/diarize": {
      "post": {
        "operationId": "audio_diarize",
        "summary": "POST /audio/diarize",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file (any common format)."
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>"
              }
            }
          }
        }
      }
    },
    "/audio/verifyspeaker": {
      "post": {
        "operationId": "audio_verify_speaker",
        "summary": "POST /audio/verifyspeaker",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_a_b64": {
                    "type": "string",
                    "description": "Base64-encoded first audio clip."
                  },
                  "audio_b_b64": {
                    "type": "string",
                    "description": "Base64-encoded second audio clip."
                  }
                },
                "required": [
                  "audio_a_b64",
                  "audio_b_b64"
                ]
              },
              "example": {
                "audio_a_b64": "<base64-encoded audio>",
                "audio_b_b64": "<base64-encoded audio>"
              }
            }
          }
        }
      }
    },
    "/audio/denoise": {
      "post": {
        "operationId": "audio_denoise",
        "summary": "POST /audio/denoise",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file (any common format)."
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>"
              }
            }
          }
        }
      }
    },
    "/audio/separate": {
      "post": {
        "operationId": "audio_separate",
        "summary": "POST /audio/separate",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file (any common format)."
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>"
              }
            }
          }
        }
      }
    },
    "/audio/detectlanguage": {
      "post": {
        "operationId": "audio_detect_language",
        "summary": "POST /audio/detectlanguage",
        "responses": {
          "200": {
            "description": "Binary media payload.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "audio_b64": {
                    "type": "string",
                    "description": "Base64-encoded audio file (any common format)."
                  }
                },
                "required": [
                  "audio_b64"
                ]
              },
              "example": {
                "audio_b64": "<base64-encoded audio>"
              }
            }
          }
        }
      }
    }
  }
}