Passer au contenu principal
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": "doubao-seedance-1-0-pro-fast",
    "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration": 5,
    "aspect_ratio": "16:9",
    "resolution": "1080p"
  }'
import requests

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

payload = {
    "model": "doubao-seedance-1-0-pro-fast",
    "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration": 5,
    "aspect_ratio": "16:9",
    "resolution": "1080p"
}

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: "doubao-seedance-1-0-pro-fast",
  prompt: "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
  duration: 5,
  aspect_ratio: "16:9",
  resolution: "720p"
};

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":        "doubao-seedance-1-0-pro-fast",
        "prompt":       "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
        "duration":     5,
        "aspect_ratio": "16:9",
        "resolution":   "720p",
    }

    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": "doubao-seedance-1-0-pro-fast",
          "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
          "duration": 5,
          "aspect_ratio": "16:9",
          "resolution": "1080p"
        }
        """;

        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" => "doubao-seedance-1-0-pro-fast",
    "prompt" => "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration" => 5,
    "aspect_ratio" => "16:9",
    "resolution" => "720p"
];

$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: "doubao-seedance-1-0-pro-fast",
  prompt: "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
  duration: 5,
  aspect_ratio: "16:9",
  resolution: "720p"
}

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": "doubao-seedance-1-0-pro-fast",
    "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration": 5,
    "aspect_ratio": "16:9",
    "resolution": "1080p"
]

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"": ""doubao-seedance-1-0-pro-fast"",
            ""prompt"": ""A cute kitten playing in the sunlight, fluffy fur, bright eyes"",
            ""duration"": 5,
            ""aspect_ratio"": ""16:9"",
            ""resolution"": ""720p""
        }";

        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": "Invalid authentication credentials",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient balance. Please top up your account",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 429,
    "message": "Rate limit exceeded. 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": "doubao-seedance-1-0-pro-fast",
    "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration": 5,
    "aspect_ratio": "16:9",
    "resolution": "1080p"
  }'
import requests

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

payload = {
    "model": "doubao-seedance-1-0-pro-fast",
    "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration": 5,
    "aspect_ratio": "16:9",
    "resolution": "1080p"
}

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: "doubao-seedance-1-0-pro-fast",
  prompt: "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
  duration: 5,
  aspect_ratio: "16:9",
  resolution: "720p"
};

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":        "doubao-seedance-1-0-pro-fast",
        "prompt":       "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
        "duration":     5,
        "aspect_ratio": "16:9",
        "resolution":   "720p",
    }

    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": "doubao-seedance-1-0-pro-fast",
          "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
          "duration": 5,
          "aspect_ratio": "16:9",
          "resolution": "1080p"
        }
        """;

        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" => "doubao-seedance-1-0-pro-fast",
    "prompt" => "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration" => 5,
    "aspect_ratio" => "16:9",
    "resolution" => "720p"
];

$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: "doubao-seedance-1-0-pro-fast",
  prompt: "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
  duration: 5,
  aspect_ratio: "16:9",
  resolution: "720p"
}

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": "doubao-seedance-1-0-pro-fast",
    "prompt": "A cute kitten playing in the sunlight, fluffy fur, bright eyes",
    "duration": 5,
    "aspect_ratio": "16:9",
    "resolution": "1080p"
]

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"": ""doubao-seedance-1-0-pro-fast"",
            ""prompt"": ""A cute kitten playing in the sunlight, fluffy fur, bright eyes"",
            ""duration"": 5,
            ""aspect_ratio"": ""16:9"",
            ""resolution"": ""720p""
        }";

        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": "Invalid authentication credentials",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient balance. Please top up your account",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 429,
    "message": "Rate limit exceeded. Please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error. Please try again later",
    "type": "server_error"
  }
}

Autorisation

Authorization
string
requis
Tous les points de terminaison de l’API nécessitent une authentification par Bearer TokenObtenez votre API Key :Rendez-vous sur la page de gestion des API Keys pour obtenir votre API KeyAjoutez-la dans l’en-tête de la requête :
Authorization: Bearer YOUR_API_KEY

