From d35b8915383be90872d5cc57d9910f365d15bc62 Mon Sep 17 00:00:00 2001 From: Alvaro Balbin <153404840+AlvaroBalbin@users.noreply.github.com> Date: Wed, 29 Jul 2026 21:30:11 +0100 Subject: [PATCH] Document voice upload fields on Create Model Two users asked how to pass samples to this endpoint. It is not a request field: the request takes type, title, train_mode and voices, and samples appears only on the returned model, defaulting to an empty list. Adds the required fields, a multipart example matching the schema, and a note on texts. Closes #40 Closes #41 --- api-reference/endpoint/model/create-model.mdx | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/api-reference/endpoint/model/create-model.mdx b/api-reference/endpoint/model/create-model.mdx index bff874c..b471f17 100644 --- a/api-reference/endpoint/model/create-model.mdx +++ b/api-reference/endpoint/model/create-model.mdx @@ -11,3 +11,27 @@ iconType: "solid" requests. Let your HTTP client set the multipart `Content-Type` boundary automatically. + +## Uploading voice files + +`type`, `title`, `train_mode`, and `voices` are required. Send each audio file +as a `voices` form field, repeating the field to upload several clips. + +```bash curl +curl --request POST https://api.fish.audio/model \ + --header "Authorization: Bearer $FISH_API_KEY" \ + --form type=tts \ + --form train_mode=fast \ + --form title="My Voice" \ + --form voices=@a.wav \ + --form voices=@b.wav +``` + +To send your own transcripts, add one `texts` field per clip, in the same order +as the `voices` fields. Omit `texts` and ASR runs on the uploaded audio instead. + + + `samples` is not a request field, so there is nothing to supply for it. It + appears only on the model returned by this endpoint, where it defaults to an + empty list and holds the preview clips once they exist. +