Langsung ke konten utama
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-Hailuo-02",
    "prompt": "A cute cat running on the grass",
    "duration": 5,
    "resolution": "768p",
    "prompt_optimizer": true,
    "fast_pretreatment": false,
    "watermark": false
  }'
import requests

url = "https://api.apimart.ai/v1/videos/generations"

payload = {
    "model": "MiniMax-Hailuo-02",
    "prompt": "A cute cat running on the grass",
    "duration": 5,
    "resolution": "768p",
    "prompt_optimizer": True,
    "fast_pretreatment": False,
    "watermark": False
}

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-Hailuo-02",
  prompt: "A cute cat running on the grass",
  duration: 5,
  resolution: "768p",
  prompt_optimizer: true,
  fast_pretreatment: false,
  watermark: false
};

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));
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    url := "https://api.apimart.ai/v1/videos/generations"

    payload := map[string]interface{}{
        "model":              "MiniMax-Hailuo-02",
        "prompt":             "A cute cat running on the grass",
        "duration":           5,
        "resolution":         "768p",
        "prompt_optimizer":   true,
        "fast_pretreatment":  false,
        "watermark":          false,
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer <token>")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://api.apimart.ai/v1/videos/generations";

        String payload = """
        {
          "model": "MiniMax-Hailuo-02",
          "prompt": "A cute cat running on the grass",
          "duration": 5,
          "resolution": "768p",
          "prompt_optimizer": true,
          "fast_pretreatment": false,
          "watermark": false
        }
        """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Authorization", "Bearer <token>")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
<?php

$url = "https://api.apimart.ai/v1/videos/generations";

$payload = [
    "model" => "MiniMax-Hailuo-02",
    "prompt" => "A cute cat running on the grass",
    "duration" => 5,
    "resolution" => "768p",
    "prompt_optimizer" => true,
    "fast_pretreatment" => false,
    "watermark" => false
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
require 'net/http'
require 'json'
require 'uri'

url = URI("https://api.apimart.ai/v1/videos/generations")

payload = {
  model: "MiniMax-Hailuo-02",
  prompt: "A cute cat running on the grass",
  duration: 5,
  resolution: "768p",
  prompt_optimizer: true,
  fast_pretreatment: false,
  watermark: false
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json

response = http.request(request)
puts response.body
import Foundation

let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!

let payload: [String: Any] = [
    "model": "MiniMax-Hailuo-02",
    "prompt": "A cute cat running on the grass",
    "duration": 5,
    "resolution": "768p",
    "prompt_optimizer": true,
    "fast_pretreatment": false,
    "watermark": false
]

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }
    
    if let data = data, let responseString = String(data: data, encoding: .utf8) {
        print(responseString)
    }
}

task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://api.apimart.ai/v1/videos/generations";

        var payload = @"{
            ""model"": ""MiniMax-Hailuo-02"",
            ""prompt"": ""A cute cat running on the grass"",
            ""duration"": 5,
            ""resolution"": ""768p"",
            ""prompt_optimizer"": true,
            ""fast_pretreatment"": false,
            ""watermark"": false
        }";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");

        var content = new StringContent(payload, Encoding.UTF8, "application/json");
        var response = await client.PostAsync(url, content);
        var result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K"
    }
  ]
}
{
  "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 recharge",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
curl --request POST \
  --url https://api.apimart.ai/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "MiniMax-Hailuo-02",
    "prompt": "A cute cat running on the grass",
    "duration": 5,
    "resolution": "768p",
    "prompt_optimizer": true,
    "fast_pretreatment": false,
    "watermark": false
  }'
import requests

url = "https://api.apimart.ai/v1/videos/generations"

payload = {
    "model": "MiniMax-Hailuo-02",
    "prompt": "A cute cat running on the grass",
    "duration": 5,
    "resolution": "768p",
    "prompt_optimizer": True,
    "fast_pretreatment": False,
    "watermark": False
}

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-Hailuo-02",
  prompt: "A cute cat running on the grass",
  duration: 5,
  resolution: "768p",
  prompt_optimizer: true,
  fast_pretreatment: false,
  watermark: false
};

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));
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    url := "https://api.apimart.ai/v1/videos/generations"

    payload := map[string]interface{}{
        "model":              "MiniMax-Hailuo-02",
        "prompt":             "A cute cat running on the grass",
        "duration":           5,
        "resolution":         "768p",
        "prompt_optimizer":   true,
        "fast_pretreatment":  false,
        "watermark":          false,
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer <token>")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://api.apimart.ai/v1/videos/generations";

        String payload = """
        {
          "model": "MiniMax-Hailuo-02",
          "prompt": "A cute cat running on the grass",
          "duration": 5,
          "resolution": "768p",
          "prompt_optimizer": true,
          "fast_pretreatment": false,
          "watermark": false
        }
        """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Authorization", "Bearer <token>")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
<?php

$url = "https://api.apimart.ai/v1/videos/generations";

$payload = [
    "model" => "MiniMax-Hailuo-02",
    "prompt" => "A cute cat running on the grass",
    "duration" => 5,
    "resolution" => "768p",
    "prompt_optimizer" => true,
    "fast_pretreatment" => false,
    "watermark" => false
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
require 'net/http'
require 'json'
require 'uri'

url = URI("https://api.apimart.ai/v1/videos/generations")

payload = {
  model: "MiniMax-Hailuo-02",
  prompt: "A cute cat running on the grass",
  duration: 5,
  resolution: "768p",
  prompt_optimizer: true,
  fast_pretreatment: false,
  watermark: false
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json

response = http.request(request)
puts response.body
import Foundation

let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!

let payload: [String: Any] = [
    "model": "MiniMax-Hailuo-02",
    "prompt": "A cute cat running on the grass",
    "duration": 5,
    "resolution": "768p",
    "prompt_optimizer": true,
    "fast_pretreatment": false,
    "watermark": false
]

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }
    
    if let data = data, let responseString = String(data: data, encoding: .utf8) {
        print(responseString)
    }
}

task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://api.apimart.ai/v1/videos/generations";

        var payload = @"{
            ""model"": ""MiniMax-Hailuo-02"",
            ""prompt"": ""A cute cat running on the grass"",
            ""duration"": 5,
            ""resolution"": ""768p"",
            ""prompt_optimizer"": true,
            ""fast_pretreatment"": false,
            ""watermark"": false
        }";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");

        var content = new StringContent(payload, Encoding.UTF8, "application/json");
        var response = await client.PostAsync(url, content);
        var result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K"
    }
  ]
}
{
  "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 recharge",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}

