ccapi-ai MiniMax H3 Family Video Generation API
Generate 5–15 second videos through the unified CCAPI task flow. H3 provides text-to-video, image-to-video, and reference-to-video. Reference-to-video accepts image, video, and audio inputs and also covers video-to-video and video editing. H3 Max Turbo provides text-to-video and image-to-video. ## Models | Model | Resolutions | Input | |---|---|---| | `minimax/h3/text-to-video` | 480P / 768P / 2K / 4K | Text | | `minimax/h3/image-to-video` | 480P / 768P / 2K / 4K | Opening image, optional ending image | | `minimax/h3/reference-to-video` | 480P / 768P / 2K / 4K | Up to 9 images, 3 videos, and 3 audio files | | `minimax/h3-max-turbo/text-to-video` | 480P / 768P / 1080P | Text | | `minimax/h3-max-turbo/image-to-video` | 480P / 768P / 1080P | Opening image, optional ending image | ## Billing Billing is based on generated seconds and output resolution. At 768P, a 5-second H3 Max Turbo video costs $0.24 and a 5-second H3 video costs $0.36. The first five reference images are included for H3 reference-to-video; each additional image costs $0.096. Failed tasks are not charged.
POST
/v1/videos
Create Video Task
#
GET
/v1/videos/{task_id}
Get Video Task
#
GET
/v1/videos/{task_id}/content
Download a completed H3 video
#
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/ccapi-ai:ccapi-ai-minimax-h3-family-video-generation-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: CCAPI MiniMax H3 Family Video Generation API
description: CCAPI Model Gateway — OpenAI-compatible unified API
version: 1.0.0
servers:
- url: https://api.ccapi.ai
description: CCAPI API Gateway
tags:
- name: MiniMax H3 Family Video Generation
description: 'Generate 5–15 second videos through the unified CCAPI task flow. H3 provides text-to-video, image-to-video, and reference-to-video. Reference-to-video accepts image, video, and audio inputs and also covers video-to-video and video editing. H3 Max Turbo provides text-to-video and image-to-video.
## Models
| Model | Resolutions | Input |
|---|---|---|
| `minimax/h3/text-to-video` | 480P / 768P / 2K / 4K | Text |
| `minimax/h3/image-to-video` | 480P / 768P / 2K / 4K | Opening image, optional ending image |
| `minimax/h3/reference-to-video` | 480P / 768P / 2K / 4K | Up to 9 images, 3 videos, and 3 audio files |
| `minimax/h3-max-turbo/text-to-video` | 480P / 768P / 1080P | Text |
| `minimax/h3-max-turbo/image-to-video` | 480P / 768P / 1080P | Opening image, optional ending image |
## Billing
Billing is based on generated seconds and output resolution. At 768P, a 5-second H3 Max Turbo video costs $0.24 and a 5-second H3 video costs $0.36. The first five reference images are included for H3 reference-to-video; each additional image costs $0.096. Failed tasks are not charged.'
paths:
/v1/videos:
post:
deprecated: false
description: 'Unified OpenAI-compatible video generation endpoint. Choose the matching oneOf request schema branch (e.g. Gemini Video / Grok Imagine Video / Seedance 2.5 / Seedance 2.0) based on the `model` value.
Scalar may list this operation under multiple video model groups, but they all point to the same real callable route: `POST /v1/videos`. The response returns a `task_id`; poll `GET /v1/videos/{task_id}` for the result.
Requests using Seedance official public assets are subject to enforced limits: New users: 3 requests per day. Paid users: 20 requests per day, 1 RPM, and 1 concurrent task. HTTP 429 responses include `Retry-After`. Repeated upstream real-person, copyright, or content-safety rejections automatically suspend official-asset generation for the account; systemic failures temporarily open a circuit breaker.'
operationId: openai-compatible-video-generation
requestBody:
content:
application/json:
examples:
grok-imagine-video_image-to-video:
summary: Image-to-video
value:
duration: 10
image_url: https://example.com/frame.png
model: grok-imagine-video-1-5-preview
prompt: Make the still frame move naturally, gentle camera pan
resolution: 720p
image-to-video:
summary: Frame-to-video with 2 reference images
value:
aspect_ratio: '16:9'
generation_type: frame
model: veo-3.1-quality
prompt: Smooth transition between the two frames, gentle camera pan
reference_images:
- https://example.com/first-frame.png
- https://example.com/last-frame.png
minimax-h3-family-video-generation_h3-image-to-video:
summary: H3 first-to-last-frame image-to-video
value:
duration: 5
images:
- https://example.com/opening.png
- https://example.com/ending.png
model: minimax/h3/image-to-video
prompt: Move smoothly between the two compositions
resolution: 2K
minimax-h3-family-video-generation_h3-max-text-to-video:
summary: H3 Max Turbo text-to-video
value:
duration: 5
model: minimax/h3-max-turbo/text-to-video
prompt: A luxury watch rotates slowly under a narrow beam of light
ratio: '16:9'
resolution: 768P
minimax-h3-family-video-generation_h3-reference-to-video:
summary: H3 reference-to-video / video-to-video
value:
duration: 5
metadata:
reference_audio_urls:
- https://example.com/music.mp3
reference_image_urls:
- https://example.com/character.png
reference_video_urls:
- https://example.com/motion.mp4
model: minimax/h3/reference-to-video
prompt: Keep the motion from Video 1 and the character from Image 1
resolution: 768P
seedance-2-5-2-0-video-generation_seedance-2.0-fast-video-audio-reference:
summary: Seedance 2.0 Fast with video and audio references
value:
images:
- https://example.com/product.png
metadata:
audios:
- https://example.com/reference.wav
duration: 5
generate_audio: true
image_roles:
- reference_image
ratio: '16:9'
resolution: 720p
videos:
- https://example.com/reference.mp4
watermark: false
model: doubao-seedance-2-0-fast-260128
prompt: Follow the reference video's camera rhythm and the reference audio's beat to create a new nature advertisement
seedance-2-5-2-0-video-generation_seedance-2.5-image-to-video:
summary: Seedance 2.5 image to video
value:
images:
- https://example.com/first-frame.png
metadata:
duration: 5
image_roles:
- first_frame
resolution: 720p
model: seedance-2.5
prompt: The subject turns naturally and looks toward the camera
seedance-2-5-2-0-video-generation_seedance-2.5-text-to-video:
summary: Seedance 2.5 text to video
value:
metadata:
duration: 5
generate_audio: false
ratio: '16:9'
resolution: 720p
watermark: false
model: seedance-2.5
prompt: A panda walks through a misty bamboo forest at sunrise, cinematic camera movement
seedance-2-5-2-0-video-generation_seedance-official-public-asset-to-video:
description: Call GET /v1/video/assets first, then copy the returned uri unchanged into images. Never construct an asset ID.
summary: Generate video from an official public asset (verified)
value:
images:
- asset://asset-20260804202332-gcmkm
metadata:
duration: 4
generate_audio: false
image_roles:
- reference_image
resolution: 720p
watermark: false
model: doubao-seedance-2-0-fast-260128
prompt: The person naturally raises his head and smiles as the camera slowly pushes in; preserve identity
text-to-video:
summary: Text-to-video (veo-3.1-fast)
value:
aspect_ratio: '16:9'
model: veo-3.1-fast
prompt: A cinematic shot of a futuristic city at sunset
resolution: 720p
video-editing:
summary: Video editing with omni-flash
value:
aspect_ratio: '16:9'
duration: '6'
model: omni-flash
prompt: Turn the scene into a snowy winter day
reference_videos:
- https://example.com/input.mp4
schema:
oneOf:
- properties:
aspect_ratio:
default: '16:9'
description: Video aspect ratio; defaults to 16:9
enum:
- '16:9'
- '9:16'
type: string
duration:
description: 'Video duration in seconds (number also accepted). Veo 3.1 models only support 8. omni-flash supports 4/6/8/10, default 8, billed by tier. Alias: `seconds`.'
enum:
- '4'
- '6'
- '8'
- '10'
type: string
generation_type:
description: 'Image-to-video mode: `frame` = frame-to-video, `reference` = reference-to-video. If omitted, inferred from the reference image count (2 = frame, 3 = reference).'
enum:
- frame
- reference
type: string
model:
description: Video model
enum:
- veo-3.1-quality
- veo-3.1-fast
- veo-3.1-lite
- omni-flash
type: string
prompt:
description: Video prompt (required)
type: string
reference_images:
description: Up to 3 reference image URLs (http/https, JPEG/PNG)
items:
format: uri
type: string
maxItems: 3
type: array
reference_videos:
description: Reference / source video URL for editing, at most 1. Only supported by `omni-flash`.
items:
format: uri
type: string
maxItems: 1
type: array
resolution:
description: Video resolution
enum:
- 720p
- 1080p
type: string
required:
- model
- prompt
title: Gemini Video (Veo 3.1 / Omni Flash)
type: object
- description: Grok Imagine image-to-video request body.
properties:
aspect_ratio:
description: Optional; defaults to auto (follows the source image).
enum:
- auto
- '1:1'
- '16:9'
- '9:16'
- '4:3'
- '3:4'
- '3:2'
- '2:3'
type: string
duration:
default: 8
description: Video duration in seconds (1-15). Billed per second.
maximum: 15
minimum: 1
type: integer
image_url:
description: 'Source image URL (exactly 1 image; JPEG/PNG). Aliases also accepted: `image_urls` (array, max 1 item), `images`, `image`.'
format: uri
type: string
model:
default: grok-imagine-video-1-5-preview
description: Video model
enum:
- grok-imagine-video-1-5-preview
type: string
prompt:
description: Optional motion prompt describing how the source image should animate.
type: string
resolution:
default: 480p
description: Video resolution; billing differs by resolution.
enum:
- 480p
- 720p
type: string
required:
- model
- image_url
title: Grok Imagine Video
type: object
- properties:
duration:
default: 5
description: Output duration in seconds
maximum: 15
minimum: 5
type: integer
images:
description: For image-to-video, item 1 is the opening frame and item 2 is the optional ending frame. For reference-to-video, these are reference images.
items:
format: uri
type: string
maxItems: 2
type: array
metadata:
properties:
enable_safety_checker:
default: true
description: Enable output safety checking
type: boolean
prompt_expansion_mode:
default: balanced
description: Prompt expansion strategy
enum:
- balanced
- quality
type: string
reference_audio_urls:
description: Reference audio URLs; maximum 3
items:
format: uri
type: string
maxItems: 3
type: array
reference_image_urls:
description: Reference image URLs; maximum 9
items:
format: uri
type: string
maxItems: 9
type: array
reference_video_urls:
description: Reference video URLs; maximum 3; used for video-to-video and video editing
items:
format: uri
type: string
maxItems: 3
type: array
seed:
description: Optional random seed. Explicit 0 is preserved.
type: integer
type: object
model:
default: minimax/h3-max-turbo/text-to-video
description: Video model ID
enum:
- minimax/h3/text-to-video
- minimax/h3/image-to-video
- minimax/h3/reference-to-video
- minimax/h3-max-turbo/text-to-video
- minimax/h3-max-turbo/image-to-video
type: string
prompt:
description: Describe the subject, action, camera movement, lighting, and desired visual style
type: string
resolution:
default: 768P
description: H3 Max Turbo accepts 480P, 768P, or 1080P. H3 accepts 480P, 768P, 2K, or 4K.
enum:
- 480P
- 768P
- 1080P
- 2K
- 4K
type: string
required:
- model
- prompt
title: MiniMax H3 Family Video Generation
type: object
- properties:
images:
description: Optional image URLs or `asset://` URIs actually returned by [GET /v1/video/assets](https://ccapi.ai/docs/en#tag/seedance-trusted-asset-library/GET/v1/video/assets) (never construct IDs yourself). For Seedance 2.x, provide exactly one matching entry in metadata.image_roles for every image; roles are never inferred. A reference_image entry (for example, an official trusted-asset persona) may be combined with a first_frame and/or last_frame image in the same request. Use reference_image when combining images with reference video or audio. First/last frames cannot be combined with reference video or audio.
items:
type: string
maxItems: 30
type: array
metadata:
description: Seedance generation options forwarded to the provider
properties:
audios:
description: 'Reference audio URLs or `asset://` URIs actually returned by [GET /v1/video/assets](https://ccapi.ai/docs/en#tag/seedance-trusted-asset-library/GET/v1/video/assets); each maps to upstream role=reference_audio. Seedance 2.0, Fast, and Mini accept up to 3 audio clips, each 2–15 seconds with a combined duration of at most 15 seconds; 2.5 accepts up to 10. Reference audio cannot be used alone with the 2.0 family: include at least one reference image or video. Set generate_audio=true when audio output is required.'
items:
type: string
maxItems: 10
type: array
duration:
default: 5
description: Video duration in seconds. Seedance 2.5 supports 4–30 seconds; the Seedance 2.0 family supports 4–15 seconds.
maximum: 30
minimum: 4
type: integer
generate_audio:
default: false
description: Generate synchronized audio. Supported by Seedance 2.5 and the Seedance 2.0, Fast, and Mini models. CCAPI defaults this to false; set it explicitly to true when audio output is required.
type: boolean
image_roles:
description: 'Required whenever images[] is present. Array order must match images[] exactly, with one role per image. This maps to the official Seedance content[].role field. Allowed roles: first_frame, last_frame, reference_image.'
items:
enum:
- first_frame
- last_frame
- reference_image
type: string
minItems: 1
type: array
input_video_duration:
description: Total reference-video duration in seconds for accurate Seedance 2.5 video-input estimation and settlement.
minimum: 0
type: number
input_video_durations:
description: Per-reference video durations in seconds; summed when input_video_duration is absent.
items:
minimum: 0
type: number
maxItems: 10
type: array
ratio:
default: '16:9'
description: Seedance 2.5 supports auto, 21:9, 16:9, 4:3, 1:1, 3:4, and 9:16; the 2.0 family also supports adaptive.
enum:
- '16:9'
- '4:3'
- '1:1'
- '3:4'
- '9:16'
- '21:9'
- auto
- adaptive
type: string
resolution:
default: 720p
description: Requested output resolution. Seedance 2.5 accepts 720p/1080p; both are delivered through the upscale pipeline (one-step-lower base generation plus MediaKit upscaling). The 480p tier has been retired.
enum:
- 720p
- 1080p
type: string
videos:
description: Seedance 2.0 Fast supports reference videos. Supply public MP4/MOV URLs or `asset://` URIs actually returned by [GET /v1/video/assets](https://ccapi.ai/docs/en#tag/seedance-trusted-asset-library/GET/v1/video/assets). The 2.0 family accepts up to 3 videos, each 2–15 seconds with a combined duration of at most 15 seconds; 2.5 accepts up to 10. For accurate Seedance 2.5 estimation and settlement, also provide input_video_duration or input_video_durations.
items:
type: string
maxItems: 10
type: array
watermark:
default: false
type: boolean
type: object
model:
description: Seedance model ID. New Seedance 2.5 integrations should use `seedance-2.5`.
enum:
- seedance-2.5
- doubao-seedance-2-0-260128
- doubao-seedance-2-0-fast-260128
- doubao-seedance-2-0-mini-260615
- seedance-2.0
- seedance-2.0-fast
- seedance-2.0-mini
type: string
prompt:
description: Text prompt describing the video
type: string
required:
- model
- prompt
title: Seedance 2.5 / 2.0 Video Generation
type: object
required: true
responses:
'200':
content:
application/json:
example:
created_at: 1783689480
id: task_9eGDOQMKpHvMO3drh8w5cgk27PTqi1EO
model: veo-3.1-fast
object: video
progress: 0
status: queued
task_id: task_9eGDOQMKpHvMO3drh8w5cgk27PTqi1EO
schema:
$ref: '#/components/schemas/VideoTaskAccepted'
description: Task accepted
'400':
content:
application/json:
examples:
assetTypeMismatch:
summary: Trusted asset used in the wrong media field
value:
error:
code: asset_type_mismatch
message: Place Image assets in images, Video assets in metadata.videos, and Audio assets in metadata.audios.
type: invalid_request_error
invalidImageRoles:
summary: Missing or invalid image roles
value:
error:
code: invalid_image_roles
message: 'Set metadata.image_roles to an array with one role for each images[] entry. Allowed roles: first_frame, last_frame, reference_image.'
type: invalid_image_roles_error
invalidJson:
summary: Malformed JSON request body
value:
error:
code: invalid_json
message: Request body must be valid JSON. Remove trailing commas and check brackets, quotes, and value types.
type: invalid_json_error
invalidMediaCombination:
summary: First/last frames mixed with reference media
value:
error:
code: invalid_reference_combination
message: First/last frame images cannot be combined with reference media. Mark all images as reference_image or remove the other reference media.
type: invalid_reference_combination_error
privacyRejected:
summary: Input image rejected by the upstream privacy policy
value:
error:
code: privacy_rejected
message: One or more input images may contain a real person and were rejected. Use an authorized trusted-person asset or replace the images.
type: privacy_rejected_error
schema:
properties:
error:
properties:
code:
type: string
message:
type: string
type:
type: string
required:
- code
- type
- message
type: object
required:
- error
type: object
description: Invalid request. The response provides a safe, actionable error code and a directly readable message.
'403':
content:
application/json:
example:
code: official_asset_risk_suspended
message: Official asset generation is temporarily suspended for this account.
description: Official-asset generation is temporarily suspended for this account after repeated upstream policy rejections.
headers:
Retry-After:
schema:
minimum: 1
type: integer
'409':
content:
application/json:
examples:
assetNotActive:
summary: Trusted asset disabled or revoked
value:
error:
code: asset_not_active
message: One or more requested Seedance assets are not active.
type: invalid_request_error
assetRightsExpired:
summary: Trusted asset authorization expired
value:
error:
code: asset_rights_expired
message: Authorization for one or more requested Seedance assets has expired.
type: invalid_request_error
description: A trusted asset cannot currently be used for generation. The error is returned before routing and billing.
'429':
content:
application/json:
examples:
concurrencyLimit:
value:
code: official_asset_concurrency_limit_exceeded
message: Only one official asset generation task may be active at a time.
dailyLimit:
value:
code: official_asset_daily_limit_exceeded
message: The daily official asset generation limit has been reached.
rateLimit:
value:
code: official_asset_rate_limit_exceeded
message: Paid accounts may start one official asset generation task per minute.
description: An enforced official-asset quota, rate, or concurrency limit was reached. Wait for the Retry-After interval before retrying.
headers:
Retry-After:
description: Recommended delay before retrying, in seconds.
schema:
minimum: 1
type: integer
'503':
content:
application/json:
examples:
circuitOpen:
value:
code: official_asset_circuit_open
message: Official asset generation is temporarily paused by automated risk control.
riskUnavailable:
value:
code: official_asset_risk_control_unavailable
message: Official asset risk control is temporarily unavailable.
description: Official-asset generation is temporarily unavailable because automated risk control is unavailable or the global circuit is open.
headers:
Retry-After:
schema:
minimum: 1
type: integer
summary: Create Video Task
tags:
- MiniMax H3 Family Video Generation
x-apifox-folder: Video/Gemini Video
/v1/videos/{task_id}:
get:
deprecated: false
description: 'Poll a video task by `task_id`; works for every video model submitted via `POST /v1/videos`. `status` transitions `queued` → `in_progress` → `completed` / `failed`; on success the video URL is in `metadata.url`. Recommended poll interval: 5-15 seconds.'
operationId: openai-compatible-video-task-fetch
parameters:
- description: Task id returned by POST /v1/videos
in: path
name: task_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
examples:
completed:
summary: Completed
value:
id: task_9eGDOQMKpHvMO3drh8w5cgk27PTqi1EO
metadata:
url: https://cdn.example.com/video.mp4
model: veo-3.1-lite
object: video
progress: 100
status: completed
in-progress:
summary: In progress
value:
id: task_9eGDOQMKpHvMO3drh8w5cgk27PTqi1EO
model: veo-3.1-lite
object: video
progress: 30
status: in_progress
schema:
$ref: '#/components/schemas/VideoTaskStatus'
description: Task status
summary: Get Video Task
tags:
- MiniMax H3 Family Video Generation
x-apifox-folder: Video/Gemini Video
/v1/videos/{task_id}/content:
get:
description: Download the generated video through the platform video-content endpoint. Use the same bearer token as the create and polling requests.
operationId: download-h3-video
parameters:
- description: Task ID returned by POST /v1/videos
in: path
name: task_id
required: true
schema:
type: string
responses:
'200':
content:
video/mp4:
schema:
format: binary
type: string
description: Generated video content
summary: Download a completed H3 video
tags:
- MiniMax H3 Family Video Generation
components:
schemas:
VideoTaskStatus:
properties:
created_at:
type: integer
error:
description: Present when status is failed
properties:
code:
type: string
message:
type: string
type: object
id:
description: Task id
type: string
metadata:
properties:
url:
description: Generated video URL (present when completed). Download promptly; upstream URLs have a limited validity period.
type: string
type: object
model:
type: string
object:
example: video
type: string
progress:
description: Progress 0-100
type: integer
status:
description: Task status
enum:
- queued
- in_progress
- completed
- failed
type: string
type: object
VideoTaskAccepted:
properties:
created_at:
description: Unix timestamp
type: integer
id:
description: Task id
type: string
model:
type: string
object:
example: video
type: string
progress:
example: 0
type: integer
status:
example: queued
type: string
task_id:
description: Task id (same as id)
type: string
type: object
securitySchemes:
bearer:
description: 'CCAPI API Key. Format: `Bearer sk-xxx`'
scheme: bearer
type: http
x-tagGroups:
- name: Integration Guides
tags:
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://artifacts.apis.io/ccapi-ai/openapi/ccapi-ai-minimax-h3-family-video-generation-api-openapi.yml