Skip to content
Developers
API docs / Models

MAKEUGC PLATFORM API · DOCS V2

MiniMax H3 Max · Extend video

Extend video with MiniMax H3 Max.

VIDEO OUTPUT

Request

POST /enterprise/generate

Model ID: minimax-h3-max-extend-video. Put model inputs inside params; keep model and project_id at the top level.

Unknown parameters are rejected. Send model inputs inside params; project_id belongs in the request envelope.
This model uses status polling. webhook_url is not supported and is rejected before a job is submitted.
The worker validates source media, calculates the final cost and deducts credits. Do not resubmit a timed-out generation request automatically.
Source video must be 1.625–60 seconds. Choose extended to include the original clip or continuation to return only the generated portion.

Request envelope

Parameter Description
model
string
Required
Exact public model ID from the model catalog.
params
object
Required
Model-specific input fields. See the individual model page for required fields, types, defaults and limits.
project_id
string
Optional
Existing project belonging to your account. Omit to create a project automatically.

Model parameters

Parameter Description
prompt
string
Required
Describe the output you want to generate.

Allowed: At least 1 characters; Up to 2000 characters

video_url
string
Required
Public HTTP(S) media URL. Private addresses, credentials and data URIs are not accepted.
duration
number
Optional
duration input.

Allowed: 5; 10; 15

Default: 5

resolution
string
Optional
resolution input.

Allowed: 480P | 768P | 1080P | 2K

Default: 1080P

output
string
Optional
output input.

Allowed: extended | continuation

Default: extended

Code examples

Set MAKEUGC_API_KEY on your server. Replace example media URLs with files you host and keep accessible during processing.

cURL
curl --fail-with-body --max-time 120 -X POST "https://app.makeugc.ai/api/platform/enterprise/generate" \
  -H "X-Api-Key: $MAKEUGC_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "minimax-h3-max-extend-video",
  "params": {
    "prompt": "A slow camera move around a ceramic coffee cup in warm morning light.",
    "video_url": "https://your-cdn.example/source.mp4",
    "duration": 5
  }
}'
JavaScript
// Run on your server with Node.js 20+.
const apiKey = process.env.MAKEUGC_API_KEY;
if (!apiKey) throw new Error("Set MAKEUGC_API_KEY first");

const response = await fetch("https://app.makeugc.ai/api/platform/enterprise/generate", {
  method: "POST",
  headers: {
    "X-Api-Key": apiKey,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "minimax-h3-max-extend-video",
  "params": {
    "prompt": "A slow camera move around a ceramic coffee cup in warm morning light.",
    "video_url": "https://your-cdn.example/source.mp4",
    "duration": 5
  }
}),
  signal: AbortSignal.timeout(120000),
});
const text = await response.text();
if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${text} (request ${response.headers.get("x-request-id")})`);
}
const result = JSON.parse(text);
console.log(result);
Python
# Install the requests package before running.
import os
import requests

payload = {
    "model": "minimax-h3-max-extend-video",
    "params": {
        "prompt": "A slow camera move around a ceramic coffee cup in warm morning light.",
        "video_url": "https://your-cdn.example/source.mp4",
        "duration": 5
    }
}

response = requests.post(
    "https://app.makeugc.ai/api/platform/enterprise/generate",
    headers={"X-Api-Key": os.environ["MAKEUGC_API_KEY"]},
    json=payload,
    timeout=120,
)
if not response.ok:
    raise RuntimeError(f"HTTP {response.status_code}: {response.text} "
                       f"(request {response.headers.get('x-request-id')})")
print(response.json())

200 · Job accepted

Generation response
{
  "request_id": "request_123",
  "project_id": "project_123",
  "media": "video",
  "model": "minimax-h3-max-extend-video",
  "status": "queued",
  "message": "Enterprise API job queued"
}

Retrieve the result

Save request_id, then poll every 5–10 seconds. A successful generation request does not mean the output is ready.

cURL
curl --fail-with-body --max-time 120 -X GET "https://app.makeugc.ai/api/platform/enterprise/status/request_123?media=video" \
  -H "X-Api-Key: $MAKEUGC_API_KEY"
JavaScript
// Run on your server with Node.js 20+.
const apiKey = process.env.MAKEUGC_API_KEY;
if (!apiKey) throw new Error("Set MAKEUGC_API_KEY first");

const response = await fetch("https://app.makeugc.ai/api/platform/enterprise/status/request_123?media=video", {
  method: "GET",
  headers: {
    "X-Api-Key": apiKey,
  },
  signal: AbortSignal.timeout(120000),
});
const text = await response.text();
if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${text} (request ${response.headers.get("x-request-id")})`);
}
const result = JSON.parse(text);
console.log(result);
Python
# Install the requests package before running.
import os
import requests

response = requests.get(
    "https://app.makeugc.ai/api/platform/enterprise/status/request_123?media=video",
    headers={"X-Api-Key": os.environ["MAKEUGC_API_KEY"]},
    timeout=120,
)
if not response.ok:
    raise RuntimeError(f"HTTP {response.status_code}: {response.text} "
                       f"(request {response.headers.get('x-request-id')})")
print(response.json())

200 · Completed

Status response
{
  "request_id": "request_123",
  "media": "video",
  "status": 1,
  "video_url": "https://your-cdn.example/result.mp4",
  "created_at": "2026-10-13T00:00:00.000Z",
  "updated_at": "2026-10-13T00:00:30.000Z"
}

Read status: 0 is processing, 1 is completed and 2 is failed. Video status can also be a string. Output is in video_url . If completed has no output URL yet, continue polling within your timeout. See jobs & webhooks.

Credits & errors

Cost: based on duration, resolution and source media. Read returned credit fields when available. See credit units and limits.

Invalid inputs return 400; insufficient credits can return 400 or 402 depending on the generation path. Access restrictions return 403 and temporary model unavailability can return 503. See error handling. Each POST can start a billable job; do not automatically resubmit after a timeout.

Related models

Browse all models →