• Compute
  • Customers
  • Pricing
Sign In
More Blog Posts
XDiscordLinkedInYouTube

Products

  • GPUs
  • Inference
  • Studio

Developers

  • Model library
  • Documentation
  • Glossary

Company

  • About Us
  • Blog
  • Events
  • Partnership
  • Scale
  • Career
  • Ambassador program
  • Mission & Vision

Popular models

    Stay in the loop

    By submitting, you acknowledge that we may collect and use the information you provide, which may include personal information.

    XDiscordLinkedInYouTube

    Copyright ©2026 All rights reserved.

    Privacy PolicyTerms of UseLegal Documentation
    More Blog Posts
    Other

    Which Provider Offers Qwen3.8 Max 0902 APIs Alongside Image and Speech Generation on One Account?

    October 22, 2026

    Chat completions for Qwen3.8 Max 0902 and a request queue for the image and speech models are the two calling patterns, and both run under the same account and API key on GMI Cloud Model-as-a-Service (MaaS). Qwen3.8 Max 0902 takes OpenAI-compatible chat requests; for the media models, you submit a job, get a request ID, and poll for the result. The public model library has cards for Qwen3.8 Max 0902, image models such as Seedream 5.0 Pro and Qwen-Image-2512, and speech models such as MiniMax TTS Speech 2.8 HD and Turbo. Every request carries the same Authorization: Bearer header, and a single invoice covers all models, per the MaaS page.

    What one GMI account gives you

    Layer Example model on GMI How you call it What comes back
    Main LLM Qwen3.8 Max 0902 POST /v1/chat/completions on the inference API Text, streamed or complete
    Image generation seedream-5.0-pro Request queue: submit, then poll Image URLs in outcome.media_urls
    Speech generation minimax-tts-speech-2.8-hd, minimax-tts-speech-2.8-turbo Request queue: submit, then poll Audio URL in outcome.media_urls

    All three rows sit under one organization, with one API key and one billing page. On the LLM side, one endpoint serves 200+ models, and you keep your code and change the model ID. The media side follows the per-model pages in the image and audio model docs.

    Qwen3.8 Max 0902 and the plain Qwen3.8 Max are separate cards in the model library, so the dated ID matters. GMI's billing list uses Qwen/Qwen3.8-Max-0902 for the dated version.

    Call Qwen3.8 Max 0902 on the LLM endpoint

    The LLM endpoint is https://api.gmi-serving.com/v1/chat/completions. A request is a model field and a messages array, following the standard OpenAI chat completions shape. The same base URL also serves /v1/responses for the OpenAI Responses API, /v1/messages for the Anthropic Messages API, and GET /v1/models to list the models on your key.

    POST https://api.gmi-serving.com/v1/chat/completions
    Authorization: Bearer <GMI_API_KEY>
    Content-Type: application/json
    
    {
      "model": "Qwen/Qwen3.8-Max-0902",
      "messages": [
        {"role": "user", "content": "Write a 40-word product blurb and an image prompt for a ceramic pour-over set."}
      ]
    }

    Because the endpoint is OpenAI-compatible, the OpenAI SDK works by pointing base_url at https://api.gmi-serving.com/v1. Request parameters, including sampling and output options, are covered in the LLM API reference.

    Submit image and speech jobs to the request queue

    Image and speech models share one submit endpoint on the console host: POST https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/requests. The model is named in the request body, and its parameters sit inside payload. A speech job with MiniMax TTS Speech 2.8 HD looks like this:

    POST https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/requests
    Authorization: Bearer <GMI_API_KEY>
    Content-Type: application/json
    
    {
      "model": "minimax-tts-speech-2.8-hd",
      "payload": {
        "text": "Hand-thrown ceramic, built for a slow morning.",
        "voice_id": "English_expressive_narrator",
        "speed": 1,
        "format": "mp3"
      }
    }

    The response carries a request_id. You read the result with GET https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/requests/{request_id} and the same Bearer header, which returns a status of queued, processing, success, failed or cancelled. On success, the file location is in outcome.media_urls. An image job has the same shape:

    POST https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/requests
    Authorization: Bearer <GMI_API_KEY>
    Content-Type: application/json
    
    {
      "model": "seedream-5.0-pro",
      "payload": {
        "prompt": "A ceramic pour-over set on a pale oak table, soft morning light",
        "size": "2K",
        "output_format": "png"
      }
    }

    The Seedream 5.0 Pro page takes a prompt, optional reference images (up to 14), a size of 2K, 3K or an explicit width and height (total pixels between 3.6M and 10.4M, aspect ratio between 1/16 and 16), and an output_format of jpeg or png.

    Build the client around the request ID: submit, store the ID, read the status, and poll until it is terminal, then fetch the URL. That one routine covers the Seedream and MiniMax models above, which share the same submit and status endpoints, so a second image model or a different voice only changes the model string and the payload.

    Picking the image and speech models

    The model library has more than one option on each side:

    • Seedream 5.0 Pro for text-to-image and for edits guided by reference images, with 2K and 3K output presets.
    • Qwen-Image-2512 for high-resolution text-to-image, up to 2512 pixels, from the same Qwen family as your LLM (docs page).
    • MiniMax TTS Speech 2.8 HD and Turbo for narration. GMI's audio models are grouped by a quality-versus-speed focus, so pick the variant that matches the job.

    Run the same ten or twenty prompts from your own product through two candidates per slot and compare outputs side by side. Build each candidate's payload from its own docs page, since the docs note that exact parameters such as size and guidance are documented per model.

    Build the product around the LLM

    With Qwen3.8 Max 0902 as the main model, the LLM decides what to make and the media models make it. A product-page assistant is a good example:

    1. Plan with the LLM. Send the user's input to Qwen3.8 Max 0902 and ask for a caption, an image prompt and a narration script in one JSON object. One chat completions call produces all three. State the exact keys in the prompt, and parse the reply defensively: if a key is missing, retry the LLM call once before you submit anything to the queue, because the media payloads need every field present.
    2. Fan out the media jobs. The image prompt and the narration text do not depend on each other, so submit both queue requests at once and poll them independently.
    3. Assemble. When both reach success, download the image and the audio from outcome.media_urls, copy them into your own storage, and return the finished asset to your user.
    4. Handle failure per job. A failed image should not discard a finished narration. Retry the failed job with the same payload, or fall back to a second image model with a payload built for that model's parameters.

    Keep the LLM call and the media calls in separate functions with separate timeouts. A chat completion is a single request and response, or a stream you can show immediately. Some media models return a finished result on submit; a job that is still running reports queued or processing until it reaches a terminal status, so poll every couple of seconds, lengthen the interval as the wait grows, set a deadline, and show your user progress instead of a blocked page.

    If the LLM output feeds a media payload, validate it before submitting. The narration text should be non-empty, and the image prompt should fit the model's prompt guidance (the Seedream page recommends prompts under 600 words).

    One key, one invoice, usage by model and key

    The key is issued from Settings > API Keys in the console. The key dialog takes a description, such as prod-inference, and a scope that defaults to Inference. Put the key straight into your secrets manager when it is created.

    You can still separate traffic inside one account. Create one key per service or environment, for example one for the web app and one for a batch job, and the Serverless Usage view lets you filter by API key and by model name, daily or hourly, in local time or UTC. That gives you a per-model and per-key view of LLM, image and speech usage without running separate vendor accounts.

    Plan for scale and sensitive data

    • Rate limits are per organization. The rate limit docs define LLM limits in tokens per minute. New organizations start at Tier 1, which lists 1,000,000 TPM for all models, and tiers upgrade automatically within 24 hours once your total credit purchases reach the next tier's threshold. For queued image and speech jobs, set a concurrency cap in your own client and back off on errors.
    • Dedicated capacity is a later step. When you need fixed latency for the LLM, the developers page lists switching to a dedicated endpoint as the scale step. Start on the shared API and move only when traffic justifies it.
    • Sensitive data. The MaaS page lists zero-retention configurations for sensitive workloads, which is the arrangement to set up with GMI when regulated content passes through the pipeline.

    FAQ

    Can the narration use our brand's own voice on the same API key?

    The voice-clone variant of MiniMax Speech 2.8 HD, minimax-audio-voice-clone-speech-2.8-hd, takes a source_audio URL (mp3, m4a or wav) and the text to speak, and it goes to the same request-queue endpoint with the same Bearer header. Set your own voice_id to name the cloned voice: 8 to 256 characters, starting with an English letter, alphanumeric with underscores allowed, and not a duplicate of an existing one. An optional prompt_audio clip under 8 seconds, paired with prompt_text, sets the speaking style. The audio URL arrives in outcome.media_urls, typically within 5 to 15 seconds, and the job's request_id reads back with the same GET as a speech job.

    If we add product videos later, do we need a separate integration?

    Video models such as kling-3.0-turbo-t2v use the same submit endpoint and Bearer header as your image and speech jobs, so the routine you already built carries over. Read the job with GET /api/v1/ie/requestqueue/apikey/requests/{request_id} until the status is success or failed; on success, take the video URLs from outcome.media_urls. Only the model string and the payload change. Video limits are counted in requests per hour at the organization level, separate from the tokens-per-minute limits on the LLM.

    Three first calls: chat, speech, image

    An API key from the GMI Cloud console is all the first three calls need: the chat completion above with Qwen/Qwen3.8-Max-0902, then one speech job and one image job on the request queue, with the file URLs read from outcome.media_urls. After that, the rest of the product is orchestration in your own code. The LLM model list has the IDs for the other language models on the platform if you want a second model for comparison.

    Colin Mo

    Build AI Without Limits

    GMI Cloud helps you architect, deploy, optimize, and scale your AI strategies

    FAQ

    The voice-clone variant of MiniMax Speech 2.8 HD, minimax-audio-voice-clone-speech-2.8-hd, takes a source_audio URL (mp3, m4a or wav) and the text to speak, and it goes to the same request-queue endpoint with the same Bearer header. Set your own voice_id to name the cloned voice: 8 to 256 characters, starting with an English letter, alphanumeric with underscores allowed, and not a duplicate of an existing one. An optional prompt_audio clip under 8 seconds, paired with prompt_text, sets the speaking style. The audio URL arrives in outcome.media_urls, typically within 5 to 15 seconds, and the job's request_id reads back with the same GET as a speech job.

    Ready to build?

    Explore powerful AI models and launch your project in just a few clicks.

    Get Started