Meldport
minimax · Audio

MiniMax Speech 2.8

Audio model · Available upstream

High-quality text-to-speech with expressive, natural voice synthesis

Generation is available through the published Meldport configurations below. Review the exact quote before submitting.

Model ID
minimax-speech-2-8
Released
Jan 29, 2026
Billing unit
Characters

Meldport generation prices

MiniMax Speech 2.8

API configuration ID75753d91-fd49-41de-b5a5-995d8f066a6a

text to audio

Text rateMeldport $0.12/ 1K characters

Final quote depends on text length. Check the exact quote before generating.

Variable billing details
API request and parameters

Use audio:generate on your API key. This configuration runs text to audio and returns audio/mpeg.

This configuration does not require an uploaded image. Choose a different configuration ID to change the workflow or output settings. Send only options listed below.

allowed_optionsJSON
{
  "voice": {
    "enum": [
      "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",
      "English_Diligent_Man",
      "English_Graceful_Lady",
      "English_ReservedYoungMan",
      "English_PlayfulGirl",
      "English_ManWithDeepVoice",
      "English_MaturePartner",
      "English_FriendlyPerson",
      "English_MatureBoss",
      "English_Debator",
      "English_LovelyGirl",
      "English_Steadymentor",
      "English_Deep-VoicedGentleman",
      "English_Wiselady",
      "English_CaptivatingStoryteller",
      "English_DecentYoungMan",
      "English_SentimentalLady",
      "English_ImposingManner",
      "English_SadTeen",
      "English_PassionateWarrior",
      "English_WiseScholar",
      "English_Soft-spokenGirl",
      "English_SereneWoman",
      "English_ConfidentWoman",
      "English_PatientMan",
      "English_Comedian",
      "English_BossyLeader",
      "English_Strong-WilledBoy",
      "English_StressedLady",
      "English_AssertiveQueen",
      "English_AnimeCharacter",
      "English_Jovialman",
      "English_WhimsicalGirl",
      "English_Kind-heartedGirl",
      "Chinese (Mandarin)_Reliable_Executive",
      "Chinese (Mandarin)_News_Anchor",
      "Chinese (Mandarin)_Unrestrained_Young_Man",
      "Chinese (Mandarin)_Mature_Woman",
      "Arrogant_Miss",
      "Robot_Armor",
      "Chinese (Mandarin)_Kind-hearted_Antie",
      "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",
      "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",
      "Cantonese_ProfessionalHost (F)",
      "Cantonese_GentleLady",
      "Cantonese_ProfessionalHost (M)",
      "Cantonese_PlayfulMan",
      "Cantonese_CuteGirl",
      "Cantonese_KindWoman",
      "Korean_AirheadedGirl",
      "Korean_AthleticGirl",
      "Korean_AthleticStudent",
      "Korean_BraveAdventurer",
      "Korean_BraveFemaleWarrior",
      "Korean_BraveYouth",
      "Korean_CalmGentleman",
      "Korean_CalmLady",
      "Korean_CaringWoman",
      "Korean_CharmingElderSister",
      "Korean_CharmingSister",
      "Korean_CheerfulBoyfriend",
      "Korean_CheerfulCoolJunior",
      "Korean_CheerfulLittleSister",
      "Korean_ChildhoodFriendGirl",
      "Korean_CockyGuy",
      "Korean_ColdGirl",
      "Korean_ColdYoungMan",
      "Korean_ConfidentBoss",
      "Korean_ConsiderateSenior",
      "Korean_DecisiveQueen",
      "Korean_DominantMan",
      "Korean_ElegantPrincess",
      "Korean_EnchantingSister",
      "Korean_EnthusiasticTeen",
      "Korean_FriendlyBigSister",
      "Korean_GentleBoss",
      "Korean_GentleWoman",
      "Korean_HaughtyLady",
      "Korean_InnocentBoy",
      "Korean_IntellectualMan",
      "Korean_IntellectualSenior",
      "Korean_LonelyWarrior",
      "Korean_MatureLady",
      "Korean_MysteriousGirl",
      "Korean_OptimisticYouth",
      "Korean_PlayboyCharmer",
      "Korean_PossessiveMan",
      "Korean_QuirkyGirl",
      "Korean_ReliableSister",
      "Korean_ReliableYouth",
      "Korean_SassyGirl",
      "Korean_ShyGirl",
      "Korean_SoothingLady",
      "Korean_StrictBoss",
      "Korean_SweetGirl",
      "Korean_ThoughtfulWoman",
      "Korean_WiseElf",
      "Korean_WiseTeacher",
      "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",
      "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_CharmingLady",
      "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",
      "French_Male_Speech_New",
      "French_Female_News Anchor",
      "French_CasualMan",
      "French_MovieLeadFemale",
      "French_FemaleAnchor",
      "French_MaleNarrator",
      "Indonesian_SweetGirl",
      "Indonesian_ReservedYoungMan",
      "Indonesian_CharmingGirl",
      "Indonesian_CalmWoman",
      "Indonesian_ConfidentWoman",
      "Indonesian_CaringMan",
      "Indonesian_BossyLeader",
      "Indonesian_DeterminedBoy",
      "Indonesian_GentleGirl",
      "German_FriendlyMan",
      "German_SweetLady",
      "German_PlayfulMan",
      "Russian_HandsomeChildhoodFriend",
      "Russian_BrightHeroine",
      "Russian_AmbitiousWoman",
      "Russian_ReliableMan",
      "Russian_CrazyQueen",
      "Russian_PessimisticGirl",
      "Russian_AttractiveGuy",
      "Russian_Bad-temperedBoy",
      "Italian_BraveHeroine",
      "Italian_Narrator",
      "Italian_WanderingSorcerer",
      "Italian_DiligentLeader",
      "Dutch_kindhearted_girl",
      "Dutch_bossy_leader",
      "Vietnamese_kindhearted_girl",
      "Arabic_CalmWoman",
      "Arabic_FriendlyGuy",
      "Turkish_CalmWoman",
      "Turkish_Trustworthyman",
      "Ukrainian_CalmWoman",
      "Ukrainian_WiseScholar",
      "Thai_male_1_sample8",
      "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_male_1a_v1",
      "Greek_female_1_sample1",
      "Greek_female_2_sample3",
      "czech_male_1_v1",
      "czech_female_5_v7",
      "czech_female_2_v2",
      "finnish_male_3_v1",
      "finnish_male_1_v2",
      "finnish_female_4_v1",
      "hindi_male_1_v2",
      "hindi_female_2_v1",
      "hindi_female_1_v2"
    ],
    "type": "string",
    "required": true,
    "maxLength": 100
  }
}

