Browse documentationSubmit request — all models

POST /api/v1/inference/submit

This is the shared submit reference for all models. For a focused guide with complete examples, choose MiniMax H3 Turbo or MiniMax H3. H3 uses duration-based output settings; Wan, image and audio parameters below are model-specific.

API version: v1.2.4

Submit a video or image generation task to the queue. The endpoint detects video vs. image mode based on the model field.

Endpoint

Plain text
POST /api/v1/inference/submit

Authentication

Required. Include your API key in the request header:

Plain text
X-API-Key: your-api-key-here

Request Body

Video Generation Parameters

ParameterTypeRequiredDescription
promptstringYesText description of the video to generate
negative_promptstringNoNegative prompt to avoid unwanted elements (default: ""). Not supported by minimax/h3/* models — the parameter is ignored for them
num_framesintegerNoNumber of frames (max varies by resolution). Overrides duration
frames_per_secondintegerNoFrame rate of output video for Wan models (default: 16, range: 4–60). MiniMax H3 uses fixed 24fps
seedintegerNoRandom seed for reproducibility
modelstringNoModel identifier (e.g., minimax/h3/text-to-video, minimax/h3/image-to-video, minimax/h3/reference-to-video, flux2/dev/text-to-image, flux2/dev/image-edit, wan/v2.2-a14b/text-to-video, wan/v2.2-a14b/text-to-video/turbo)
widthintegerNoVideo width in pixels. Use resolution_tier + aspect_ratio instead
heightintegerNoVideo height in pixels. Use resolution_tier + aspect_ratio instead
resolution_tierstringNoResolution tier. MiniMax H3: "480p", "768p". Wan: "480p", "512p", "720p", "1080p"
aspect_ratiostringNoAspect ratio. MiniMax H3: "16:9", "4:3", "1:1", "3:4", "9:16". Wan: "16:9", "9:16", "1:1"
durationfloatNoVideo duration in seconds. MiniMax H3 supports 4–15 seconds and is billed per output second

Resolution: Use resolution_tier + aspect_ratio (recommended) or explicit width + height.

  • MiniMax H3 768p: 1344×768 (16:9), 1024×768 (4:3), 768×768 (1:1), 768×1024 (3:4), 768×1344 (9:16)
  • MiniMax H3 480p: 832×480 (16:9), 640×480 (4:3), 480×480 (1:1), 480×640 (3:4), 480×832 (9:16)
  • Wan 1080p: 1920×1080 (16:9), 1080×1920 (9:16), 1080×1080 (1:1)
  • Wan 720p: 1280×720 (16:9), 720×1280 (9:16), 720×720 (1:1)
  • Wan 512p: 960×512 (16:9), 512×960 (9:16), 512×512 (1:1)
  • Wan 480p: 854×480 (16:9), 480×854 (9:16), 480×480 (1:1)

Image-to-Video Parameters

ParameterTypeRequiredDescription
image_urlstringConditionalStorage URL of image for I2V generation (from /api/v1/storage/image/upload)
end_image_urlstringNoOptional ending frame for MiniMax H3 image-to-video. Use with model: "minimax/h3/image-to-video"
reference_image_urlsarrayConditionalReference images for minimax/h3/reference-to-video. Storage URLs or public HTTPS URLs
reference_video_urlsarrayNoReference videos for minimax/h3/reference-to-video. Input dimensions need not match output dimensions; frame-rate, combined-duration and upload requirements still apply
reference_audio_urlsarrayNoReference audio for minimax/h3/reference-to-video (voice timbre, music)
use_ref_video_audiobooleanNoAlso feed each reference video's own soundtrack as an audio reference (default false)

Wan Video Models

model defaults to wan/v2.2-a14b/text-to-video when omitted.

Model IDTypeRequired inputs
wan/v2.2-a14b/text-to-videoText-to-Video (standard)prompt
wan/v2.2-a14b/text-to-video/turboText-to-Video (turbo)prompt
wan/v2.2-a14b/image-to-videoImage-to-Video (standard)prompt, image_url
wan/v2.2-a14b/image-to-video/turboImage-to-Video (turbo)prompt, image_url
wan/v2.2-a14b/speech-to-videoSpeech-to-Video (lip-sync)prompt, image_url, audio_url
wan/v2.2-a14b/animateAnimate (motion transfer)prompt, image_url, video_url

Turbo variants ignore num_inference_steps and guidance_scale and use fixed internal defaults. Standard mode caps 1080p at 81 frames; turbo allows 153.

LTX-Video Image-Audio-to-Video

Frame-based, driven by a still image plus an optional audio track.

Model IDTypeRequired inputs
ltx-video/v2.3/image-audio-to-videoImage(+Audio)-to-Videoprompt, image_url (optional audio_url)
ParameterDefaultNotes
image_url—Required
audio_url—Optional soundtrack / drive audio
resolution_tier + aspect_ratio1280×720480p/512p/720p/1080p × 16:9/9:16/1:1
frames_per_second24
duration5Converted to num_frames = duration × fps + 1

Allowed sizes: 854×480, 1280×720, 1920×1080, 480×854, 720×1280, 1080×1920, 480×480, 720×720, 1080×1080.

Max frames by tier: 480p 481, 720p 241, 1080p 121. Frame counts are not subject to the Wan 1+4k alignment.

LTX Pricing (per frame): 480p $0.0008, 512p $0.0009, 720p and above $0.0012.

MiniMax H3 FL2VA Parameters

MiniMax H3 is exposed as text-to-video, image-to-video and reference-to-video:

Model IDTypeRequired inputs
minimax/h3/text-to-videoText-to-Videoprompt
minimax/h3/text-to-video/turboText-to-Video Turboprompt
minimax/h3/image-to-videoImage-to-Videoprompt, image_url
minimax/h3/image-to-video/turboImage-to-Video Turboprompt, image_url
minimax/h3/reference-to-videoReference-to-Videoprompt, and at least one of reference_image_urls / reference_video_urls
minimax/h3/reference-to-video/turboReference-to-Video Turbosame as standard
ParameterDefaultAllowed values
resolution_tier480p480p, 768p
aspect_ratio16:916:9, 4:3, 1:1, 3:4, 9:16
duration54–15 seconds
seedrandominteger
frames_per_secondfixed24fps; not selectable

Reference-to-Video input caps — the current Standard and Turbo limits below apply at both tiers. The image cap is higher when sending images only (no reference video or audio). Check the selected variant in GET /api/v1/pricing/config for current limits: minimax_h3_ref2va_limits or minimax_h3_ref2va_turbo_limits.

minimax/h3/reference-to-video and minimax/h3/reference-to-video/turbo

Limit480p768p
Reference images (with videos/audio)55
Reference images (images only)99
Reference videos33
Reference audios33
Total reference video length15.1s15.1s
Reference image longest edge2048px2048px

Reference video FPS must be 24 or lower; reference audio 10s or shorter each; reference image aspect ratio 4.0 or lower.

Reference input URLs must be accessible to the service. See upload requirements. Address references in the prompt with one-based tags such as <Picture 1>, <Video 1> and <Audio 1> that correspond to the submitted arrays. Audio references alone do not satisfy the required visual input.

Note this is a combined budget: hitting each per-type cap individually does not mean they can all be hit at once.

MiniMax H3 Pricing (10 credits = $1 USD):

Per output second, regardless of duration:

Model480p USD/sec768p USD/sec480p credits/sec768p credits/sec
text-to-video, image-to-video$0.0045$0.0120.0450.12
text-to-video/turbo, image-to-video/turbo$0.006$0.0090.060.09
reference-to-video$0.0045$0.0120.0450.12
reference-to-video/turbo$0.006$0.0090.060.09

Reference-to-Video adds the reference inputs on top of the output:

Plain text
total = duration x base_rate
      + max(0, reference_images - 5) x image_rate  # first 5 images free
      + reference_audios x $0                      # reference audio is free
      + reference_video_seconds x base_rate        # same per-second rate as the output tier
ModelResolutionBase USD/secReference imageReference audioReference video USD/sec
reference-to-video480p$0.0045first 5 free, then $0.0075 eachfree$0.0045
reference-to-video768p$0.012first 5 free, then $0.0075 eachfree$0.012
reference-to-video/turbo480p$0.006first 5 free, then $0.0025 eachfree$0.006
reference-to-video/turbo768p$0.009first 5 free, then $0.0025 eachfree$0.009

Example — reference-to-video, 5s at 768p with 2 reference images and 3 reference audios: 5 x $0.012 + 0 + 0 = 0.6 credits. 5s at 480p with 9 images only: 5 x $0.0045 + 4 x $0.0075 = 0.525 credits.

Live rates are published at GET /api/v1/pricing/config (reference_image_free_count carries the free allowance). Select minimax_h3_ref2va_pricing for Standard or minimax_h3_ref2va_turbo_pricing for Turbo; their reference-image fees differ. For the full current schedule, see pricing.

Custom LoRA Parameters

ParameterTypeRequiredDescription
lora_idstringConditionalID of LoRA model to use for custom styles
lora_scalefloatNoStrength of LoRA effect (0.0-1.0, default: 1.0)
lorasarrayNoArray of LoRA objects for multiple LoRAs (each with path and optional scale)

Standard (Non-Turbo) Mode Quality Parameters

Apply only to standard models (wan/v2.2-a14b/text-to-video, wan/v2.2-a14b/image-to-video). Turbo models (/turbo suffix) ignore these and use fixed internal defaults.

ParameterTypeDefaultRangeDescription
num_inference_stepsinteger404-40Denoising steps. More = better quality, slower
guidance_scalefloat3.51.0-10.0HIGH_NOISE_CFG (1st stage guidance)
guidance_scale_2float5.0 (T2V) / 3.5 (I2V)1.0-10.0LOW_NOISE_CFG (2nd stage guidance)
high_noise_model_shiftfloat5.03.0-12.0HIGH_NOISE_MODEL_SHIFT (flow shift, 1st stage)
low_noise_model_shiftfloat5.03.0-12.0LOW_NOISE_MODEL_SHIFT (flow shift, 2nd stage)
high_noise_end_stepintegersteps/21-stepsStep boundary between 1st and 2nd stage

Safety Checker Parameters

ParameterTypeDefaultDescription
enable_input_safety_checkerbooleantrueScreen prompt and input image for policy violations before generation. Set to false to disable (e.g., trusted enterprise use cases).
enable_output_safety_checkerbooleantrueScan generated video frames for NSFW content after generation. If flagged, the job is rejected and credits are refunded. Set to false to disable.

Note: Both checkers are enabled by default. Disabling is intended for enterprise users with their own content moderation pipelines.

Content Policy Violation Response (400 Bad Request)

If input safety checker detects a violation, the request is rejected immediately, before any processing starts:

JSON
{
  "error": "content_policy_violation",
  "message": "Your prompt contains content that violates our content policy. Please revise your prompt and try again.",
  "reason": "nsfw_prompt"
}

For input image violations:

JSON
{
  "error": "content_policy_violation",
  "message": "The input image contains explicit content that violates our content policy. Please use a different image.",
  "reason": "explicit_content_nudenet"
}

Image Generation Parameters

ParameterTypeRequiredDescription
promptstringYesText description of the image to generate
modelstringYesImage model identifier (see supported models below)
widthintegerNoResolution width (default: 1024)
heightintegerNoResolution height (default: 1024)
num_imagesintegerNoNumber of images to generate, 1–4 (default: 1). FLUX.2-dev and GPT Image 2 ignore this and always generate 1 image.
image_sizestring or objectNoOutput size for image-edit models, instead of width/height. Omit to match the input image. Presets: square_hd (1024×1024), square (512×512), portrait_4_3 (768×1024), portrait_16_9 (768×1280), landscape_4_3 (1024×768), landscape_16_9 (1280×768). Or pass {"width": W, "height": H}.
num_inference_stepsintegerNoDenoising steps. Qwen: 1–40 (default: 28). Z-Turbo: 1–4 (default: 4). Not accepted by FLUX.2-dev or GPT Image 2 — those have fixed internal step counts.
guidance_scalefloatNoGuidance scale, 1.0–20.0 (default: 5.0). Not accepted by FLUX.2-dev, GPT Image 2, or Z-Image Turbo — those have fixed CFG.
seedintegerNoRandom seed for reproducibility
lora_idstringNoLoRA model ID
lora_scalefloatNoLoRA strength multiplier (0.0–1.0, default: 1.0)
image_urlstringNoS3 key for image-to-image or image-edit input
image_urlsarrayNoMultiple input images for image-edit models (qwen-image/v2511/image-edit, flux2/dev/image-edit). The first entry is also used as image_url if that field is omitted.
strengthfloatNoImage-to-image denoising strength, 0.0–1.0 (image-to-image models only)
output_formatstringNoOutput format (default: "png")
enable_input_safety_checkerbooleanNoScreen prompt before generation (default: true)
enable_output_safety_checkerbooleanNoScan output image after generation (default: true)

Supported Image Models:

Model IDType
openai/gpt-image-2/text-to-imageText-to-Image (GPT Image 2)
flux2/dev/text-to-imageText-to-Image (FLUX.2-dev)
flux2/dev/image-editImage Edit (FLUX.2-dev)
qwen-image/v2512/text-to-imageText-to-Image (high quality)
qwen-image/v2512/text-to-image/loraText-to-Image with LoRA
qwen-image/v2511/image-editMulti-image reference editing
z-image/turbo/text-to-imageText-to-Image (fast)
z-image/turbo/text-to-image/loraText-to-Image with LoRA (fast)
z-image/turbo/image-to-imageImage-to-Image (fast)
z-image/turbo/image-to-image/loraImage-to-Image with LoRA (fast)

Allowed Image Resolutions: 512×512, 1024×1024, 1024×768, 768×1024, 1280×768, 768×1280

flux2/dev/text-to-image and flux2/dev/image-edit have their own set — 2048×1536, 1536×2048, 2048×1152, 1152×2048, 2048×2048, 1024×1024.

openai/gpt-image-2/text-to-image has its own set — 1024×1024, 1920×1072 (16:9 1080p), 1072×1920 (9:16 1080p), 2560×1440 (16:9 2K), 1440×2560 (9:16 2K). Note 1080p uses 1072, not 1080: width and height must both be multiples of 16 (1080 ÷ 16 = 67.5). It always returns exactly 1 image (num_images is ignored, as with FLUX.2-dev), and also ignores num_inference_steps, guidance_scale and output_format; the only parameters it accepts are prompt, model, width, height, and seed.

Any other size is rejected with 400 Invalid parameters.

Image Pricing (10 credits = $1 USD):

ModelUSD/imageCredits/imageWith LoRA (USD)With LoRA (Credits)
GPT Image 2 T2I$0.030.3——
FLUX.2-dev T2I$0.0060.06——
FLUX.2-dev Image Edit$0.0120.12——
Z-Image Turbo (T2I / I2I)$0.00250.025$0.0030.03
Qwen Image T2I$0.0150.15$0.0180.18
Qwen Image Edit$0.0030.03——

Flat per-image pricing — all resolutions same price. Price multiplied by num_images for supported multi-image models; FLUX.2-dev is fixed at 1 image per request.

Response

Success (200 OK)

JSON
{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "message": "Task submitted successfully"
}

Error Responses

Insufficient Credits (402 Payment Required)

JSON
{
  "error": "Insufficient credits",
  "detail": "You need $0.05 credits to generate this video"
}

Invalid Request (400 Bad Request)

JSON
{
  "error": "Invalid request",
  "detail": "num_frames must be between 1 and 200"
}

Unauthorized (401 Unauthorized)

JSON
{
  "error": "API key required",
  "message": "X-API-Key header is required"
}

Examples

MiniMax H3 Text-to-Video

cURL
curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax/h3/text-to-video",
    "prompt": "A cinematic wide shot of a fantasy kingdom at sunrise, sweeping camera movement, 4K film look",
    "resolution_tier": "480p",
    "aspect_ratio": "16:9",
    "duration": 5,
    "seed": 42
  }'

MiniMax H3 Image-to-Video

cURL
curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax/h3/image-to-video",
    "prompt": "The character turns toward the camera as wind moves through the scene, cinematic lighting",
    "image_url": "images/img-abc123",
    "resolution_tier": "768p",
    "aspect_ratio": "16:9",
    "duration": 5
  }'

Reference-to-Video (MiniMax H3)

cURL
curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax/h3/reference-to-video",
    "prompt": "Use <Picture 1> and <Picture 2> as sequential keyframes; slow push-in, cinematic 35mm look.",
    "reference_image_urls": [
      "https://your-storage/keyframe-1.webp",
      "https://your-storage/keyframe-2.webp"
    ],
    "resolution_tier": "768p",
    "aspect_ratio": "16:9",
    "duration": 5
  }'

Reference each input explicitly in the prompt with <Picture n>, <Video n> and <Audio n>. References that are uploaded but never named in the prompt are still billed, and the model treats them only as loose hints. Indexes follow upload order; when use_ref_video_audio is on, each reference video's own soundtrack takes an <Audio n> slot before your uploaded audio.

Basic Text-to-Video (Wan)

curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A serene mountain landscape at sunrise",
    "negative_prompt": "blurry, low quality",
    "num_frames": 81,
    "frames_per_second": 16
  }'

Image-to-Video Generation

Python
import requests

# First, upload the image
with open("input.jpg", "rb") as f:
    upload_response = requests.post(
        "https://phosor.ai/api/v1/storage/image/upload",
        headers={"X-API-Key": "your-api-key"},
        files={"image": f}
    )

image_url = upload_response.json()["s3_url"]

# Then submit with image_url
response = requests.post(
    "https://phosor.ai/api/v1/inference/submit",
    headers={
        "X-API-Key": "your-api-key",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "The scene comes alive with movement",
        "image_url": image_url,
        "num_frames": 81,
        "frames_per_second": 16
    }
)

print(response.json())

Using LoRA Models

Python
import requests

response = requests.post(
    "https://phosor.ai/api/v1/inference/submit",
    headers={
        "X-API-Key": "your-api-key",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "A character in anime style walking in a park",
        "lora_id": "abc123-def456-ghi789",
        "lora_scale": 0.8,
        "num_frames": 81,
        "frames_per_second": 16,
        "seed": 42
    }
)

print(response.json())

Custom Video Length

Python
import requests

# Generate a 10-second video (160 frames at 16 fps)
response = requests.post(
    "https://phosor.ai/api/v1/inference/submit",
    headers={
        "X-API-Key": "your-api-key",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "A time-lapse of clouds moving across the sky",
        "num_frames": 160,
        "frames_per_second": 16
    }
)

print(response.json())

Text-to-Image (Z-Image Turbo)

cURL
curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A cat sitting in a sunlit garden",
    "model": "z-image/turbo/text-to-image",
    "width": 1024,
    "height": 1024
  }'

Text-to-Image (Qwen Image 2512)

cURL
curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Professional portrait, studio lighting, shallow depth of field",
    "model": "qwen-image/v2512/text-to-image",
    "width": 1024,
    "height": 768,
    "num_inference_steps": 28
  }'

Image-to-Image

Python
import requests

# Step 1: Upload input image
with open("input.jpg", "rb") as f:
    upload_response = requests.post(
        "https://phosor.ai/api/v1/storage/image/upload",
        headers={"X-API-Key": "your-api-key"},
        files={"image": f}
    )

image_url = upload_response.json()["s3_url"]

# Step 2: Submit image-to-image
response = requests.post(
    "https://phosor.ai/api/v1/inference/submit",
    headers={
        "X-API-Key": "your-api-key",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "Oil painting style",
        "model": "z-image/turbo/image-to-image",
        "image_url": image_url,
        "strength": 0.7
    }
)

print(response.json())

Speech-to-Video (S2V)

curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan/v2.2-a14b/speech-to-video",
    "audio_url": "audio/aud-abc123",
    "image_url": "images/img-def456",
    "resolution_tier": "480p",
    "num_frames": 77
  }'

Animate

curl -X POST https://phosor.ai/api/v1/inference/submit \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan/v2.2-a14b/animate",
    "video_url": "videos/vid-abc123",
    "image_url": "images/img-def456",
    "resolution_tier": "480p",
    "num_frames": 17
  }'

Speech-to-Video (S2V) Parameters

ParameterTypeRequiredDescription
modelstringYeswan/v2.2-a14b/speech-to-video
audio_urlstringYesS3 key for audio input
image_urlstringYesS3 key for reference image
widthintegerNoResolution width
heightintegerNoResolution height
num_framesintegerNoNumber of frames (max 77)
frames_per_secondintegerNoFrame rate (default: 16)
resolution_tierstringNo"480p", "512p", "720p" (no 1080p)
aspect_ratiostringNo"16:9", "9:16", "1:1" (default: "16:9")

S2V Pricing (10 credits = $1 USD, LoRA adds 1.2×):

ResolutionUSD/frameCredits/frameWith LoRA (1.2×) USDWith LoRA Credits
480p$0.00093750.009375$0.0011250.01125
512p$0.00131250.013125$0.0015750.015750
720p$0.0018750.01875$0.002250.0225

Supported resolutions: 480p, 512p, 720p only (no 1080p). Max 77 frames.

Animate Parameters

ParameterTypeRequiredDescription
modelstringYeswan/v2.2-a14b/animate
video_urlstringYesS3 key for motion reference video
image_urlstringYesS3 key for appearance reference image
widthintegerNoResolution width
heightintegerNoResolution height
num_framesintegerNoNumber of frames (max 17)
frames_per_secondintegerNoFrame rate (default: 16)
resolution_tierstringNo"480p", "512p", "720p" (no 1080p)
aspect_ratiostringNo"16:9", "9:16", "1:1" (default: "16:9")

Animate Pricing (10 credits = $1 USD, LoRA adds 1.2×):

ResolutionUSD/frameCredits/frameWith LoRA (1.2×) USDWith LoRA Credits
480p$0.001250.0125$0.00150.015
512p$0.001750.0175$0.00210.021
720p$0.00250.025$0.0030.03

Supported resolutions: 480p, 512p, 720p only (no 1080p). Max 17 frames.

Audio (TTS) Generation

Generate speech audio from text using Qwen3-TTS CustomVoice.

Example

import requests

response = requests.post(
    "https://phosor.ai/api/v1/inference/submit",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "model": "qwen3-tts/text-to-speech/1.7b",
        "text": "Hello, welcome to Phosor AI.",
        "speaker": "Sohee",
        "language": "English"
    }
)
job = response.json()
request_id = job["request_id"]

Audio Parameters

ParameterTypeRequiredDescription
modelstringYes"qwen3-tts/text-to-speech/1.7b"
textstringYesText to synthesize (max 500 characters)
speakerstringNoPreset voice (default: "Sohee")
languagestringNoLanguage tag (default: "Chinese")
seedintegerNoRandom seed for reproducibility (-1 = random)
temperaturefloatNoSampling temperature, 0.0–2.0 (default: 0.9)
top_pfloatNoNucleus sampling, (0.0, 1.0] (default: 1.0)
top_kintegerNoTop-k sampling, 1–200 (default: 50)
repetition_penaltyfloatNoRepetition penalty, 1.0–2.0 (default: 1.05)
max_new_tokensintegerNoMax decoder tokens, 1–4096 (default: 200)

Available speakers (9 voices): Vivian, Serena, Uncle_Fu, Dylan, Eric, Ryan, Aiden, Ono_Anna, Sohee

Available languages (11): Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian, Auto

Language shortcodes also accepted: zh, en, ja, ko, de, fr, ru, pt, es, it

Audio Pricing (10 credits = $1 USD)

MetricUSDCredits
Per character$0.000030.0003
Minimum per request$0.0030.03

Example: 200 chars → max($0.003, 200 × $0.00003) = $0.006 (0.06 credits)

The result URL in /api/v1/inference/result/{request_id} will be an .mp3 audio file.

Video Resolution and Frame Limits

MiniMax H3:

  • duration: 4–15 seconds
  • frames_per_second: fixed at 24fps
  • resolution_tier: 480p or 768p
  • aspect_ratio: 16:9, 4:3, 1:1, 3:4, 9:16

Wan text-to-video and image-to-video use num_frames instead of H3's duration-based controls. The maximum is 161 frames at 480p, 512p and 720p; at 1080p it is 81 frames for Standard or 153 for Turbo. Wan frame rate: 4–60 fps (default: 16).

For the complete H3 dimension table, Wan dimensions and model-specific input limits, see Video Generation Limits.

Image Resolution Limits

All resolutions are supported at the same price:

  • 512×512, 1024×1024, 1024×768, 768×1024, 1280×768, 768×1280