> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ttapi.io/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Send API requests to https://api.ttapi.io with the TT-API-KEY header. Midjourney account hosting uses https://hold.ttapi.io. Claude Code uses https://cc.ttapi.io.
> Most generation endpoints are asynchronous. The submit response returns a job id. Poll that product's fetch endpoint, or pass a webhook on the submit request. A fetch call does not start a new generation.
> 1 USD = 100 quota. Check the pricing page for that product before estimating cost.
> This file lists the English docs. Follow every /_llms/ link recursively for the API reference, Chinese, and Russian. Open a page's .md URL for the endpoint schema.

# Видео по ключевым кадрам

> Видео по ключевым кадрам — закрепление изображений в выбранные моменты времени, с возможностью комбинации с первым и последним кадром

Это эндпоинт **видео API Grok** для генерации видео по ключевым кадрам. Закрепите изображения в выбранные моменты времени внутри видео через `keyframes`. Модель генерирует переходы между вашими опорными кадрами. Можно комбинировать с `first_frame` и `last_frame`:

* **Первый кадр + ключевые кадры**: указание начала и промежуточных кадров
* **Ключевые кадры + последний кадр**: указание промежуточных кадров и конца видео
* **Первый кадр + ключевые кадры + последний кадр**: полный контроль над началом, промежуточными кадрами и концом видео

Поддерживается моделями `grok-imagine-video-1.5-fast` и `grok-imagine-video-1.5`.

<Callout type="warning">
  **Внимание**: NSFW-контент запрещён. Одиночный или случайный сбой модерации не повлечёт никаких расходов. Однако повторные сбои модерации могут привести к списанию средств.
</Callout>

<Callout type="info">
  **Ограничения ключевых кадров**: максимум 4 ключевых кадра на запрос; `timestamp_s` должен быть больше 0 и меньше длительности видео; между ключевыми кадрами должно быть не менее 1/3 секунды.
</Callout>


## OpenAPI

````yaml openapi/ru/grok-keyframe-to-video.json POST /grok/generations
openapi: 3.1.0
info:
  title: Видео Grok - Видео по ключевым кадрам DOCS
  version: 1.0.0
  description: >-
    API генерации видео Grok по ключевым кадрам — закрепление изображений в
    выбранные моменты времени внутри видео через keyframes, с возможностью
    комбинации с first_frame и last_frame.
servers:
  - url: https://api.ttapi.io
security: []
paths:
  /grok/generations:
    post:
      description: >-
        Видео по ключевым кадрам — закрепление изображений в выбранные моменты
        времени, с возможностью комбинации с первым и последним кадром
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KeyframeToVideoRequest'
            example:
              prompt: <string>
              model: grok-imagine-video-1.5-fast
              aspect_ratio: '16:9'
              video_length: '10'
              resolution_name: 720p
              first_frame: https://example.com/first_frame.jpg
              keyframes:
                - image:
                    url: https://example.com/keyframe1.jpg
                  timestamp_s: 3
                - image:
                    url: https://example.com/keyframe2.jpg
                  timestamp_s: 6
              last_frame: https://example.com/last_frame.jpg
              hook_url: https://example.com/callback
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        '400':
          $ref: '#/components/responses/400Response'
        '401':
          $ref: '#/components/responses/401Response'
      security:
        - CustomApiKey: []
components:
  schemas:
    KeyframeToVideoRequest:
      type: object
      description: Параметры запроса генерации видео по ключевым кадрам
      properties:
        prompt:
          type: string
          description: >-
            Промпт для управления движением и камерой между ключевыми кадрами.
            Необязательный.
        model:
          type: string
          description: Название модели.
          enum:
            - grok-imagine-video-1.5-fast
            - grok-imagine-video-1.5
          default: grok-imagine-video-1.5-fast
          example: grok-imagine-video-1.5-fast
        aspect_ratio:
          type: string
          default: '16:9'
          enum:
            - '2:3'
            - '3:2'
            - '1:1'
            - '9:16'
            - '16:9'
          description: Соотношение сторон видео
        video_length:
          type: string
          default: '10'
          description: >-
            Длительность видео в секундах. `grok-imagine-video-1.5-fast`
            диапазон: от 6 до 30 (6 сек и 10 сек — стандартная длительность; 7
            сек и 11 сек не поддерживаются); `grok-imagine-video-1.5` диапазон:
            от 1 до 15.
        resolution_name:
          type: string
          default: 720p
          enum:
            - 480p
            - 720p
            - 1080p
          description: 'Разрешение вывода. Доступные варианты: 480p, 720p.'
        first_frame:
          type: string
          description: >-
            URL изображения первого кадра. Используется для строгого указания
            первого кадра видео. Можно комбинировать с keyframes и last_frame.
        keyframes:
          type: array
          description: >-
            Массив ключевых кадров. Каждый элемент содержит URL изображения и
            соответствующую временную метку в секундах. Максимум 4 ключевых
            кадра. `timestamp_s` должен быть больше 0 и меньше длительности
            видео; между ключевыми кадрами должно быть не менее 1/3 секунды.
          maxItems: 4
          items:
            type: object
            properties:
              image:
                type: object
                description: Изображение ключевого кадра
                properties:
                  url:
                    type: string
                    description: URL изображения ключевого кадра
                required:
                  - url
              timestamp_s:
                type: number
                description: >-
                  Временная метка ключевого кадра в секундах. Должна быть больше
                  0 и меньше длительности видео.
            required:
              - image
              - timestamp_s
        last_frame:
          type: string
          description: >-
            URL изображения последнего кадра. Используется для строгого указания
            последнего кадра видео. Можно комбинировать с keyframes и
            first_frame. Когда first_frame и last_frame используют одно и то же
            изображение, создаётся эффект зацикливания (loop).
        hook_url:
          type: string
          description: >-
            Адрес обратного вызова URL. Когда задача будет выполнена или не
            выполнена, на этот адрес будут отправлены уведомления. Структура
            данных уведомления соответствует структуре <a href="fetch"
            target="_self">получение результата</a>. Если не установлено, вам
            необходимо вызвать интерфейс <a href="fetch"
            target="_self">получение результата</a> для запроса результата.
          example: https://example.com/callback
      required:
        - prompt
        - keyframes
  responses:
    SuccessResponse:
      description: Запрос выполнен успешно
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: SUCCESS
              message:
                type: string
                example: success
              data:
                type: object
                example:
                  jobId: jobId
            required:
              - status
              - message
              - data
    400Response:
      description: Ошибка параметров
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: FAILED
              message:
                type: string
                example: '"prompt" cannot be empty.'
              data:
                type: object
            required:
              - status
              - message
    401Response:
      description: Ошибка авторизации
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: FAILED
              message:
                type: string
                example: Wrong TT-API-KEY or email is not activated.
            required:
              - status
              - message
  securitySchemes:
    CustomApiKey:
      type: apiKey
      in: header
      name: TT-API-KEY
      description: >-
        Вы можете получить API-ключ в <a href='https://dashboard.ttapi.io'
        target='_blank'>панель управления TTAPI</a>.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.