curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "grok-imagine-video-1.0-i2v",
"prompt": "La personne commence à danser",
"image_urls": [
"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png"
],
"duration": 6,
"quality": "480p"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "grok-imagine-video-1.0-i2v",
"prompt": "La personne commence à danser",
"image_urls": ["https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png"],
"duration": 6,
"quality": "480p"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'grok-imagine-video-1.0-i2v',
prompt: 'La personne commence à danser',
image_urls: ['https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png'],
duration: 6,
quality: '480p'
})
};
fetch('https://api.evolink.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'grok-imagine-video-1.0-i2v',
'prompt' => 'La personne commence à danser',
'image_urls' => [
'https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png'
],
'duration' => 6,
'quality' => '480p'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"grok-imagine-video-1.0-i2v\",\n \"prompt\": \"La personne commence à danser\",\n \"image_urls\": [\n \"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png\"\n ],\n \"duration\": 6,\n \"quality\": \"480p\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/videos/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"grok-imagine-video-1.0-i2v\",\n \"prompt\": \"La personne commence à danser\",\n \"image_urls\": [\n \"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png\"\n ],\n \"duration\": 6,\n \"quality\": \"480p\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/videos/generations")
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 = "{\n \"model\": \"grok-imagine-video-1.0-i2v\",\n \"prompt\": \"La personne commence à danser\",\n \"image_urls\": [\n \"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png\"\n ],\n \"duration\": 6,\n \"quality\": \"480p\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "grok-imagine-video-1.0-i2v",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 120
},
"type": "video",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 4.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: grok-imagine-video-1.0-i2v",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Grok Imagine 1.0 Image vers Vidéo
- Le modèle Grok Imagine 1.0 (grok-imagine-video-1.0-i2v) prend en charge le mode image vers vidéo
image_urlsest obligatoire et prend en charge1~7images par requête ; l’omettre ou en transmettre plus de7renvoie une erreur. Pour le texte vers vidéo, utilisez grok-imagine-video-1.0-t2v- Mode de traitement asynchrone, utiliser l’ID de tâche retourné pour interroger
- Les liens vidéo générés sont valides pendant 24 heures, veuillez les sauvegarder rapidement
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "grok-imagine-video-1.0-i2v",
"prompt": "La personne commence à danser",
"image_urls": [
"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png"
],
"duration": 6,
"quality": "480p"
}
'import requests
url = "https://api.evolink.ai/v1/videos/generations"
payload = {
"model": "grok-imagine-video-1.0-i2v",
"prompt": "La personne commence à danser",
"image_urls": ["https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png"],
"duration": 6,
"quality": "480p"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'grok-imagine-video-1.0-i2v',
prompt: 'La personne commence à danser',
image_urls: ['https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png'],
duration: 6,
quality: '480p'
})
};
fetch('https://api.evolink.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'grok-imagine-video-1.0-i2v',
'prompt' => 'La personne commence à danser',
'image_urls' => [
'https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png'
],
'duration' => 6,
'quality' => '480p'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"grok-imagine-video-1.0-i2v\",\n \"prompt\": \"La personne commence à danser\",\n \"image_urls\": [\n \"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png\"\n ],\n \"duration\": 6,\n \"quality\": \"480p\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/videos/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"grok-imagine-video-1.0-i2v\",\n \"prompt\": \"La personne commence à danser\",\n \"image_urls\": [\n \"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png\"\n ],\n \"duration\": 6,\n \"quality\": \"480p\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/videos/generations")
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 = "{\n \"model\": \"grok-imagine-video-1.0-i2v\",\n \"prompt\": \"La personne commence à danser\",\n \"image_urls\": [\n \"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png\"\n ],\n \"duration\": 6,\n \"quality\": \"480p\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757169743,
"id": "task-unified-1757169743-7cvnl5zw",
"model": "grok-imagine-video-1.0-i2v",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 120
},
"type": "video",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 4.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: grok-imagine-video-1.0-i2v",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Autorisations
##Toutes les API nécessitent une authentification Bearer Token##
Obtenir une clé API :
Visitez la Page de gestion des clés API pour obtenir votre clé API
Ajouter à l'en-tête de requête :
Authorization: Bearer YOUR_API_KEY
Corps
Nom du modèle
grok-imagine-video-1.0-i2v "grok-imagine-video-1.0-i2v"
Prompt de description vidéo (obligatoire, ne peut pas être vide)
"La personne commence à danser"
Liste d'URLs d'images de référence (obligatoire)
Exigences :
- Prend en charge
1~7images par requête ; l'omettre ou en transmettre plus de7est rejeté - Taille de l'image : max
10MBpar image - Formats pris en charge : JPEG, PNG, WebP
1 - 7 elements[
"https://cdn.evolink.ai/Model-Example/GrokImagine1.5/generated-image.png"
]
Durée de la vidéo (secondes), nombre entier quelconque entre 1 et 15 secondes
1 <= x <= 156
Rapport d'aspect (effectif uniquement en mode multi-images ; en mode image unique, la taille de la vidéo suit l'image d'entrée)
Options :
16:9: Paysage (par défaut)9:16: Portrait1:1: Carré3:2: Paysage 3:22:3: Portrait 2:34:3: Paysage 4:33:4: Portrait 3:4
16:9, 9:16, 1:1, 3:2, 2:3, 4:3, 3:4 "16:9"
Résolution de la vidéo, 480p par défaut
Description :
480p: Définition standard, valeur par défaut720p: Haute définition
480p, 720p "480p"
URL de rappel HTTPS après l'achèvement de la tâche
Moment du rappel :
- Déclenché lorsque la tâche est terminée, échouée ou annulée
- Envoyé après confirmation de la facturation
Restrictions de sécurité :
- Seul le protocole HTTPS est pris en charge
- Rappel vers les IP internes interdit (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- La longueur de l'URL ne doit pas dépasser
2048caractères
Mécanisme de rappel :
- Délai d'expiration :
10secondes - Maximum
3tentatives en cas d'échec (après1/2/4secondes) - Le format de réponse correspond à l'API d'interrogation de tâche
- Code de statut 2xx = succès, les autres déclenchent une nouvelle tentative
"https://your-domain.com/webhooks/video-task-completed"
Réponse
Tâche vidéo créée avec succès
Horodatage de création de la tâche
1757169743
ID de tâche
"task-unified-1757169743-7cvnl5zw"
Nom du modèle réellement utilisé
"grok-imagine-video-1.0-i2v"
Type de tâche spécifique
video.generation.task Pourcentage de progression de la tâche (0-100)
0 <= x <= 1000
Statut de la tâche
pending, processing, completed, failed "pending"
Informations détaillées de la tâche vidéo
Show child attributes
Show child attributes
Type de sortie de la tâche
text, image, audio, video "video"
Informations d'utilisation et de facturation
Show child attributes
Show child attributes