curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"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: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Échec de l'authentification, veuillez vérifier votre clé API",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Trop de requêtes, veuillez réessayer plus tard",
"type": "rate_limit_error"
}
}
Pixverse v6
Pixverse v6 Génération vidéo
- Modèle unifié de génération vidéo Pixverse v6
- Prend en charge texte vers vidéo, image vers vidéo, transition premier/dernier frame, fusion multi-références et extension vidéo
- Prend en charge les résolutions 360p/540p/720p/1080p, durée 1–15 secondes
- API de tâches asynchrones : interrogez le résultat par ID de tâche après la soumission
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": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"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: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Échec de l'authentification, veuillez vérifier votre clé API",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Trop de requêtes, veuillez réessayer plus tard",
"type": "rate_limit_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"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: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Échec de l'authentification, veuillez vérifier votre clé API",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Trop de requêtes, veuillez réessayer plus tard",
"type": "rate_limit_error"
}
}
Authentification
string
requis
Tous les endpoints nécessitent une authentification par Bearer Token.Obtenir une clé API :Visitez la page de gestion des clés API pour obtenir votre clé API.Ajoutez l’en-tête suivant à votre requête :
Authorization: Bearer YOUR_API_KEY
Paramètres de requête
string
requis
Nom du modèle de génération vidéo. Fixé à
pixverse-v6.boolean
défaut:"false"
Indique s’il faut modérer le contenu avant d’envoyer la tâche vidéo.
true: vérifier les prompts et les images d’entrée avecomni-moderation-latestfalseou omis : ne pas envoyer de requête de modération, sans coût ni latence de modération supplémentaires (par défaut)
string
requis
Description du contenu de la vidéo, jusqu’à 5000 caractères. Obligatoire dans tous les modes.
string
défaut:"540p"
Niveau de résolution vidéo. Influence directement la facturation.
360p: SD540p: Standard (par défaut)720p: HD1080p: Full HD
Toute autre valeur de résolution renverra une erreur de paramètre.
integer
défaut:"5"
Durée de la vidéo en secondes, plage
1–15.Le mode transition premier/dernier frame ne prend en charge que
5 ou 8 secondes.string
défaut:"16:9"
Rapport hauteur/largeur de la vidéo. Effectif uniquement en mode texte vers vidéo et fusion multi-références.
16:9: Paysage écran large (par défaut)4:3: Paysage 4:31:1: Carré3:4: Portrait 3:49:16: Portrait vertical2:3: Portrait 2:33:2: Paysage 3:221:9: Cinémascope
integer
défaut:"0"
Graine aléatoire, plage
0–2147483647. Le même prompt et la même seed reproduisent des résultats similaires.string
Prompt négatif pour exclure les contenus indésirables. Jusqu’à 2048 caractères.
boolean
défaut:"false"
Indique si une piste audio est générée.
true: Générer une piste audio (augmente le tarif)false: Sans audio (par défaut)
boolean
défaut:"false"
Indique si un filigrane est ajouté en bas à droite de la vidéo.
true: Ajouter un filigranefalse: Sans filigrane (par défaut)
string
Mode de mouvement.
normal: Mode standard (pixverse-v6ne prend en charge que cette valeur)
fast est réservé aux anciens modèles et sera rejeté par l’amont pour pixverse-v6.boolean
défaut:"false"
Indique s’il faut générer une vidéo multi-clips continue. Pris en charge uniquement en mode texte vers vidéo et image vers vidéo.
true: Générer une vidéo multi-clips continuefalse: Clip unique (par défaut)
array<url>
Tableau d’URL d’images d’entrée pour image vers vidéo. Seule la première image est utilisée.Les images doivent être des URL HTTP/HTTPS publiques.
url
URL du premier frame en mode transition. Doit être fourni avec
last_frame_image.url
URL du dernier frame en mode transition. Doit être fourni avec
first_frame_image.array<url>
Tableau d’URL d’images de référence pour le mode fusion multi-références. Prend en charge 1–7 images.Fournir ce champ déclenche le mode fusion multi-références.
string
ID de la tâche source pour l’extension vidéo. Fournir ce champ déclenche le mode extension.La tâche source doit appartenir à l’utilisateur courant, utiliser le modèle
pixverse-v6 et avoir le statut completed.Modes de génération
L’adaptateur dispatch automatiquement vers le mode de génération correspondant selon les champs de la requête. La correspondance se fait par ordre de priorité, le premier qui correspond gagne.| Mode | Condition de déclenchement | Description |
|---|---|---|
| Texte vers vidéo | Aucun champ d’image ou d’extension | Génère la vidéo à partir du prompt |
| Image vers vidéo | image_urls avec une image | Utilise la première image en entrée |
| Transition premier/dernier frame | first_frame_image et last_frame_image ensemble | Génère une transition fluide entre deux frames |
| Fusion multi-références | Tableau img_references fourni | Fusionne 1–7 images de référence en une vidéo |
| Extension vidéo | extend_from_task_id fourni | Continue à partir d’une tâche Pixverse terminée |
Toutes les entrées d’image acceptent uniquement des URL HTTP/HTTPS publiques. base64 et Data URI ne sont pas pris en charge. Si vous n’avez que des images locales, téléversez-les d’abord vers un stockage objet et passez l’URL.
Règles des paramètres
| Limite | Description |
|---|---|
| Durée vidéo | 1 ≤ duration ≤ 15 secondes ; mode transition uniquement 5 ou 8 secondes |
| Résolution | Seules 360p, 540p, 720p, 1080p sont prises en charge |
| Rapport hauteur/largeur | size n’est effectif qu’en mode texte vers vidéo et fusion multi-références |
| Longueur de prompt | prompt jusqu’à 5000 caractères, negative_prompt jusqu’à 2048 caractères |
| Image vers vidéo | image_urls n’utilise que la première image |
| Transition | first_frame_image et last_frame_image doivent être fournis ensemble |
| Mode de mouvement | pixverse-v6 ne prend en charge que normal |
| Fusion multi-références | img_references prend en charge 1–7 images |
| Extension vidéo | extend_from_task_id doit pointer vers une tâche pixverse-v6 completed de l’utilisateur courant |
Réponse
integer
Code de statut de la réponse.
200 en cas de succès.array
Récupération du résultat de la tâche
La génération vidéo est une tâche asynchrone. Après soumission, untask_id est retourné. Utilisez l’endpoint Obtenir le statut de la tâche pour interroger la progression et le résultat.
cURL
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01JWXXXXXXXXXXXX \
--header 'Authorization: Bearer <token>'
completed ou failed.
Exemple : succès
{
"code": 200,
"data": {
"id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
"status": "completed",
"progress": 100,
"cost": 0.2,
"credits_cost": 2,
"created": 1779958948,
"completed": 1779958999,
"estimated_time": 100,
"actual_time": 51,
"result": {
"videos": [
{
"url": ["https://upload.apimart.ai/f/video/xxxx.mp4"],
"expires_at": 1780045399
}
]
}
}
}
data.result.videos[0].url[0]. Le champ url est lui-même un tableau. Les liens vidéo expirent généralement après 24 heures — téléchargez ou transférez-les rapidement.
Exemple : échec
{
"code": 200,
"data": {
"id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
"status": "failed",
"progress": 100,
"cost": 0,
"credits_cost": 0,
"created": 1779958948,
"completed": 1779958960,
"error": {
"code": "task_failed",
"message": "pixverse error 400063: moderation failed",
"type": "task_failed"
}
}
}
cost vaut généralement 0. La cause de l’erreur se trouve dans data.error.message.
Cas d’utilisation
Cas 1 : Texte vers vidéo
{
"model": "pixverse-v6",
"prompt": "A neon-lit alley in Tokyo at night, light rain, anamorphic lens flare",
"size": "21:9",
"resolution": "720p",
"duration": 8,
"seed": 42,
"audio": true
}
Cas 2 : Image vers vidéo
{
"model": "pixverse-v6",
"prompt": "Camera slowly zooms in, gentle wind moves the leaves",
"image_urls": ["https://example.com/first-frame.jpg"],
"resolution": "540p",
"duration": 5
}
Cas 3 : Transition premier/dernier frame
{
"model": "pixverse-v6",
"prompt": "transform smoothly from a puppy to a cat",
"first_frame_image": "https://example.com/puppy.jpg",
"last_frame_image": "https://example.com/cat.jpg",
"resolution": "540p",
"duration": 5,
"motion_mode": "normal"
}
Cas 4 : Fusion multi-références
{
"model": "pixverse-v6",
"prompt": "A girl wearing the outfit from image 2, holding the cat from image 3",
"img_references": [
"https://example.com/character.jpg",
"https://example.com/outfit.jpg",
"https://example.com/cat.jpg"
],
"size": "9:16",
"resolution": "720p",
"duration": 5
}
Cas 5 : Extension vidéo
{
"model": "pixverse-v6",
"prompt": "the character now walks into a forest",
"extend_from_task_id": "task_01JWXXXXXXXXXXXX",
"resolution": "540p",
"duration": 5
}