Pular para o conteúdo principal

O text-to-speech MiniMax Speech 2.8 Turbo, otimizado para velocidade e custo, lê um roteiro em uma de 472 vozes do sistema, com a emoção escolhida. Devolve por padrão um MP3 mono de 32 kHz, com velocidade, tom, volume e marcações sonoras como (sighs).

A partir de $0.072/1.000 caracteres

Playground

Enviar uma requisição

Início rápido

Os exemplos usam as definições públicas de parâmetros do endpoint selecionado. Troque a chave de API e as mídias de exemplo e envie a requisição a partir do seu servidor.

SDKs e integrações
POSThttps://api.spicyapi.ai/api/v1/jobs/createTask

Autenticação da API

Guarde a chave de API na variável de ambiente do servidor SPICY_API_KEY. Use autenticação Bearer e Content-Type: application/json nas requisições JSON.

Authorization: Bearer $SPICY_API_KEY
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
  -d '{
  "model": "minimax/speech-2.8-turbo/text-to-speech",
  "input": {
    "text": "Welcome back. Your files finished rendering a minute ago and are ready to download.",
    "emotion": "neutral",
    "language": "auto",
    "voice_id": "Calm_Woman",
    "output_format": "mp3"
  }
}'

# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $SPICY_API_KEY"

Gerado a partir do schema de entrada deste modelo — o mesmo que a API usa para validar cada requisição.

Parâmetros de entrada

Coloque estes campos no objeto input do corpo da requisição. Nomes e tipos são os mesmos da API. Quando nenhum valor padrão estiver indicado, não presuma que exista um.

textstringObrigatório

As palavras a serem faladas, exatamente como escritas. Marcações sonoras entre parênteses, como (sighs) ou (laughs), são interpretadas como som, não lidas em voz alta. Cobrado a cada 1.000 caracteres, incluindo espaços e pontuação. Até 5.000 caracteres.

Valor padrão
Não especificado
Restrições
minLength:1
maxLength:5000
pronunciation_dictarray<object>Opcional

Até 100 pares {alias, pronunciation}. Cada ocorrência de alias em text é lida como pronunciation: palavras comuns (Omg → Oh my god) ou IPA entre parênteses, como (rɪˈzjuːm). alias não pode conter barra. Não altera o preço; só text é cobrado.

Valor padrão
Não especificado
Restrições
maxItems:100
english_normalizationbooleanOpcional

Quando ativado, números, datas e abreviações em texto em inglês são lidos como uma pessoa diria, por exemplo 1990 como “nineteen ninety”. Desativado por padrão. Não altera o preço.

Valor padrão
false
audio_channelsstringOpcional

Canais de saída: mono (padrão) ou stereo. Não altera o preço.

Valor padrão
Não especificado
Valores permitidos
"mono""stereo"
bitrateintegerOpcional

Taxa de bits do MP3 em bits por segundo: 32000, 64000, 128000 ou 256000. Padrão: 128000; só vale quando output_format é mp3. Não altera o preço.

Valor padrão
Não especificado
Valores permitidos
3200064000128000256000
sample_rateintegerOpcional

Taxa de amostragem do áudio em Hz: 8000, 16000, 22050, 24000, 32000, 44100. Padrão: 32000. Não altera o preço.

Valor padrão
Não especificado
Valores permitidos
80001600022050240003200044100
output_formatstringOpcional

Formato do arquivo: mp3 (padrão), wav, flac ou pcm, isto é, amostras brutas de 16 bits little-endian sem cabeçalho, no sample_rate e nos audio_channels escolhidos. Navegadores não reproduzem pcm; escolha wav para receber as mesmas amostras em um arquivo reproduzível. Não altera o preço.

Valor padrão
"mp3"
Valores permitidos
"mp3""wav""flac""pcm"
languagestringOpcional

Uma indicação que melhora a pronúncia para um dos 40 idiomas. Padrão: auto, que detecta o idioma a partir do roteiro.

Valor padrão
"auto"
Valores permitidos
"auto""zh""yue""en""ar""ru""es""fr""pt""de""tr""nl""uk""vi""id""ja""it""ko""th""pl""ro""el""cs""fi""hi""bg""da""he""ms""fa""sk""sv""hr""fil""hu""no""sl""ca""nn""ta""af"
volumenumberOpcional

