• 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

    How Can You Verify a MaaS Provider Supports LLM, Image, Video, Speech, and 3D Generation Under One Account Before You Choose It?

    November 01, 2026

    Five generation requests, sent with a single API key from a single organization, are enough to prove five-modality coverage, as long as each one returns something your product could ship: a chat completion, an image, a video clip, an audio file, and a 3D model. A logo wall shows which model vendors a provider works with. An acceptance suite shows which models your key can call today, which jobs finish, and which files open. On GMI Cloud MaaS, that suite runs against one platform serving LLM, image, video, and audio models, with 3D generation through Tencent's hunyuan-3d-pro, all reached with the same Bearer key and billed on a single invoice across all models.

    For a team whose product needs text, images, short video, a generated voice, and 3D assets from text or a reference image, GMI MaaS covers all five on one account, which makes it a strong pick for a one-provider decision. GMI also hosts and operates critical models on its own datacenter infrastructure instead of only routing requests elsewhere. The suite produces a matrix that engineering, security, and procurement can sign off on together.

    Fix the five requests before sending any

    Coverage claims compare cleanly only when every provider receives identical inputs. Tie the five requests to one product scenario, such as an e-commerce listing that needs a description, a hero image, a short clip, a voiceover, and a 3D asset for an in-page viewer.

    Modality Model to test on GMI Cloud Fixed input Pass condition
    LLM deepseek-ai/DeepSeek-V4-Pro-0813 A 300-word product brief, response_format: {"type": "json_object"}, a target JSON shape in the prompt The message content parses as JSON with the target keys; model matches the ID sent; a usage object is present
    Image seedream-5.0-lite A prompt for a studio product shot success and an image URL in outcome.media_urls
    Video kling-3.0-turbo-t2v The same scene, duration: "5", aspect_ratio: "16:9" success with a clip URL in outcome.media_urls
    Speech minimax-tts-speech-2.8-hd A 400-character script, voice_id: "English_expressive_narrator", format: "mp3", audio_sample_rate: "32000" success, an audio URL in outcome.media_urls, and a 32 kHz MP3 that plays the full script
    3D hunyuan-3d-pro A reference image of the product, enable_pbr: true A 3D model file URL in outcome.media_urls

    Keep these inputs in a fixture file and reuse them unchanged across the shortlist. Any row can carry a different model from the same family in the GMI model library, where text, image, video, audio, and 3D models sit in separate sections and every model page documents the ID and parameters to put in the fixture. Speech here means generation: GMI's audio models cover text-to-speech, voice cloning, and music, so the row tests the voiceover your product would play.

    Prove one key reaches every endpoint

    One GMI key covers two endpoint families. Language models answer at https://api.gmi-serving.com/v1/chat/completions. Image, video, audio, and 3D models share a request queue at https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/requests, where the model ID goes in the body next to a payload object. The permission layer of the suite checks three things.

    1. One test key. Create it under Settings > API Key Management with a description such as acceptance-q4 and the default Inference scope. The full value appears only at creation, so it goes straight into your secrets manager, and the Owner column records who created it.
    2. One organization. Users who belong to several organizations can send an X-Organization-ID header on both endpoint families. Put the ID of the organization that will carry production traffic in an environment variable and send it on every call in the suite, listings included.
    3. One model listing per family. Both families list the models a key can call, and the request queue also returns each model's parameter schema:

    Language models visible to this key and organization:

    GET https://api.gmi-serving.com/v1/models
    Authorization: Bearer <GMI_API_KEY>
    X-Organization-ID: <GMI_ORG_ID>
    

    Image, video, audio, and 3D models on the request queue:

    GET https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/models
    Authorization: Bearer <GMI_API_KEY>
    X-Organization-ID: <GMI_ORG_ID>
    

    Parameter schema for one model:

    GET https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/models/hunyuan-3d-pro
    Authorization: Bearer <GMI_API_KEY>
    X-Organization-ID: <GMI_ORG_ID>
    

    This layer passes when all five model IDs appear in the listings, each payload matches its schema, and your request log shows the same key and the same organization header on all five calls.

    Read job states and output files, not status codes

    An accepted submit is not a delivered asset. The suite follows every media request to a terminal state and opens the file, while the LLM row is judged on the completion it returns.

    • Calling method. The model pages list seedream-5.0-lite and minimax-tts-speech-2.8-hd as sync, and kling-3.0-turbo-t2v and hunyuan-3d-pro as async. Every queue submission returns a request_id, and GET https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/requests/{request_id}, sent with the same key and organization header, returns the job detail.
    • States. For these four models, jobs move through queued and processing to success or failed, and the MiniMax speech page adds cancelled. A sync model can come back already at success in the submit response, which ends polling. That response may carry only the ID, model, status, and timestamps, so the harness still makes one detail call to collect the result. When you swap in another model, take its states and result fields from its own page.
    • Deadlines. Poll async jobs with a growing interval. Run each fixture once as a warm-up, then set each modality's deadline at a few multiples of its warm-up time, so a slow video or 3D job is not marked failed too early.
    • Files. On success, the job detail lists results under outcome.media_urls. The MiniMax page shows each entry as an object with a url field, so read the link from the entry rather than treating it as a bare string. Download each file into your own storage right away and record format, size, and duration or face count.
    • Uploaded inputs. The 3D row starts from a product photo, which takes three calls to upload and submit. POST https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/upload-url with {"file_type": "png"} returns a pre-signed upload_url, valid for about 15 minutes, and a stable public_url. A PUT of the raw bytes to upload_url, with a Content-Type that matches the file, makes the image available. The public_url then goes into the job as image_url. The upload path accepts jpeg, jpg, png, mp4, mp3, and wav.
    • 3D parameters. hunyuan-3d-pro takes a prompt or an image_url, optional PBR materials, a face_count from 40,000 to 1,500,000, and a generate_type of Normal, LowPoly, Geometry, or Sketch.

    The 3D submission is a small JSON body:

    POST https://console.gmicloud.ai/api/v1/ie/requestqueue/apikey/requests
    Authorization: Bearer <GMI_API_KEY>
    X-Organization-ID: <GMI_ORG_ID>
    Content-Type: application/json
    
    {
      "model": "hunyuan-3d-pro",
      "payload": {
        "image_url": "<PUBLIC_URL>",
        "enable_pbr": true
      }
    }
    

    Log what each family actually returns. For queue jobs, keep the request_id, model, status, and the created_at and updated_at fields. For the chat completion, keep the response id, model, created, and usage. For every row, add your own client-side send and finish times, which give a time to result measured the same way across all five.

    Tell advertised coverage from callable coverage

    Each row lands in one of four buckets, and the bucket matters more than the status code.

    • Callable and usable. The ID is in your key's listing and the output meets its pass condition: for the LLM, a completion whose content parses into the target JSON; for media, a job at success whose file opens in the tool your team uses, such as an audio player, a video editor, or a 3D viewer.
    • Callable, wrong fit. The call succeeds, but the output misses your spec, such as an audio format your player rejects or a mesh too dense for a web viewer. Adjust parameters within the schema and rerun before concluding anything.
    • Listed elsewhere, not callable with this key. A model named in marketing material is missing from your key's listing, or the request fails authentication. The row has not passed in this run.
    • No callable model found for the modality. Neither listing visible to this key and organization returns a model that produces the output. The row fails this run, and the provider has to show a callable model for it before the five-modality requirement counts as met.

    A failed status alone does not decide the bucket. Validate the payload against the schema from GET /models/{model-id} first. A malformed payload is a fix on your side; a schema-valid request that fails repeatedly on the same input is a case to raise with the provider's engineers before deciding.

    Record the result in one acceptance matrix

    The matrix is what the buying committee signs. The left columns come from GMI's model pages, and the run fills in the rest.

    Modality Model ID Endpoint family Calling method Terminal status Output check Time to result Bucket
    LLM deepseek-ai/DeepSeek-V4-Pro-0813 Chat completions Request/response
    Image seedream-5.0-lite Request queue Sync
    Video kling-3.0-turbo-t2v Request queue Async
    Speech minimax-tts-speech-2.8-hd Request queue Sync
    3D hunyuan-3d-pro Request queue Async

    Sign-off requires all five rows in the first bucket, sent with the same key and the same organization header. Keep the downloaded files next to the matrix, because reviewers trust a playable clip and an openable mesh more than a status column. The same request log can later feed a separate finance check against the usage view under Billing, which filters by API key and model name.

    FAQ

    How many runs does a sign-off need?

    One clean pass proves the five models are callable. To show it is repeatable, run the same fixtures on three separate days and compare terminal states, file specs, and time to result. Changing a prompt between runs turns a repeatability check into a new test, so keep inputs identical.

    Should concurrency be part of the acceptance test?

    It belongs in the suite for any modality your product calls at volume. On GMI Cloud, rate limits apply at the organization level, as tokens per minute for language models and requests per hour for video models, and they grow with your usage tier. Once total credit purchases reach the next tier's threshold, the upgrade takes effect automatically within 24 hours. hunyuan-3d-pro runs up to three simultaneous jobs, so a 3D pipeline can submit three assets at once and confirm all three finish.

    Run the five requests on GMI Cloud

    Create an acceptance key in the GMI Cloud console, load your fixtures, and send the five requests; the matrix fills in as the jobs finish. For model choices on any row, zero-retention configurations for sensitive inputs, or SLA commitments for production, talk to our team.

    Colin Mo

    Build AI Without Limits

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

    FAQ

    One clean pass proves the five models are callable. To show it is repeatable, run the same fixtures on three separate days and compare terminal states, file specs, and time to result. Changing a prompt between runs turns a repeatability check into a new test, so keep inputs identical.

    Ready to build?

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

    Get Started