curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************"
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "MiniMax-H3-Regeneration",
source_task_id: "task_01J9HA7J*************",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
MiniMax-H3
MiniMax-H3 Regeneration
- Regenerate MiniMax-H3 768P video into 2K
- Prefer source_task_id only; the platform auto-fills prompt, media, and source video
- Not generic upscaling: source must be an H3 768P output
- Per-second billing ($0.045/s output + same rate for reference videos)
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************"
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "MiniMax-H3-Regeneration",
source_task_id: "task_01J9HA7J*************",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
Full 2K Workflow (optional): ① Context-IR → ② MiniMax-H3 with
resolution: "768P" → ③ this endpoint to 2K.768P unit price + regeneration unit price = direct 2K unit price, with cheaper iteration.Not a generic upscaler. The source must be a 768P video produced by MiniMax-H3. External videos (phone clips, other models, downloads) will be rejected.
Recommended: source_task_id only
Pass only the task_id of a successful MiniMax-H3 · 768P job. The server fills in the rest.
{
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************"
}
source_task_id must satisfy all of the following, or you get a sync 400 (no task, no charge):
| Rule | Notes |
|---|---|
| Owned by your account | Cannot upgrade another user’s task |
Model is MiniMax-H3 | Not other models |
| Status is successful | Task is completed |
Resolution is 768P | Must be a 768P preview output |
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************"
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "MiniMax-H3-Regeneration",
source_task_id: "task_01J9HA7J*************",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
Authorization
string
필수
Bearer Token auth. Get a key from the API Key Management Page.
Authorization: Bearer YOUR_API_KEY
Request Parameters
string
필수
Fixed value:
MiniMax-H3-Regenerationboolean
기본값:"false"
비디오 작업을 제출하기 전에 콘텐츠 검토를 실행할지 여부를 지정합니다.
true:omni-moderation-latest로 프롬프트와 입력 이미지를 검토false또는 생략: 검토 요청을 보내지 않으며 검토 비용이나 지연이 추가되지 않음(기본값)
string
필수
ID of a successful MiniMax-H3 · 768P task on this platform.When set, you do not need
prompt, source video, or reference media — the server fills them.Source Video Specs
The source must match MiniMax-H3 768P output:| Item | Requirement |
|---|---|
| Audio track | Required; silent video not supported |
| Frame rate | 24 fps |
| Width / height | Each divisible by 32 |
| Area | ≤ 768 × 1344 (1,032,192 pixels) |
| Frame count | 107~362 frames, steps of 17 ( |
Billing
Per second (same structure as H3 generation, different unit prices):| Item | Price |
|---|---|
| Output (768P → 2K) | $0.045 / s |
| Input reference video | $0.045 / s |
| Input images | First 5 free, then $0.0225 / image |
| Input audio | Free |
Total = 0.045 × (source duration + reference video duration) + 0.0225 × max(0, image_count - 5)
Media from the original 768P job is billed again on regeneration — not output seconds only.Examples
| Scenario | Cost |
|---|---|
| 5s source, no extra media | $0.225 |
| 10s source + 2 images | $0.45 (images ≤5 free) |
| 6s source + 8s ref video + 7 images | $0.675 |
source_task_id, pre-charge uses the original task’s real output seconds.
Request Examples
source_task_id
{
"model": "MiniMax-H3-Regeneration",
"source_task_id": "task_01J9HA7J*************"
}
Common Errors
Submit-time parameter errors are sync 400 (no task, no charge):| Case | Notes |
|---|---|
Invalid source_task_id | Not yours / not MiniMax-H3 / not successful / not 768P |
Response
integer
Status code; 200 on success
array
On submit:
status / task_id; when complete, result is in result.videos (same as normal video jobs)표시 Array elements
표시 Array elements
string
Initially
submittedstring
Task ID for status queries
Poll Get Task Status. On success use
result.videos[0].url.