GET STARTED

Changelog

API changes and updates for Typecast Text-to-Speech API

New Endpoint: POST /v1/custom-voices/professional-clone

Added asynchronous Professional Voice Cloning. Submit a WAV or MP3 sample with its language, then check the returned custom voice until its status becomes completed or failed.

This release also updates the V3 voices and custom voices APIs, official SDK packages, and Cast CLI. Latest releases include Python 0.3.14, JavaScript 0.4.12, Go 0.3.13, Rust 0.3.13, and Cast CLI v1.0.9 with Professional Voice Cloning support.

New Endpoint: GET /v1/voices/recommendations

Added semantic voice recommendations based on a natural-language description.

New Endpoint: POST /v1/text-to-speech/compose

Added Compose TTS for synthesizing multiple text segments with segment-level voice and speech settings in one request.

New Endpoint: POST /v1/voices/clone

Added Instant Voice Cloning from a WAV or MP3 sample. The original endpoint is now deprecated; use POST /v1/custom-voices/instant-clone for new integrations.

New Endpoint: POST /v1/text-to-speech/with-timestamps

Returns the synthesized audio together with word- and character-level alignment data in a single response - ideal for auto-subtitling, karaoke highlights, and lip-sync animations.

POST /v1/text-to-speech/with-timestamps

Request Schema:

{
  "voice_id": "tc_60e5426de8b95f1d3000d7b5",
  "text": "Hello.",
  "model": "ssfm-v30"
}

Response Schema (summary):

{
  "audio": "<base64>",
  "audio_format": "wav",
  "audio_duration": 0.52,
  "words": [
    { "text": "Hello.", "start": 0.0, "end": 0.52 }
  ],
  "characters": [
    { "text": "H", "start": 0.0, "end": 0.08 },
    { "text": "e", "start": 0.08, "end": 0.18 },
    { "text": "l", "start": 0.18, "end": 0.28 },
    { "text": "l", "start": 0.28, "end": 0.36 },
    { "text": "o", "start": 0.36, "end": 0.48 },
    { "text": ".", "start": 0.48, "end": 0.52 }
  ]
}

granularity parameter:

granularity is optional. If omitted, the API returns both word- and character-level alignment in a single response.

ValueDescription
wordPer-word alignment. Recommended for all languages with whitespace.
charPer-character alignment. Required for Japanese (jpn) and Chinese (zho).

Captioning rules: Captions are split on sentence terminators (. ? ! 。 ? !) with a 7 s / 42-character hard cap per cue (BBC/Netflix subtitle guidelines).

SDK Updates - Timestamp TTS added to all 11 SDKs

SDKVersionMethod
Python0.3.0text_to_speech_with_timestamps()
JavaScript0.4.0textToSpeechWithTimestamps()
Gov0.3.0TextToSpeechWithTimestamps()
Rust0.3.0text_to_speech_with_timestamps()
Swiftv0.3.0textToSpeechWithTimestamps()
C#0.3.0TextToSpeechWithTimestampsAsync()
Java1.2.0textToSpeechWithTimestamps()
Kotlin1.2.0textToSpeechWithTimestamps()
C1.2.0typecast_text_to_speech_with_timestamps()
Zigv0.2.0textToSpeechWithTimestamps()
PHPv0.1.0textToSpeechWithTimestamps()

All SDK response objects include toSrt() / toVtt() subtitle export helpers and a saveAudio(path) / audio_bytes() convenience method.

New Endpoint: POST /v1/text-to-speech/stream

Added a low-latency streaming endpoint that delivers audio chunks as they are generated, enabling real-time playback without waiting for full synthesis.

POST /v1/text-to-speech/stream

Key Differences from /v1/text-to-speech:

FeatureStandardStreaming
ResponseComplete audio fileChunked audio stream
LatencyWait for full synthesisFirst chunk in ~200ms
volumeSupportedNot supported
target_lufsSupportedSupported
Output settingsOutputOutputStream (pitch, tempo, format, target_lufs)

Request Schema:

{
  "voice_id": "tc_xxxxx",
  "text": "Thanks for reaching out. Your reservation has been confirmed for Friday at 7 PM.",
  "model": "ssfm-v30",
  "language": "eng",
  "output": {
    "audio_pitch": 0,
    "audio_tempo": 1.0,
    "audio_format": "wav"
  }
}

Response: Chunked binary stream (audio/wav or audio/mpeg).

New Endpoint: GET /v1/users/me/subscription