Otorisasi

Authorization
string
wajib
Semua endpoint API memerlukan autentikasi Bearer TokenDapatkan API Key:Kunjungi Halaman Manajemen API Key untuk mendapatkan API Key AndaTambahkan ke header permintaan:
Authorization: Bearer YOUR_API_KEY

Parameter Request

model
string
wajib
Nama model pembuatan videoNilai tetap: MiniMax-Hailuo-02
prompt
string
wajib
Deskripsi konten videoJelaskan adegan, aksi, gaya, dan lainnya secara detail untuk hasil pembuatan yang lebih baikContoh: "A cute cat running on the grass"
duration
integer
default:"5"
Durasi video (detik)Opsi:
  • 5 - Video 5 detik
  • 10 - Video 10 detik
Default: 5
Batasan 1080p: Saat menggunakan resolusi 1080p, hanya durasi 5 detik yang didukung
resolution
string
default:"768p"
Resolusi videoOpsi:
  • 512p - Definisi standar
  • 768p - Definisi tinggi
  • 1080p - Full HD (hanya mendukung durasi 5 detik)
Default: 768p
prompt_optimizer
boolean
default:"true"
Apakah mengoptimalkan prompt secara otomatisSaat diaktifkan, sistem akan mengoptimalkan prompt Anda secara otomatis untuk hasil pembuatan yang lebih baikDefault: true
fast_pretreatment
boolean
default:"false"
Apakah mengurangi waktu optimisasi promptMengaktifkan ini dapat mempercepat pemrosesan, tetapi mungkin sedikit memengaruhi kualitas optimisasiDefault: false
watermark
boolean
default:"false"
Apakah menambahkan watermarkDefault: false
first_frame_image
string
Gambar frame pertama videoMendukung dua format:
  • Public URL: https://example.com/start.jpg
  • Base64 encoded: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABg...
Digunakan untuk menentukan frame awal video
last_frame_image
string
Gambar frame terakhir videoMendukung dua format:
  • Public URL: https://example.com/end.jpg
  • Base64 encoded: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABg...
Digunakan untuk menentukan frame akhir video

Batasan Parameter

BatasanDeskripsi
DurasiHanya mendukung 5 atau 10 detik
Resolusi 1080pHanya mendukung durasi 5 detik
Format GambarMendukung URL publik atau Base64 encoded (data:image/jpeg;base64,...)

Kombinasi Resolusi dan Durasi

ResolusiDurasi yang DidukungCatatan
512p5s, 10sSemua didukung
768p5s, 10sSemua didukung
1080p5s10 dtk tidak didukung

Respons

code
integer
Kode status respons, 200 jika berhasil
data
array
Array data respons

Kasus Penggunaan

Kasus 1: Pembuatan Teks-ke-Video Cepat

{
  "model": "MiniMax-Hailuo-02",
  "prompt": "A cute cat running on the grass in bright sunshine"
}

Kasus 2: Membuat Video 1080p Berkualitas Tinggi

{
  "model": "MiniMax-Hailuo-02",
  "prompt": "City night scene, neon lights flashing, traffic flowing",
  "duration": 5,
  "resolution": "1080p",
  "prompt_optimizer": true,
  "watermark": false
}

Kasus 3: Membuat Video dari Gambar Frame Pertama

{
  "model": "MiniMax-Hailuo-02",
  "prompt": "Person slowly turning around with a smile",
  "duration": 5,
  "resolution": "768p",
  "first_frame_image": "https://example.com/portrait.jpg"
}

Kasus 4: Video Transisi dengan Kontrol Frame Pertama dan Terakhir

{
  "model": "MiniMax-Hailuo-02",
  "prompt": "Scene gradually transitions from day to night, sky color changing",
  "duration": 10,
  "resolution": "768p",
  "first_frame_image": "https://example.com/day.jpg",
  "last_frame_image": "https://example.com/night.jpg",
  "prompt_optimizer": true
}

Kasus 5: Mode Prapemrosesan Cepat

{
  "model": "MiniMax-Hailuo-02",
  "prompt": "Waves crashing on the beach at sunset",
  "duration": 5,
  "resolution": "768p",
  "prompt_optimizer": true,
  "fast_pretreatment": true
}
Kueri Hasil TugasPembuatan video adalah tugas asinkron yang mengembalikan task_id setelah pengiriman. Gunakan endpoint Dapatkan Status Tugas untuk mengueri progres dan hasil pembuatan.