Fish Audio
Fish Audio (API docs) is a voice provider for the voice clone, picked with --provider fishAudio or LOG_VOICE_PROVIDER=fishAudio (rule 143). It was the first provider (rule 142). Creating a voice model through its API needs API credit: on 2026-11-05 it answered 403, "API model creation limit reached (0/0)", so Inworld became the default.
The three calls
The client (src/extensions/fishAudio/client.ts) knows only these, each with FISH_API_KEY as a bearer token:
POST https://api.fish.audio/model, multipart:typetts,title,train_modefast,visibilityprivate, and thevoicesfiles (matt's own voice notes as they are, 10 to 60 s). The answer's_idis the voice id.GET https://api.fish.audio/model/{id}: the model's state.POST https://api.fish.audio/v1/tts, JSONtext,reference_id,format, with themodelheader:s2.1-pro-free($0, the default) ors2.1-pro($15 per million UTF-8 bytes, only when--modelnames it).
Setting it up
FISH_API_KEYin.env.local; its name is in.env.example.log clone voice --provider fishAudio --applyonce, when the account has credit (matt's call, rule 41).