Skip to content

Grok Imagine — Изображение в видео

POST /videos/grok-video-i2v

Генерация видео Grok Imagine из изображения. Источник картинок задаётся одним из двух способов: либо image_urls, либо task_id + index из прошлой генерации grok-imagine/text-to-image. Указывать оба способа одновременно нельзя. В prompt можно ссылаться на референсы через @image1, @image2 и т.д. Лимит: 5 запросов/мин.

Базовый URL: https://api.aihere.ru/api/v1
Авторизация: Authorization: Bearer <API-ключ>
Rate-limit: 5 запросов/мин

Параметры

ПолеТипОбяз.Описание
promptstringдамин. длина: 1; макс. длина: 5000; ссылки на референсы через @image1, @image2
image_urlsarray (URL)до 7 элементов; источник картинок (нельзя вместе с task_id)
task_idstringID прошлой генерации grok-imagine/text-to-image (нельзя вместе с image_urls)
indexintegerот 0 до 5; индекс картинки из результата task_id
modestringзначения: fun, normal, spicy; spicy недоступен с внешними image_urls; по умолчанию: normal
durationintegerот 6 до 30; по умолчанию: 6
resolutionstringзначения: 480p, 720p, 1080p; для 1080p допустима только одна картинка; по умолчанию: 720p
aspect_ratiostringзначения: 2:3, 3:2, 1:1, 16:9, 9:16; только для multi-image режима

Примеры

cURL

bash
curl -X POST "https://api.aihere.ru/api/v1/videos/grok-video-i2v" \
  -H "Authorization: Bearer $AIHERE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Callback-Url: https://myapp.example.com/api/aihere-callback" \
  -d '{
  "prompt": "Оживи сцену с @image1, плавное движение камеры",
  "image_urls": ["https://cdn.example.com/ref1.jpg"],
  "mode": "normal",
  "duration": 6,
  "resolution": "720p"
}'

Python

python
import requests

payload = {
    "prompt": "Оживи сцену с @image1, плавное движение камеры",
    "image_urls": ["https://cdn.example.com/ref1.jpg"],
    "mode": "normal",
    "duration": 6,
    "resolution": "720p"
}

resp = requests.post(
    "https://api.aihere.ru/api/v1/videos/grok-video-i2v",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        # Опционально: вебхук о завершении задачи
        # "X-Callback-Url": "https://myapp.example.com/api/aihere-callback",
    },
    json=payload,
    timeout=60,
)
resp.raise_for_status()
task_id = resp.json()["task_id"]
print(f"Задача №{task_id} поставлена")

JavaScript

javascript
const resp = await fetch("https://api.aihere.ru/api/v1/videos/grok-video-i2v", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
    // Опционально: "X-Callback-Url": "https://myapp.example.com/api/aihere-callback",
  },
  body: JSON.stringify({
  "prompt": "Оживи сцену с @image1, плавное движение камеры",
  "image_urls": ["https://cdn.example.com/ref1.jpg"],
  "mode": "normal",
  "duration": 6,
  "resolution": "720p"
}),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}: ${await resp.text()}`);
const { task_id } = await resp.json();
console.log("Задача №" + task_id + " поставлена");

PHP

php
$payload = json_decode('{"prompt": "Оживи сцену с @image1, плавное движение камеры", "image_urls": ["https://cdn.example.com/ref1.jpg"], "mode": "normal", "duration": 6, "resolution": "720p"}', true);

$ch = curl_init('https://api.aihere.ru/api/v1/videos/grok-video-i2v');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $apiKey",
        'Content-Type: application/json',
        // Опционально: 'X-Callback-Url: https://myapp.example.com/api/aihere-callback',
    ],
]);
$resp = json_decode(curl_exec($ch), true);
curl_close($ch);
echo "Задача №{$resp['task_id']} поставлена";

Ответ 200

ID генерации

json
{
  "task_id": 123
}

Ошибки

КодПричина
429Превышен rate-limit
502Ошибка провайдера генерации
503Провайдер недоступен или сбой сервиса баланса (списанные средства возвращаются)
422Ошибка валидации тела запроса (detail содержит список полей)
401Нет или невалидный API-ключ