# Fish Audio S1 - Core.Today AI API > Fish Audio S1 (legacy) TTS with the fixed parenthesis emotion tag set — (happy), (sad), (whispering) — and Voice Library voices. Same price as the S2 family; for prompts written against S1. Billed per UTF-8 byte. - **Provider**: Fish Audio - **Model ID**: fishaudio/s1 - **Category**: Audio & TTS - **Credits**: 105 per 1,000 Korean characters (0.034875 credits per UTF-8 byte; ~35 credits per 1,000 English characters) - **Speed**: Fast - **Quality**: High ## Features - Legacy S1 generation with a fixed parenthesis tag set: (happy), (sad), (whispering) - Voice Library voices via reference_id, plus cloned voices - Same price as the S2 family — for prompts written against S1 - mp3 / wav / opus output, speed and volume prosody control ## Use Cases - Korean narration for shorts, ads and explainer videos - Multilingual product voice-overs from one model - Audiobooks and long-form storytelling with emotion tags - Announcements and IVR prompts - Podcast intros and character voices ## API Endpoint Base URL: https://api.core.today/v1 Create Prediction: POST /predictions Get Status: GET /predictions/{job_id} ## Authentication Header: X-API-Key: YOUR_API_KEY ## Input Parameters ### Required - **text**: string - Text to synthesize (UTF-8). Billed by UTF-8 bytes — one Korean character is 3 bytes. S1 emotion tags are fixed parenthesis tags, e.g. (happy) Welcome!, (sad)(whispering) I will miss you. ### Optional - **reference_id**: string (default: 2f06c7a428e9431fadd60af4dfe91763) - Voice ID (32-hex id from the Fish Audio Voice Library). 37 curated voices (15 Fish Official Korean, 18 Korean community, 4 robot/character) can be previewed and copied from the Voice Gallery on this model's Core.Today Docs page (docs/models/fishaudio/…); any other public or cloned voice id works too — you are responsible for the rights to the voice you pass. - **format**: string (default: mp3) - Output audio format. Options: mp3, wav, opus - **mp3_bitrate**: integer (default: 128) - MP3 bitrate in kbps (mp3 only). Options: 64, 128, 192 - **speed**: number (default: 1.0) - Speaking rate multiplier, 0.5–2.0 (1.0 = default). - **volume**: number (default: 0) - Volume adjustment in dB, -20 to 20 (0 = default). - **latency**: string (default: balanced) - balanced favors low latency (default); normal favors stability — a good choice for batch generation. Options: balanced, normal - **normalize**: boolean (default: true) - Expand numbers, dates and units into spoken form. - **temperature**: number (default: 0.7) - Sampling temperature, 0.1–1.0. Lower is more consistent, higher more expressive. - **top_p**: number (default: 0.7) - Nucleus sampling probability mass, 0.1–1.0. - **chunk_length**: integer (default: 200) - Internal chunk length, 100–300. Affects phrasing of long passages. ## Examples ### Core.Today intro Same script as the voice gallery, rendered by S1. ```json { "model": "fishaudio/s1", "input": { "text": "안녕하세요, 코어닷투데이입니다. 하나의 API 키로 이미지, 영상, 음성 생성 모델을 모두 연결해 보세요.", "reference_id": "31765210eb5b4cdbbce529803673facc", "format": "mp3" } } ``` ### S1 emotion tags (parentheses) S1 uses a fixed tag set in parentheses, not the S2 bracket syntax. ```json { "model": "fishaudio/s1", "input": { "text": "(happy) 코어닷투데이에 오신 것을 환영합니다! (sad)(whispering) 크레딧이 곧 소진돼요.", "reference_id": "eac90d7ca17041478e69b58be3423a99" } } ``` ## Response Format ```json { "job_id": "abc123", "status": "pending | processing | completed | failed", "result": "URL or data (when completed)" } ``` ## Usage Flow 1. POST /predictions with model and input -> receive job_id 2. GET /predictions/{job_id} -> poll until status is completed or failed 3. Result contains output URL(s) ## Tips - The 15 Fish Official Korean voices (지우, 민준, …) are designed by Fish rather than cloned from a person, which makes their rights position the simplest — a good baseline to compare against - The 4 robot voices are registered as English but were measured on Korean: our gateway synthesized a Korean line and our own ASR transcribed it back at 0.85–0.97 similarity. Voices that failed that test are not in the gallery - Voices cloned from named characters or identifiable voice actors are deliberately absent. You can still pass any reference_id to the API — the rights to that voice are yours to clear - S1 tags are parentheses with a fixed set — (happy), (sad), (angry), (whispering); the S2 bracket syntax is not recognized - Prefer S2.1 Pro for new work — same price; S1 remains for prompts written against it - Korean is 3 UTF-8 bytes per character — 1,000 Korean characters cost about 105 credits - The docs Voice Gallery samples were rendered with S2.1 Pro; the voice ids are identical, only the model differs ## Documentation https://docs.fish.audio/features/text-to-speech