Multiplicador de volume de 0,1 a 10; 1 é o nível normal. Não altera o preço.

Valor padrão
1
Restrições
minimum:0.1
maximum:10
pitchintegerOpcional

Deslocamento de tom em semitons, de -12 a 12; 0 mantém o tom natural da voz. Não altera o preço.

Valor padrão
0
Restrições
minimum:-12
maximum:12
speednumberOpcional

Velocidade da fala de 0,5 (mais lenta) a 2 (mais rápida); 1 é o ritmo normal da voz. Não altera o preço.

Valor padrão
1
Restrições
minimum:0.5
maximum:2
emotionstringOpcional

Uma das sete emoções fixas — neutral, happy, sad, angry, fearful, disgusted ou surprised — aplicada a toda a leitura. Padrão: neutral.

Valor padrão
"neutral"
Valores permitidos
"neutral""happy""sad""angry""fearful""disgusted""surprised"
voice_idstringOpcional

Uma das 472 vozes do sistema. Padrão: Calm_Woman. Não há clonagem nem envio de uma voz de referência.

Valor padrão
"Calm_Woman"
Valores permitidos
"Wise_Woman""Friendly_Person""Inspirational_girl""Deep_Voice_Man""Calm_Woman""Casual_Guy""Lively_Girl""Patient_Man""Young_Knight""Determined_Man""Lovely_Girl""Decent_Boy""Imposing_Manner""Elegant_Man""Abbess""Sweet_Girl_2""Exuberant_Girl""English_expressive_narrator""English_radiant_girl""English_magnetic_voiced_man""English_compelling_lady1""English_Aussie_Bloke""English_captivating_female1""English_Upbeat_Woman""English_Trustworth_Man""English_CalmWoman""English_UpsetGirl""English_Gentle-voiced_man""English_Whispering_girl_v3""English_Diligent_Man""English_Graceful_Lady""English_Husky_MetalHead""English_ReservedYoungMan""English_PlayfulGirl""English_ManWithDeepVoice""English_GentleTeacher""English_MaturePartner""English_FriendlyPerson""English_MatureBoss""English_Debator""whisper_man""English_Abbess""English_LovelyGirl""whisper_woman_1""English_Steadymentor""English_Deep-VoicedGentleman""English_DeterminedMan""English_Wiselady""English_CaptivatingStoryteller""English_AttractiveGirl""English_DecentYoungMan""English_SentimentalLady""English_ImposingManner""English_SadTeen""English_ThoughtfulMan""English_PassionateWarrior""English_DecentBoy""English_WiseScholar""English_Soft-spokenGirl""English_SereneWoman""English_ConfidentWoman""English_PatientMan""English_Comedian""English_GorgeousLady""English_BossyLeader""English_LovelyLady""English_Strong-WilledBoy""English_Deep-tonedMan""English_StressedLady""English_AssertiveQueen""English_AnimeCharacter""English_Jovialman""English_WhimsicalGirl""English_CharmingQueen""English_Kind-heartedGirl""English_FriendlyNeighbor""English_Sweet_Female_4""English_Magnetic_Male_2""English_Lively_Male_11""English_Friendly_Female_3""English_Steady_Female_1""English_Lively_Male_10""English_Magnetic_Male_12""English_Steady_Female_5""English_Insightful_Speaker""English_patient_man_v1""English_Persuasive_Man""English_Explanatory_Man""English_intellect_female_1""English_energetic_male_1""English_witty_female_1""English_Lucky_Robot""English_Cute_Girl""English_Sharp_Commentator""English_Honest_Man""angry_pirate_1""massive_kind_troll""movie_trailer_deep""peace_and_ease""moss_audio_6dc281eb-713c-11f0-a447-9613c873494c""moss_audio_c12a59b9-7115-11f0-a447-9613c873494c""moss_audio_076697ad-7144-11f0-a447-9613c873494c""moss_audio_737a299c-734a-11f0-918f-4e0486034804""moss_audio_19dbb103-7350-11f0-ad20-f2bc95e89150""moss_audio_7c7e7ae2-7356-11f0-9540-7ef9b4b62566""moss_audio_570551b1-735c-11f0-b236-0adeeecad052""moss_audio_ad5baf92-735f-11f0-8263-fe5a2fe98ec8""moss_audio_cedfd4d2-736d-11f0-99be-fe40dd2a5fe8""moss_audio_a0d611da-737c-11f0-ad20-f2bc95e89150""moss_audio_4f4172f4-737b-11f0-9540-7ef9b4b62566""moss_audio_62ca20b0-7380-11f0-99be-fe40dd2a5fe8""conversational_female_1_v1""conversational_female_2_v1""socialmedia_female_1_v1""BritishChild_male_1_v1""BritishChild_female_1_v1""Chinese (Mandarin)_Reliable_Executive""Chinese (Mandarin)_News_Anchor""Chinese (Mandarin)_Unrestrained_Young_Man""Chinese (Mandarin)_Mature_Woman""Arrogant_Miss""Chinese (Mandarin)_Kind-hearted_Antie""Robot_Armor""hunyin_6""Chinese (Mandarin)_HK_Flight_Attendant""Chinese (Mandarin)_Humorous_Elder""Chinese (Mandarin)_Gentleman""Chinese (Mandarin)_Warm_Bestie""Chinese (Mandarin)_Stubborn_Friend""Chinese (Mandarin)_Sweet_Lady""Chinese (Mandarin)_Southern_Young_Man""Chinese (Mandarin)_Wise_Women""Chinese (Mandarin)_Gentle_Youth""Chinese (Mandarin)_Warm_Girl""Chinese (Mandarin)_Male_Announcer""Chinese (Mandarin)_Kind-hearted_Elder""Chinese (Mandarin)_Cute_Spirit""Chinese (Mandarin)_Radio_Host""Chinese (Mandarin)_Lyrical_Voice""Chinese (Mandarin)_Straightforward_Boy""Chinese (Mandarin)_Sincere_Adult""Chinese (Mandarin)_Gentle_Senior""Chinese (Mandarin)_Crisp_Girl""Chinese (Mandarin)_Pure-hearted_Boy""Chinese (Mandarin)_Soft_Girl""Chinese (Mandarin)_IntellectualGirl""Chinese (Mandarin)_Warm_HeartedGirl""Chinese (Mandarin)_Laid_BackGirl""Chinese (Mandarin)_ExplorativeGirl""Chinese (Mandarin)_Warm-HeartedAunt""Chinese (Mandarin)_BashfulGirl""Arabic_CalmWoman""Arabic_FriendlyGuy""Cantonese_ProfessionalHost(F)""Cantonese_GentleLady""Cantonese_ProfessionalHost(M)""Cantonese_PlayfulMan""Cantonese_CuteGirl""Cantonese_KindWoman""Cantonese_Narrator""Cantonese_WiselProfessor""Cantonese_IndifferentStaff""Dutch_kindhearted_girl""Dutch_bossy_leader""French_Male_Speech_New""French_Female_News Anchor""French_CasualMan""French_MovieLeadFemale""French_FemaleAnchor""French_MaleNarrator""French_Female Journalist""French_Female_Speech_New""German_FriendlyMan""German_SweetLady""German_PlayfulMan""Indonesian_SweetGirl""Indonesian_ReservedYoungMan""Indonesian_CharmingGirl""Indonesian_CalmWoman""Indonesian_ConfidentWoman""Indonesian_CaringMan""Indonesian_BossyLeader""Indonesian_DeterminedBoy""Indonesian_GentleGirl""Italian_BraveHeroine""Italian_Narrator""Italian_WanderingSorcerer""Italian_DiligentLeader""Italian_ReliableMan""Italian_AthleticStudent""Italian_ArrogantPrincess""Japanese_Whisper_Belle""Japanese_IntellectualSenior""Japanese_DecisivePrincess""Japanese_LoyalKnight""Japanese_DominantMan""Japanese_SeriousCommander""Japanese_ColdQueen""Japanese_DependableWoman""Japanese_GentleButler""Japanese_KindLady""Japanese_CalmLady""Japanese_OptimisticYouth""Japanese_GenerousIzakayaOwner""Japanese_SportyStudent""Japanese_InnocentBoy""Japanese_GracefulMaiden""Korean_PowerfulGirl""Korean_BossyMan""Korean_SweetGirl""Korean_CheerfulBoyfriend""Korean_EnchantingSister""Korean_ShyGirl""Korean_ReliableSister""Korean_StrictBoss""Korean_SassyGirl""Korean_ChildhoodFriendGirl""Korean_PlayboyCharmer""Korean_ElegantPrincess""Korean_BraveFemaleWarrior""Korean_BraveYouth""Korean_CalmLady""Korean_EnthusiasticTeen""Korean_SoothingLady""Korean_IntellectualSenior""Korean_LonelyWarrior""Korean_MatureLady""Korean_InnocentBoy""Korean_CharmingSister""Korean_AthleticStudent""Korean_BraveAdventurer""Korean_CalmGentleman""Korean_WiseElf""Korean_CheerfulCoolJunior""Korean_DecisiveQueen""Korean_ColdYoungMan""Korean_MysteriousGirl""Korean_QuirkyGirl""Korean_ConsiderateSenior""Korean_CheerfulLittleSister""Korean_DominantMan""Korean_AirheadedGirl""Korean_ReliableYouth""Korean_FriendlyBigSister""Korean_GentleBoss""Korean_ColdGirl""Korean_HaughtyLady""Korean_CharmingElderSister""Korean_IntellectualMan""Korean_CaringWoman""Korean_WiseTeacher""Korean_ConfidentBoss""Korean_AthleticGirl""Korean_PossessiveMan""Korean_GentleWoman""Korean_CockyGuy""Korean_ThoughtfulWoman""Korean_OptimisticYouth""Portuguese_AnxiousMan""Portuguese_Matureresearcher""Portuguese_Optimisticyouth""Portuguese_CuteElf""Portuguese_EnergeticGirl""Portuguese_FunnyGuy""Portuguese_Nuttylady""Portuguese_Deep-tonedMan""Portuguese_SentimentalLady""Portuguese_BossyLeader""Portuguese_Wiselady""Portuguese_Strong-WilledBoy""Portuguese_Deep-VoicedGentleman""Portuguese_UpsetGirl""Portuguese_PassionateWarrior""Portuguese_AnimeCharacter""Portuguese_ConfidentWoman""Portuguese_AngryMan""Portuguese_CaptivatingStoryteller""Portuguese_Godfather""Portuguese_ReservedYoungMan""Portuguese_SmartYoungGirl""Portuguese_Kind-heartedGirl""Portuguese_Pompouslady""Portuguese_Grinch""Portuguese_Debator""Portuguese_SweetGirl""Portuguese_AttractiveGirl""Portuguese_ThoughtfulMan""Portuguese_PlayfulGirl""Portuguese_GorgeousLady""Portuguese_LovelyLady""Portuguese_SereneWoman""Portuguese_SadTeen""Portuguese_MaturePartner""Portuguese_Comedian""Portuguese_NaughtySchoolgirl""Portuguese_Narrator""Portuguese_ToughBoss""Portuguese_Fussyhostess""Portuguese_Dramatist""Portuguese_Steadymentor""Portuguese_Jovialman""Portuguese_CharmingQueen""Portuguese_SantaClaus""Portuguese_Rudolph""Portuguese_Arnold""Portuguese_CharmingSanta""Portuguese_Ghost""Portuguese_HumorousElder""Portuguese_CalmLeader""Portuguese_GentleTeacher""Portuguese_EnergeticBoy""Portuguese_ReliableMan""Portuguese_SereneElder""Portuguese_GrimReaper""Portuguese_AssertiveQueen""Portuguese_WhimsicalGirl""Portuguese_StressedLady""Portuguese_FriendlyNeighbor""Portuguese_CaringGirlfriend""Portuguese_PowerfulSoldier""Portuguese_FascinatingBoy""Portuguese_RomanticHusband""Portuguese_StrictBoss""Portuguese_InspiringLady""Portuguese_PlayfulSpirit""Portuguese_ElegantGirl""Portuguese_CompellingGirl""Portuguese_PowerfulVeteran""Portuguese_SensibleManager""Portuguese_ThoughtfulLady""Portuguese_TheatricalActor""Portuguese_FragileBoy""Portuguese_ChattyGirl""Portuguese_Conscientiousinstructor""Portuguese_RationalMan""Portuguese_WiseScholar""Portuguese_FrankLady""Portuguese_DeterminedManager""Portuguese_CharmingLady""Russian_HandsomeChildhoodFriend""Russian_BrightHeroine""Russian_AmbitiousWoman""Russian_ReliableMan""Russian_CrazyQueen""Russian_PessimisticGirl""Russian_AttractiveGuy""Russian_Bad-temperedBoy""Spanish_FriendlyNeighbor""Spanish_FragileBoy""Spanish_UpsetGirl""Spanish_Soft-spokenGirl""Spanish_CharmingQueen""Spanish_Nuttylady""Spanish_ElegantGirl""Spanish_FascinatingBoy""Spanish_FunnyGuy""Spanish_PlayfulSpirit""Spanish_TheatricalActor""Spanish_SereneWoman""Spanish_MaturePartner""Spanish_CaptivatingStoryteller""Spanish_Narrator""Spanish_WiseScholar""Spanish_Kind-heartedGirl""Spanish_DeterminedManager""Spanish_BossyLeader""Spanish_ReservedYoungMan""Spanish_ConfidentWoman""Spanish_ThoughtfulMan""Spanish_Strong-WilledBoy""Spanish_SophisticatedLady""Spanish_RationalMan""Spanish_AnimeCharacter""Spanish_Deep-tonedMan""Spanish_Fussyhostess""Spanish_SincereTeen""Spanish_FrankLady""Spanish_Comedian""Spanish_Debator""Spanish_ToughBoss""Spanish_Wiselady""Spanish_Steadymentor""Spanish_Jovialman""Spanish_SantaClaus""Spanish_Rudolph""Spanish_Intonategirl""Spanish_Arnold""Spanish_Ghost""Spanish_HumorousElder""Spanish_EnergeticBoy""Spanish_WhimsicalGirl""Spanish_StrictBoss""Spanish_ReliableMan""Spanish_SereneElder""Spanish_AngryMan""Spanish_AssertiveQueen""Spanish_CaringGirlfriend""Spanish_PowerfulSoldier""Spanish_PassionateWarrior""Spanish_ChattyGirl""Spanish_RomanticHusband""Spanish_CompellingGirl""Spanish_PowerfulVeteran""Spanish_SensibleManager""Spanish_ThoughtfulLady""Turkish_CalmWoman""Turkish_Trustworthyman""Ukrainian_CalmWoman""Ukrainian_WiseScholar""Vietnamese_Serene_Man""Vietnamese_female_4_v1""Vietnamese_male_1_v2""Vietnamese_kindhearted_girl""Thai_Optimistic_girl""Thai_male_1_sample8""Thai_Tender_Woman""Thai_male_2_sample2""Thai_female_1_sample1""Thai_female_2_sample2""Polish_male_1_sample4""Polish_male_2_sample3""Polish_female_1_sample1""Polish_female_2_sample3""Romanian_male_1_sample2""Romanian_male_2_sample1""Romanian_female_1_sample4""Romanian_female_2_sample1""Greek_female_1_sample1""greek_male_1a_v1""Greek_female_2_sample3""czech_male_1_v1""czech_female_5_v7""czech_female_2_v2""finnish_male_3_v1""finnish_female_4_v1""finnish_male_1_v2""hindi_male_1_v2""hindi_female_2_v1""hindi_female_1_v2""Bulgarian_male_2_v1""Bulgarian_female_1_v1""Danish_male_1_v1""Danish_female_1_v1""Hebrew_male_1_v1""Hebrew_female_1_v1""Malay_male_1_v1""Malay_female_1_v1""Malay_female_2_v1""Persian_male_1_v1""Persian_female_1_v1""Slovak_male_1_v1""Slovak_female_1_v1""Swedish_male_1_v1""Swedish_female_1_v1""Croatian_male_1_v1""Croatian_female_1_v1""Filipino_male_1_v1""Filipino_female_1_v1""Hungarian_male_1_v1""Hungarian_female_1_v1""Norwegian_male_1_v1""Norwegian_female_1_v1""Slovenian_male_1_v1""Slovenian_female_1_v2""Catalan_male_1_v1""Catalan_female_1_v1""Nynorsk_male_1_v1""Nynorsk_female_1_v1""Tamil_male_1_v1""Tamil_female_1_v1""Afrikaans_male_1_v1""Afrikaans_female_1_v1"