Replace the prompt and set a unique MELDPORT_IDEMPOTENCY_KEY for this operation. The example quotes the request and then creates one paid job. Read the billing rules before accepting variable charges.

generate.mjsJavaScript
const api = "https://api.meldport.com";
const key = process.env.MELDPORT_API_KEY;
const idempotencyKey = process.env.MELDPORT_IDEMPOTENCY_KEY;
if (!key || !idempotencyKey) throw new Error("Set your API key and a unique operation ID first.");

async function post(path, body) {
  const response = await fetch(api + path, {method: "POST",
    headers: {Authorization: `Bearer ${key}`, "Content-Type": "application/json"},
    body: JSON.stringify(body)});
  const result = await response.json();
  if (!response.ok) throw new Error(JSON.stringify(result.error));
  return result;
}

const request = {
  "configuration_id": "75753d91-fd49-41de-b5a5-995d8f066a6a",
  "prompt": "Replace with your prompt or speech script.",
  "options": {
    "voice": "English_expressive_narrator"
  },
  "input_asset_ids": []
};
const {data: quote} = await post("/v1/media/quotes", request);
console.log("Quote:", quote);
const result = await post("/v1/media/jobs", {
  ...request, idempotency_key: idempotencyKey,
  accepted_customer_price_microusd: quote.customer_price_microusd,
  accepted_maximum_reservation_microusd: quote.maximum_reservation_microusd,
  ...(quote.billing_policy_version === "actual-cost-v1"
    ? {billing_policy_version: "actual-cost-v1"} : {}),
});
console.log(result.job);
// Poll GET /v1/media/jobs/<job.id> with the same API key.
// Keep this operation ID for retries. A new ID requests another generation.

Poll the returned job ID. Download only after state is succeeded and billing_state is settled. Polling and download example.