Paramètres de la requête

model
string
requis
Nom du modèle de génération vidéoModèles pris en charge :
  • doubao-seedance-1-0-pro-fast — version rapide, génération rapide, adaptée à la prévisualisation et à l’itération
  • doubao-seedance-1-0-pro-quality — version haute qualité, temps de génération plus long, meilleure qualité
prompt
string
requis
Description du contenu de la vidéoDécrivez en détail les scènes, les actions et les styles pour obtenir de meilleurs résultatsExemple : "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand"
duration
integer
défaut:"5"
Durée de la vidéo (en secondes)Plage prise en charge : 2 ~ 12 secondesPar défaut : 5
aspect_ratio
string
défaut:"16:9"
Rapport d’aspect de la vidéoOptions :
  • 16:9 — paysage
  • 9:16 — portrait
  • 1:1 — carré
  • 4:3 — rapport traditionnel
  • 3:4 — rapport traditionnel vertical
  • 21:9 — ultra-large
Par défaut : 16:9
resolution
string
défaut:"1080p"
Résolution de la vidéoOptions :
  • 480p — définition standard
  • 720p — haute définition
  • 1080p — Full HD
Par défaut : 1080p
seed
integer
Entier seed pour contrôler l’aléa du contenu généréPlage de valeurs : entier entre -1 et 2^32-1
  • Pour une même requête, si le modèle reçoit des valeurs de seed différentes (par exemple, en ne précisant pas le seed ou en définissant seed à -1, ce qui utilise un nombre aléatoire), des résultats différents seront générés
  • Pour une même requête, si le modèle reçoit la même valeur de seed, des résultats similaires seront générés, sans garantie qu’ils soient identiques

Combinaisons de résolution et de rapport d’aspect

RésolutionRapports d’aspect pris en chargeRemarques
480p16:9, 4:3, 1:1, 3:4, 9:16, 21:9Tous pris en charge
720p16:9, 4:3, 1:1, 3:4, 9:16, 21:9Tous pris en charge
1080p16:9, 4:3, 1:1, 3:4, 9:16, 21:9Tous pris en charge
image_with_roles
array
Tableau d’images avec rôles pour un contrôle plus précisExemple :
[
  {"url": "https://example.com/start.png", "role": "first_frame"},
  {"url": "https://example.com/end.png", "role": "last_frame"}
]
  • Une seule image par rôle est prise en charge
  • last_frame n’est pris en charge que par la version doubao-seedance-1-0-pro-quality, la version rapide ne prend pas en charge simultanément la première et la dernière image

Réponse

code
integer
Code d’état de la réponse, 200 en cas de succès
data
array
Tableau de données de la réponse

Cas d’usage

Cas 1 : prévisualisation rapide d’une vidéo paysage

{
  "model": "doubao-seedance-1-0-pro-fast",
  "prompt": "Sunset at the beach, golden sunlight on the sea, waves gently hitting the sand"
}

Cas 2 : courte vidéo verticale haute qualité

{
  "model": "doubao-seedance-1-0-pro-quality",
  "prompt": "A girl spinning under cherry blossom trees, petals falling with the wind",
  "duration": 5,
  "aspect_ratio": "9:16",
  "resolution": "1080p"
}

Cas 3 : effet de transition dynamique (première/dernière image)

{
  "model": "doubao-seedance-1-0-pro-quality",
  "prompt": "Scene transitions from day to night, city lights gradually turning on",
  "image_with_roles": [
    {"url": "https://example.com/day.png", "role": "first_frame"},
    {"url": "https://example.com/night.png", "role": "last_frame"}
  ],
  "duration": 5
}
Interroger les résultats de la tâcheLa génération vidéo est une tâche asynchrone qui renvoie un task_id lors de la soumission. Utilisez le point de terminaison Obtenir le statut de la tâche pour interroger la progression et les résultats de la génération.