Fish Audio Docs
API ReferenzText-to-SpeechText-to-Speech (synchron)

Synchrones Text-to-Speech v3

Audio synchron erzeugen oder wiederherstellbare asynchrone Jobs über HTTP v3 erstellen.

HTTP TTS v3 ist der empfohlene, anbieterneutrale Vertrag. Die Plattform übernimmt das Anbieter-Routing; Clients verwenden öffentliche voiceId und modelId.

Base URL

https://fishaudio.org/api/open/v3

Synchron oder asynchron wählen

Kurze Texte können synchron erzeugt werden. Für lange Texte, Stapel und wiederherstellbare Ergebnisse Jobs verwenden.

Modelle und Stimmen ermitteln

curl "https://fishaudio.org/api/open/v3/speech/tts/capabilities"
curl "https://fishaudio.org/api/open/v3/voices?page=1&pageSize=20&includePersonal=false" \
  -H "Authorization: Bearer $FISHAUDIO_API_KEY"

Nur verfügbare Modelle und eine Stimme verwenden, deren modelIds das gewählte Modell enthält. Grenzen, Formate und Steuerparameter aus Capabilities lesen.

Synchron erzeugen

POST /api/open/v3/speech/tts
curl "https://fishaudio.org/api/open/v3/speech/tts" \
  -H "Authorization: Bearer $FISHAUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Request-Id: tts-example-001" \
  -d '{"text":"Hello","voiceId":"00a1b221-6137-4b73-ad62-b0cbce134167","modelId":"fishaudio-s21pro-flash","format":"mp3"}' --output speech.mp3

Anfragefelder

fieldtyperequiredconstraints
textstringyes1–10,000
voiceIdstringyesmust support modelId
modelIdstringnopublic model ID; omitted uses voice provider default
formatstringnomp3, wav, ogg; default mp3
speednumberno0.5–2; default 1
volumenumberno-20–20; default 0
pitchnumberno-12–12
stabilitynumberno0.5–1.5
similaritynumberno0.5–1.5
languagestringno1–64 characters in v3
emotionstringno1–64 characters in v3
instructionstringnoup to 1,600 characters
textNormalizationbooleannostructured-text normalization

Unknown fields are rejected. Unsupported generic controls are listed in X-OpenAPI-Ignored-Parameters.

Erfolgreiche Antwort

HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Request-Id: tts-example-001
X-OpenAPI-Quota-Remaining: 99994
X-OpenAPI-Credits-Used: 6

<binary audio data>

Erfolg liefert Audio-Bytes. Erst HTTP-Status und dann Content-Type auswerten; Fehler sind JSON.

Asynchrone Jobs

POST /speech/tts/jobs
GET /speech/tts/jobs/{jobId}
GET /speech/tts/jobs/{jobId}/audio?download=1
Authorization: Bearer FISHAUDIO_API_KEY

task.taskId speichern. pending und processing sind nicht final; success, partial_fail und fail sind final.

Fehler und Wiederholungen

Errors use {"code":"ERR_REQUEST_ID_CONFLICT","message":"...","requestId":"..."}. 400 ungültige Anfrage; 401 ungültiger Schlüssel; 402 unzureichendes Kontingent; 404 Ressource fehlt; 409 Idempotenzkonflikt; 413 Anfrage zu groß; 429 Limit; 500 Generierungsfehler.

Idempotenz und Abrechnung

Eine stabile X-Request-Id nur für identische Wiederholungen verwenden. Synchrones Audio wird nach Abschluss nicht erneut ausgeliefert; Jobs bleiben abrufbar.

Maschinenlesbarer Vertrag und Migration

GET /api/open/v3/openapi.json

Bestehende v1/v2-Clients bleiben kompatibel. Neue Integrationen verwenden v3. Migration guide.