MiniMax Speech 2.8

API configuration IDf9be509a-00ba-4dcb-9ac1-cd6a9827d17e

text to audio

Text rateMeldport $0.072/ 1K characters

Final quote depends on text length. Check the exact quote before generating.

Variable billing details
API request and parameters

Use audio:generate on your API key. This configuration runs text to audio and returns audio/mpeg.

This configuration does not require an uploaded image. Choose a different configuration ID to change the workflow or output settings. Send only options listed below.

allowed_optionsJSON
{
  "voice": {
    "enum": [
      "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",
      "English_Diligent_Man",
      "English_Graceful_Lady",
      "English_ReservedYoungMan",
      "English_PlayfulGirl",
      "English_ManWithDeepVoice",
      "English_MaturePartner",
      "English_FriendlyPerson",
      "English_MatureBoss",
      "English_Debator",
      "English_LovelyGirl",
      "English_Steadymentor",
      "English_Deep-VoicedGentleman",
      "English_Wiselady",
      "English_CaptivatingStoryteller",
      "English_DecentYoungMan",
      "English_SentimentalLady",
      "English_ImposingManner",
      "English_SadTeen",
      "English_PassionateWarrior",
      "English_WiseScholar",
      "English_Soft-spokenGirl",
      "English_SereneWoman",
      "English_ConfidentWoman",
      "English_PatientMan",
      "English_Comedian",
      "English_BossyLeader",
      "English_Strong-WilledBoy",
      "English_StressedLady",
      "English_AssertiveQueen",
      "English_AnimeCharacter",
      "English_Jovialman",
      "English_WhimsicalGirl",
      "English_Kind-heartedGirl",
      "Chinese (Mandarin)_Reliable_Executive",
      "Chinese (Mandarin)_News_Anchor",
      "Chinese (Mandarin)_Unrestrained_Young_Man",
      "Chinese (Mandarin)_Mature_Woman",
      "Arrogant_Miss",
      "Robot_Armor",
      "Chinese (Mandarin)_Kind-hearted_Antie",
      "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",
      "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",
      "Cantonese_ProfessionalHost (F)",
      "Cantonese_GentleLady",
      "Cantonese_ProfessionalHost (M)",
      "Cantonese_PlayfulMan",
      "Cantonese_CuteGirl",
      "Cantonese_KindWoman",
      "Korean_AirheadedGirl",
      "Korean_AthleticGirl",
      "Korean_AthleticStudent",
      "Korean_BraveAdventurer",
      "Korean_BraveFemaleWarrior",
      "Korean_BraveYouth",
      "Korean_CalmGentleman",
      "Korean_CalmLady",
      "Korean_CaringWoman",
      "Korean_CharmingElderSister",
      "Korean_CharmingSister",
      "Korean_CheerfulBoyfriend",
      "Korean_CheerfulCoolJunior",
      "Korean_CheerfulLittleSister",
      "Korean_ChildhoodFriendGirl",
      "Korean_CockyGuy",
      "Korean_ColdGirl",
      "Korean_ColdYoungMan",
      "Korean_ConfidentBoss",
      "Korean_ConsiderateSenior",
      "Korean_DecisiveQueen",
      "Korean_DominantMan",
      "Korean_ElegantPrincess",
      "Korean_EnchantingSister",
      "Korean_EnthusiasticTeen",
      "Korean_FriendlyBigSister",
      "Korean_GentleBoss",
      "Korean_GentleWoman",
      "Korean_HaughtyLady",
      "Korean_InnocentBoy",
      "Korean_IntellectualMan",
      "Korean_IntellectualSenior",
      "Korean_LonelyWarrior",
      "Korean_MatureLady",
      "Korean_MysteriousGirl",
      "Korean_OptimisticYouth",
      "Korean_PlayboyCharmer",
      "Korean_PossessiveMan",
      "Korean_QuirkyGirl",
      "Korean_ReliableSister",
      "Korean_ReliableYouth",
      "Korean_SassyGirl",
      "Korean_ShyGirl",
      "Korean_SoothingLady",
      "Korean_StrictBoss",
      "Korean_SweetGirl",
      "Korean_ThoughtfulWoman",
      "Korean_WiseElf",
      "Korean_WiseTeacher",
      "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",
      "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_CharmingLady",
      "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",
      "French_Male_Speech_New",
      "French_Female_News Anchor",
      "French_CasualMan",
      "French_MovieLeadFemale",
      "French_FemaleAnchor",
      "French_MaleNarrator",
      "Indonesian_SweetGirl",
      "Indonesian_ReservedYoungMan",
      "Indonesian_CharmingGirl",
      "Indonesian_CalmWoman",
      "Indonesian_ConfidentWoman",
      "Indonesian_CaringMan",
      "Indonesian_BossyLeader",
      "Indonesian_DeterminedBoy",
      "Indonesian_GentleGirl",
      "German_FriendlyMan",
      "German_SweetLady",
      "German_PlayfulMan",
      "Russian_HandsomeChildhoodFriend",
      "Russian_BrightHeroine",
      "Russian_AmbitiousWoman",
      "Russian_ReliableMan",
      "Russian_CrazyQueen",
      "Russian_PessimisticGirl",
      "Russian_AttractiveGuy",
      "Russian_Bad-temperedBoy",
      "Italian_BraveHeroine",
      "Italian_Narrator",
      "Italian_WanderingSorcerer",
      "Italian_DiligentLeader",
      "Dutch_kindhearted_girl",
      "Dutch_bossy_leader",
      "Vietnamese_kindhearted_girl",
      "Arabic_CalmWoman",
      "Arabic_FriendlyGuy",
      "Turkish_CalmWoman",
      "Turkish_Trustworthyman",
      "Ukrainian_CalmWoman",
      "Ukrainian_WiseScholar",
      "Thai_male_1_sample8",
      "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_male_1a_v1",
      "Greek_female_1_sample1",
      "Greek_female_2_sample3",
      "czech_male_1_v1",
      "czech_female_5_v7",
      "czech_female_2_v2",
      "finnish_male_3_v1",
      "finnish_male_1_v2",
      "finnish_female_4_v1",
      "hindi_male_1_v2",
      "hindi_female_2_v1",
      "hindi_female_1_v2"
    ],
    "type": "string",
    "required": true,
    "maxLength": 100
  }
}

