Text to Speech

Voice Cloning

Lip Sync Video

Other

Text to Speech — Multi-script TTS

Generate one audio file from a multi-speaker script.

Multi-script Text to Speech

POST /api/open/v1/speech/tts/multi-script. Send speaker voice IDs and ordered script lines to generate a single multi-speaker audio file. This endpoint uses FishAudio S2 Pro voices only.

Endpoint

POST /api/open/v1/speech/tts/multi-script

Request Headers

Content-Type
stringheaderRequired
application/json
Authorization
stringheaderRequired
Bearer <token> (API Key)

Request Parameters

application/json
speakers
arrayRequired
at least 2 speakers. Each item: { name, voiceId }
lines
arrayRequired
ordered script lines. Each item: { speakerName, text, order }
format
stringOptionalDefault: mp3
mp3 | wav
Available options:mp3wav
cache
booleanOptional
false returns audio stream; true caches and returns audio_url
speed
numberOptionalDefault: 1
0.5-2.0
volume
numberOptionalDefault: 0
-20..20
stability
numberOptionalDefault: 1
0.5-1.5
similarity
numberOptionalDefault: 1
0.5-1.5
language
stringOptional
Optional language hint, such as en, zh, ru
token
string // Optional if Authorization: Bearer is set

Response Data

// cache=false success response - 200
Content-Type: audio/mpeg (or audio/wav depending on format)
X-OpenAPI-Credits-Used: number
X-OpenAPI-Quota-Remaining: number
X-Request-Id: string
<Binary audio data>

// cache=true success response - 200
{
  "success": true,
  "audio_url": string,
  "format": "mp3" | "wav",
  "characters_used": number,
  "credits_used": number,
  "quota_remaining": number,
  "expires_at": string
}

// Error response
{
  "code": string,
  "message": string,
  "requestId"?: string,
  "remaining_quota"?: number,
  "required_quota"?: number
}

CURL Example

curl -X POST https://fishaudio.org/api/open/v1/speech/tts/multi-script \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "speakers": [
    {
      "name": "Host",
      "voiceId": "d094a1df-fe4f-40d9-961a-99c361eaab6c"
    },
    {
      "name": "Guest",
      "voiceId": "93100ea8-8d9e-4898-8678-3b7714332c60"
    }
  ],
  "lines": [
    {
      "speakerName": "Host",
      "text": "Welcome to our product update.",
      "order": 0
    },
    {
      "speakerName": "Guest",
      "text": "Today we will cover the multi-script TTS API.",
      "order": 1
    }
  ],
  "format": "mp3",
  "cache": false,
  "speed": 1,
  "volume": 0,
  "stability": 1,
  "similarity": 1,
  "language": "en"
}' \
  --output multi-script.mp3

Online Debug

Status Code Description

Status Code Description:
200 OK                  - Request successful
400 Bad Request         - Invalid request parameters
401 Unauthorized        - Invalid API Token
403 Forbidden          - Access forbidden
404 Not Found          - Resource not found
413 Payload Too Large  - Upload file too large
429 Too Many Requests  - Rate limit exceeded/Insufficient credits
500 Server Error       - Internal server error

Error Response Format:
{
  "error": string,      // Error message
  "details": string,    // Detailed error message (optional)
  "code": string       // Error code (optional)
}