curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-video-1.5",
"prompt": "A cinematic product shot with a slow camera push-in",
"video_generation_mode": "text_to_video",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "grok-video-1.5",
"prompt": "A cinematic product shot with a slow camera push-in",
"video_generation_mode": "first_frame_image_to_video",
"image": "https://example.com/first-frame.jpg",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
},
)
response.raise_for_status()
print(response.json()["id"])
{
"id": "video_abc123def456",
"object": "generation.task",
"model": "grok-video-1.5",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
Grok Video
Grok Video 1.5 Генерация
Генерация видео из текста, первого кадра или референсов
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-video-1.5",
"prompt": "A cinematic product shot with a slow camera push-in",
"video_generation_mode": "text_to_video",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "grok-video-1.5",
"prompt": "A cinematic product shot with a slow camera push-in",
"video_generation_mode": "first_frame_image_to_video",
"image": "https://example.com/first-frame.jpg",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
},
)
response.raise_for_status()
print(response.json()["id"])
{
"id": "video_abc123def456",
"object": "generation.task",
"model": "grok-video-1.5",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
В материковом Китае используйте
https://toapis.cn вместо https://toapis.com в примерах.grok-video-1.5 можно указать один из трёх режимов ниже. Режим доступен только после включения на совместимом канале. Успешный расчёт цены не гарантирует наличие доступного канала генерации.
Используйте публичные URL изображений с протоколом
http:// или https://. Локальные файлы сначала загрузите через API загрузки изображений. Не передавайте base64 напрямую. JSON с URL загруженных файлов подходит для поддерживаемых каналов; некоторые каналы не принимают бинарные файлы через multipart.Режимы генерации
| Режим | Входные данные |
|---|---|
text_to_video | Только промпт, без изображений |
first_frame_image_to_video | Ровно один первый кадр |
reference_images_to_video | 1-7 референсов, включая один референс |
video_generation_mode. Без него сохраняется прежняя обработка одного изображения: один элемент reference_images не включает режим референсов. В текстовом режиме изображения запрещены.
Авторизация
string
обязательно
Передавайте API-ключ как Bearer Token.
Authorization: Bearer YOUR_API_KEY
Параметры запроса
string
по умолчанию:"grok-video-1.5"
обязательно
Используйте публичное имя
grok-video-1.5, не заменяйте его именем модели поставщика.string
Опишите сцену и движение. Обязателен для текстового режима и режима референсов. В некоторых старых запросах с первым кадром его можно опустить; другие запросы с первым кадром могут требовать его. В новых интеграциях передавайте непустой промпт.
string
Необязателен для старых клиентов. Выберите значение по фактическому вводу:
text_to_video для текста без изображений, first_frame_image_to_video для одного первого кадра через image или input_reference, reference_images_to_video для 1-7 reference_images. Режим, не соответствующий медиаполям, отклоняется. Для одного референса явно укажите режим референсов, чтобы отличить его от прежнего ввода первого кадра.string
URL первого кадра. Обязателен в режиме первого кадра, если не используется
input_reference. Не передавайте в текстовом режиме и режиме только референсов. Обработка первого кадра зависит от канала.string
Строковый псевдоним URL первого кадра. Используйте его либо
image; не передавайте разные значения в обоих полях. Для новых запросов с этим полем также явно указывайте режим.array
1-7 URL референсов: массив строк или объектов вида
{"url":"https://example.com/reference.jpg"}. Обязателен для режима референсов. Старые псевдонимы image_urls и images поддерживаются, но не передавайте несколько списков с разным содержимым.integer
Целое число секунд. Указывайте явно. Поддерживается 1-15 секунд.
string
Для режима референсов используйте
480p или 720p. Текстовый режим и первый кадр могут использовать 1080p, если канал это поддерживает. В примерах явно указано 720p.string
Соотношение сторон, например
16:9. Обычно доступны 1:1, 16:9, 9:16, 3:2, 2:3; точный набор зависит от канала.Ограничения совместимости
Некоторые каналы обрабатывают один первый кадр и один референс одинаково. Название режима не гарантирует строгую фиксацию первого кадра. Включение режима не отменяет ограничения протокола. Неподдерживаемый ввод может быть отклонён до отправки; без подходящего включённого канала генерация невозможна.Стоимость
Стоимость видео определяется текущими настройками аккаунта и SKU. Проверьте текущие цены и авторизованный расчёт для ваших параметров. Эта страница не гарантирует фиксированную цену за секунду.Создание задачи
В примерах явно заданы режим, длительность и разрешение. Замените URL изображений доступными адресами.curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-video-1.5",
"prompt": "A cinematic product shot with a slow camera push-in",
"video_generation_mode": "text_to_video",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "grok-video-1.5",
"prompt": "A cinematic product shot with a slow camera push-in",
"video_generation_mode": "first_frame_image_to_video",
"image": "https://example.com/first-frame.jpg",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
},
)
response.raise_for_status()
print(response.json()["id"])
Пример с референсами
{
"model": "grok-video-1.5",
"prompt": "A cinematic product shot with a slow camera push-in",
"video_generation_mode": "reference_images_to_video",
"reference_images": [
"https://example.com/reference-a.jpg",
"https://example.com/reference-b.jpg"
],
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}
Ответ
string
ID задачи для опроса статуса.
string
Тип объекта:
generation.task.string
Публичное имя модели.
string
Статус:
queued, in_progress, completed или failed.{
"id": "video_abc123def456",
"object": "generation.task",
"model": "grok-video-1.5",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
Проверка статуса
Передайте полученныйid в API статуса видео.