Retrieve the authenticated user's plan tier, credit usage, and concurrency limits.

GET /v1/users/me/subscription

Response Schema:

{
  "plan": "lite",
  "credits": {
    "plan_credits": 200000,
    "used_credits": 157300
  },
  "limits": {
    "concurrency_limit": 5
  }
}

SDK Updates

All 9 official SDKs have been updated with streaming and subscription support:

SDKVersionStreaming Method
Python0.2.0text_to_speech_stream() (sync + async)
JavaScript0.3.0textToSpeechStream()ReadableStream
Gov0.2.0TextToSpeechStream()io.ReadCloser
Rust0.2.0text_to_speech_stream()Stream<Bytes>
Swiftv0.2.0textToSpeechStream()AsyncThrowingStream
C#0.2.0TextToSpeechStreamAsync()Stream
Java1.1.0textToSpeechStream()InputStream
Kotlin1.1.0textToSpeechStream()InputStream
C1.1.0typecast_text_to_speech_stream() (callback)

New Model: ssfm-v30

Added support for the new ssfm-v30 model with improved speech quality and expanded capabilities.

New Features:

  • Smart Emotion - Context-aware emotion inference using SmartPrompt
  • 7 Emotion Presets - Added whisper, toneup, tonedown presets
  • Universal Emotion Support - All emotions available across all voices
  • 37 Languages - Added 10 new languages

New Languages: Bengali, Cantonese, Hindi, Hungarian, Min Nan, Norwegian, Punjabi, Thai, Turkish, Vietnamese

Request Schema Changes:

// ssfm-v30 with SmartPrompt (context-aware emotion)
{
  "model": "ssfm-v30",
  "prompt": {
    "emotion_type": "smart",
    "previous_text": "I feel like I'm walking on air and I just want to scream with joy!",
    "next_text": "I am literally bursting with happiness and I never want this feeling to end!"
  }
}

// ssfm-v30 with PresetPrompt (manual emotion selection)
{
  "model": "ssfm-v30",
  "prompt": {
    "emotion_type": "preset",
    "emotion_preset": "happy",
    "emotion_intensity": 1.0
  }
}

New Endpoint: GET /v2/voices

Added enhanced voice listing endpoint with model-grouped emotions and additional metadata.

GET /v2/voices

Query Parameters:

ParameterTypeDescription
modelstringFilter by model (ssfm-v21, ssfm-v30)
genderstringFilter by gender (male, female)
agestringFilter by age group (child, teenager, young_adult, middle_age, elder)
use_casesstringFilter by use case (Audiobook, Game, E-learning, etc.)

Response Schema:

[
  {
    "voice_id": "tc_xxxxx",
    "voice_name": "Voice Name",
    "models": [
      {
        "version": "ssfm-v30",
        "emotions": ["normal", "happy", "sad", "angry", "whisper", "toneup", "tonedown"]
      },
      {
        "version": "ssfm-v21",
        "emotions": ["normal", "happy", "sad"]
      }
    ],
    "gender": "female",
    "age": "young_adult",
    "use_cases": ["Audiobook", "E-learning"]
  }
]

Deprecated: Voice Management Endpoints

The following endpoints have been deprecated and removed:

EndpointStatus
POST /v1/voicesRemoved
GET /v1/voices/{voice_id}Removed

Use GET /v2/voices for listing voices with enhanced metadata.

Initial Release: ssfm-v21

Launched the Typecast Text-to-Speech API with the ssfm-v21 model.

Endpoints:

MethodEndpointDescription
POST/v1/text-to-speechGenerate speech from text
GET/v1/voicesList available voices

Features:

  • Low latency speech synthesis
  • 4 Emotion presets: normal, happy, sad, angry
  • Emotion availability varies by voice
  • 27 languages supported

Supported Languages: English, Korean, Arabic, Bulgarian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Indonesian, Italian, Japanese, Malay, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, Swedish, Tagalog, Tamil, Ukrainian

Request Schema:

{
  "voice_id": "tc_xxxxx",
  "text": "Everything is so incredibly perfect that I feel like I'm dreaming.",
  "model": "ssfm-v21",
  "language": "eng",
  "prompt": {
    "emotion_preset": "normal",
    "emotion_intensity": 1.0
  },
  "output": {
    "volume": 100,
    "audio_pitch": 0,
    "audio_tempo": 1.0,
    "audio_format": "wav"
  }
}
⌘I