cURL
Python
JavaScript
Go
Java
PHP
Ruby
Swift
C#
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.5-preview",
"prompt": "Sunset coastal highway, cinematic shot",
"size": "16:9",
"resolution": "720p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model" : "wan2.5-preview" ,
"prompt" : "Sunset coastal highway, cinematic shot" ,
"size" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5
}
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: "wan2.5-preview" ,
prompt: "Sunset coastal highway, cinematic shot" ,
size: "16:9" ,
resolution: "720p" ,
duration: 5
};
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" : "wan2.5-preview" ,
"prompt" : "Sunset coastal highway, cinematic shot" ,
"size" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5 ,
}
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": "wan2.5-preview",
"prompt": "Sunset coastal highway, cinematic shot",
"size": "16:9",
"resolution": "720p",
"duration": 5
}
""" ;
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" => "wan2.5-preview" ,
"prompt" => "Sunset coastal highway, cinematic shot" ,
"size" => "16:9" ,
"resolution" => "720p" ,
"duration" => 5
];
$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: "wan2.5-preview" ,
prompt: "Sunset coastal highway, cinematic shot" ,
size: "16:9" ,
resolution: "720p" ,
duration: 5
}
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" : "wan2.5-preview" ,
"prompt" : "Sunset coastal highway, cinematic shot" ,
"size" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5
]
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 "" : "" wan2.5-preview "" ,
"" prompt "" : "" Sunset coastal highway, cinematic shot "" ,
"" size "" : "" 16:9 "" ,
"" resolution "" : "" 720p "" ,
"" duration "" : 5
}" ;
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_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 balance, please top up" ,
"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"
}
}
Authentifizierung
Alle Endpunkte erfordern eine Bearer-Token-Authentifizierung API-Key abrufen: Besuchen Sie die Seite zur API-Key-Verwaltung , um Ihren API-Key zu erhalten Fügen Sie ihn zum Request-Header hinzu: Authorization: Bearer YOUR_API_KEY
Anfrageparameter
Name des Videogenerierungsmodells, fest auf wan2.5-preview
Beschreibung des Videoinhalts Erforderlich für Text-to-Video (ohne image_urls), optional, aber für Image-to-Video empfohlenBeschreiben Sie Szenen, Aktionen und Stile detailliert für bessere Ergebnisse Beispiel: "Sunset coastal highway, cinematic shot"
Array von Referenzbild-URLs (nur 1 Bild unterstützt) Erforderlich im Image-to-Video-Modus, unterstützt öffentlich zugängliche Bild-URLs oder Base64-Codierung (data:image/png;base64,...) Beispiel: ["https://example.com/image.jpg"] Das System wählt automatisch den Text-to-Video- oder Image-to-Video-Modus basierend darauf, ob image_urls enthalten ist. Übergeben Sie image_urls nicht für den Text-to-Video-Modus.
Negativer Prompt zur Beschreibung unerwünschter Inhalte Maximal 500 Zeichen Beispiel: "blurry, low quality, distorted"
Videoauflösung Optionen:
480p – SD, unterstützt size: 16:9, 9:16, 1:1
720p – HD (Standard), unterstützt size: 16:9, 9:16, 1:1, 4:3, 3:4
1080p – FHD, unterstützt size: 16:9, 9:16, 1:1, 4:3, 3:4
Standard: 720p Die Auflösung wirkt sich direkt auf den Preis aus: 1080p > 720p > 480p.
480p unterstützt nur die Verhältnisse 16:9, 9:16, 1:1. Die Übergabe von 4:3 oder 3:4 führt zu einem Fehler.
Videodauer (Sekunden) Unterstützt nur: 5 oder 10 Sekunden Standard: 5
Seitenverhältnis, nur wirksam für Text-to-Video (ohne image_urls) Optionen hängen von resolution ab: 480p:
16:9 – Querformat (Standard)
9:16 – Hochformat
1:1 – Quadrat
720p / 1080p:
16:9 – Querformat (Standard)
9:16 – Hochformat
1:1 – Quadrat
4:3 – Querformat
3:4 – Hochformat
Standard: 16:9 Bei Image-to-Video wird das Seitenverhältnis durch das Eingabebild bestimmt. Übergeben Sie size nicht , sonst wird ein Fehler zurückgegeben.
Zufallsseed (≥ 0); die Angabe desselben Seeds kann ähnliche Ergebnisse reproduzieren Beispiel: 12345
Soll die intelligente Prompt-Umschreibung aktiviert werden? Verbessert die Ergebnisse für kürzere Prompts deutlich, erhöht aber die Verarbeitungszeit Standard: true
Soll automatisch Audio hinzugefügt werden? Bei Aktivierung generiert das System passendes Audio für das Video Standard: true Dieses Modell unterstützt nur audio=true. Das Setzen auf false für ein stummes Video wird nicht unterstützt.
URL für benutzerdefiniertes Audio (wav/mp3, 3–30 Sekunden, ≤ 15 MB) Wenn das Audio länger als die Videodauer ist, wird es automatisch zugeschnitten; wenn kürzer, ist der verbleibende Teil stumm Anforderungen an die Audiodatei:
Format: wav, mp3
Dauer: 3–30 Sekunden
Größe: ≤ 15 MB
Soll ein „AI Generated”-Wasserzeichen hinzugefügt werden (unten rechts)? Standard: false
Auflösungs- und Seitenverhältnis-Kombinationen
Die Kombinationen von size und resolution entsprechen den Pixelabmessungen des Upstreams (nur wirksam für Text-to-Video ):
Seitenverhältnis Beschreibung 480p-Größe 720p-Größe 1080p-Größe 16:9Querformat (Standard) 832×480 1280×720 1920×1080 9:16Hochformat 480×832 720×1280 1080×1920 1:1Quadrat 624×624 960×960 1440×1440 4:3Querformat - 1088×832 1632×1248 3:4Hochformat - 832×1088 1248×1632
480p unterstützt nur die Verhältnisse 16:9, 9:16, 1:1. Die Übergabe von 4:3 oder 3:4 führt zu einem Fehler. 720p und 1080p unterstützen alle 5 Verhältnisse.
Antwort
Statuscode der Antwort, 200 bei Erfolg
Datenarray der Antwort Aufgabenstatus, submitted bei der Erstübermittlung
Eindeutige Aufgabenkennung zur Abfrage von Status und Ergebnissen
Anwendungsfälle
Fall 1: Text-zu-Video (einfach)
{
"model" : "wan2.5-preview" ,
"prompt" : "Sunset coastal highway, cinematic shot"
}
Fall 2: Text-zu-Video (vollständige Parameter)
{
"model" : "wan2.5-preview" ,
"prompt" : "City night scene, neon lights and rain-soaked streets" ,
"negative_prompt" : "blurry, low quality, distorted" ,
"size" : "16:9" ,
"resolution" : "720p" ,
"duration" : 5 ,
"seed" : 12345 ,
"prompt_extend" : true ,
"audio" : true ,
"watermark" : false
}
Fall 3: Bild-zu-Video
{
"model" : "wan2.5-preview" ,
"prompt" : "Cat running on the grass" ,
"image_urls" : [ "https://example.com/cat.jpg" ],
"resolution" : "480p" ,
"duration" : 5
}
Fall 4: Bild-zu-Video (Base64-Bild)
{
"model" : "wan2.5-preview" ,
"prompt" : "Make the cat stand up and walk" ,
"image_urls" : [ "data:image/png;base64,iVBORw0KGgo..." ],
"duration" : 5
}
Fall 5: Benutzerdefiniertes Audio
{
"model" : "wan2.5-preview" ,
"prompt" : "Person dancing to the music" ,
"image_urls" : [ "https://example.com/dancer.jpg" ],
"audio_url" : "https://example.com/music.mp3" ,
"resolution" : "720p" ,
"duration" : 10
}
Modusbeschreibung
Text-zu-Video (Text-to-Video)
Parameter prompt ist erforderlich
image_urls nicht übergeben
Mit size das Seitenverhältnis festlegen
Bild-zu-Video (Image-to-Video)
Parameter image_urls ist erforderlich (nur 1 Bild unterstützt)
prompt ist optional, dient zur Beschreibung erwarteter Aktionen
Das Seitenverhältnis wird durch das Eingabebild bestimmt, übergeben Sie size nicht
Das System wählt den Modus automatisch basierend darauf, ob image_urls enthalten ist
Aufgabenergebnisse abfragen Die Videogenerierung ist eine asynchrone Aufgabe, die nach der Übermittlung eine task_id zurückgibt. Verwenden Sie den Endpunkt Aufgabenstatus abrufen , um den Generierungsfortschritt und die Ergebnisse abzufragen.