Replace the prompt and set a unique MELDPORT_IDEMPOTENCY_KEY for this operation. The example quotes the request and then creates one paid job. Read the billing rules before accepting variable charges.

generate.mjsJavaScript
const api = "https://api.meldport.com";
const key = process.env.MELDPORT_API_KEY;
const idempotencyKey = process.env.MELDPORT_IDEMPOTENCY_KEY;
if (!key || !idempotencyKey) throw new Error("Set your API key and a unique operation ID first.");

async function post(path, body) {
  const response = await fetch(api + path, {method: "POST",
    headers: {Authorization: `Bearer ${key}`, "Content-Type": "application/json"},
    body: JSON.stringify(body)});
  const result = await response.json();
  if (!response.ok) throw new Error(JSON.stringify(result.error));
  return result;
}

const request = {
  "configuration_id": "f9be509a-00ba-4dcb-9ac1-cd6a9827d17e",
  "prompt": "Replace with your prompt or speech script.",
  "options": {
    "voice": "English_expressive_narrator"
  },
  "input_asset_ids": []
};
const {data: quote} = await post("/v1/media/quotes", request);
console.log("Quote:", quote);
const result = await post("/v1/media/jobs", {
  ...request, idempotency_key: idempotencyKey,
  accepted_customer_price_microusd: quote.customer_price_microusd,
  accepted_maximum_reservation_microusd: quote.maximum_reservation_microusd,
  ...(quote.billing_policy_version === "actual-cost-v1"
    ? {billing_policy_version: "actual-cost-v1"} : {}),
});
console.log(result.job);
// Poll GET /v1/media/jobs/<job.id> with the same API key.
// Keep this operation ID for retries. A new ID requests another generation.

Poll the returned job ID. Download only after state is succeeded and billing_state is settled. Polling and download example.

About this model

MiniMax Speech 2.8 is an advanced text-to-speech model that turns text into natural, expressive audio in multiple languages. It delivers broadcast-ready speech with rich prosody, emotional control, and a diverse voice library. The model supports up to large input lengths and can be used for voiceovers, narration, accessibility tools, and interactive voice applications.

  • text to audio
  • checkpoint