Acompanhar tarefa

HTTP 202 quer dizer que a tarefa foi aceita, não que terminou. Guarde o taskId devolvido e consulte essa tarefa. Não crie outra enquanto espera o resultado.

Requisição aceita
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/recordInfo?taskId=job_01k3m8x9q2z4v7n5p6r8s0t1w3

{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_create",
  "data": {
    "taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "state": "queued",
    "estimatedCost": "0.750000"
  }
}

A resposta de aceitação já traz a estimativa, para que o seu aplicativo mostre o mesmo valor no histórico de tarefas e na cobrança.

Consultar a tarefa
curl --get "https://api.spicyapi.ai/api/v1/jobs/recordInfo" \
  --data-urlencode "taskId=$TASK_ID" \
  -H "Authorization: Bearer $SPICY_API_KEY"

Comece consultando a cada 2 segundos, mais ou menos, e vá espaçando. Pare em um estado final. Se a conexão cair, consulte o taskId original. Só recrie a tarefa com a chave de idempotência e o corpo originais.

Ou receba o resultado por callback
import { verifyWebhook } from "@spicyapi/sdk";

// express.raw keeps the bytes we signed; express.json never matches.
app.post("/hooks/spicy", express.raw({ type: "application/json" }), (req, res) => {
  const { payload } = verifyWebhook({
    rawBody: req.body,
    timestamp: req.header("X-Webhook-Timestamp"),
    signature: req.header("X-Webhook-Signature"),
    payloadVersion: Number(req.header("X-Webhook-Payload-Version")),
    secret: process.env.SPICY_WEBHOOK_SECRET,
  });
  res.status(200).end();
  void handleFinishedTask(payload);
});

Passe callBackUrl ao criar a tarefa e o registro concluído chega até você via POST — sem nenhum laço de polling. Toda entrega traz X-Webhook-Timestamp, X-Webhook-Signature e X-Webhook-Payload-Version. A assinatura é um HMAC-SHA256 em base64 sobre taskId.timestamp.sha256(body), então confira contra os bytes brutos: se você analisar o JSON e serializar de novo, os bytes mudam e a verificação falha. Entregas com erro são repetidas, ou seja, o mesmo taskId pode chegar duas vezes — deixe seu handler idempotente. Responda 2xx primeiro e faça o trabalho depois; um handler lento conta como entrega falha.

Ler resultado

Só consuma output quando state for succeeded. Em caso de falha, use errorCode, errorMessage e request_id para investigar. Os custos e estados de exemplo não representam uma cobrança real.

Exemplo de resposta concluída
{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_record",
  "data": {
    "taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "minimax/speech-2.8-turbo/text-to-speech",
    "state": "succeeded",
    "output": {
      "assets": [
        {
          "key": "tasks/2026/08/28/job_01k3m8x9q2z4v7n5p6r8s0t1w3/3f7a1c9e5b2d48f0a6c1e3d5b7f9a1c3.mp3",
          "mime": "audio/mpeg",
          "url": "https://example.r2.cloudflarestorage.com/results/job_01k3m8x9q2z4v7n5p6r8s0t1w3/result.mp3?X-Amz-Signature=SIGNATURE_FROM_RESPONSE",
          "expiresAt": "2026-08-28T12:20:08.000Z"
        }
      ]
    },
    "cost": "0.750000",
    "settled": true,
    "createdAt": "2026-08-28T12:00:00Z",
    "completedAt": "2026-08-28T12:00:30Z"
  }
}

Para cada arquivo disponível, abra ou baixe assets[].url direto, sem o cabeçalho Authorization da API. O link assinado expira em expiresAt: consulte a tarefa de novo para renovar enquanto o arquivo estiver dentro do prazo de retenção. Arquivo pendente ou indisponível não tem URL. Trate os links assinados como dado privado.

SDKs e integrações

Use a SpicyAPI no seu app, terminal, assistente de IA ou fluxo visual. Escolha um guia de configuração.

Use no ComfyUI

Instale os nós da SpicyAPI pelo ComfyUI Manager ou com o comando abaixo e procure por MiniMax Speech 2.8 Turbo · Text to Speech no canvas. O nó tem as mesmas opções desta página e mostra o preço antes da execução.

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi