models

Google: Veo 3.1 Lite

Markdown · JSON

Google: Veo 3.1 Lite

Veo 3.1 Lite генерирует видео со встроенным звуком по текстовому описанию или начальному изображению. Документированный процесс Lite выдаёт один клип длительностью 4, 6 или 8 секунд, в горизонтальном или вертикальном кадре, с особыми ограничениями, отличающимися от Veo 3.1 и Fast.

О модели

Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.

Veo 3.1 Lite — модель Lite в линейке генерации видео Veo 3 от Google. Она синтезирует видео со звуком по описанию на естественном языке или исходному изображению. Результат — созданный клип, а не текстовый анализ существующей записи. Карточка Lite ссылается на Veo 3 в части архитектуры, обучающих материалов и известных ограничений, тогда как документация именно Lite задаёт собственные функции и пределы генерации.

Указанная архитектура использует латентную диффузию временных представлений аудио и пространственно-временных представлений видео. Базовая модель обучалась на аудио, видео и изображениях с подписями разной подробности и отфильтрованными материалами без дубликатов. Это объясняет назначение совместной генерации изображения и звука. Описание не раскрывает отдельное число параметров Lite и не подтверждает физическую достоверность каждого движения. Для практической сцены решайте видимое действие и соответствующий звук вместе.

Точная документация Lite задаёт предел текста 1 024 токена и одно выходное видео. Столбец Lite в руководстве генерации перечисляет длительности 4, 6 и 8 секунд; по умолчанию 720p, а 1080p требует восьмисекундный клип. Горизонтальное соотношение 16:9 используется по умолчанию, также указан вертикальный 9:16; документирована частота 24 кадра/с. Встроенный звук в этом процессе всегда включён. Значения относятся к названному процессу Lite разработчика, а не иной версии Veo или отдельно измеренному ответу приложения.

Lite не поддерживает результат 4K и продление видео. В таблице параметров многореференсная функция referenceImages и видео для продления также отмечены как недоступные в столбце Lite. Начальное изображение может задать первый кадр; таблица перечисляет lastFrame вместе с начальным изображением для перехода. Различайте этот способ управления кадрами и смешивание нескольких референсов стиля или объекта. Настройки генерации людей зависят от режима: таблица Lite указывает allow_all для текста и allow_adult для генерации по изображению и интерполяции; региональные правила могут дополнительно ограничивать профиль. Выберите начальное изображение под действительно нужную первую сцену, подготовив объект, кадрирование и видимые детали до запроса движения.

Для генерации по тексту опишите объект, действие, окружение и нужный стиль. При необходимости добавьте положение и движение камеры, кадрирование, фокус и свет. Авторская товарная сцена может удерживать предмет в центре, пока камера приближается к детали материала, а окружающий свет мягко меняется. Задайте начальное состояние, главное действие и финальный момент, чтобы короткий клип завершал одну связную идею. Длинная коллекция несвязанных действий — другая задача, чем сосредоточенный план.

Для генерации по изображению предоставьте чёткий начальный кадр и объясните, что движется, а что остаётся стабильным. Отдельно задайте движение объекта и камеры. При ограничении последним кадром подготовьте совместимую конечную композицию и опишите переход. Проверяйте результат, не предполагая, что запрошенные идентичность, положение или форма полностью неизменны на протяжении ролика. Указанная карточка модели относит полное постоянство сложных сцен и сложного движения к нерешённым задачам.

Руководство по промптам поддерживает явные указания диалога, эффектов и атмосферы. Заключите точную речь в кавычки, обозначьте говорящего и опишите звуки в связи с действием. Звуковой эффект и фоновая атмосфера не должны смешиваться с репликой. Английский документирован как полностью поддерживаемый язык промптов, остальные языки в этом руководстве не оценены. Проверяйте слышимые слова, тайминг и качество звука как часть того же материала, не считая аудио гарантированно точным воспроизведением промпта.

Процесс разработчика асинхронный: запрос генерации возвращает операцию, а готовый результат получают после сообщения о завершении. Сохраните идентификатор операции и проверьте полученный клип. Руководство описывает хранение у разработчика два дня и маркировку SynthID, поэтому сохраняемый материал должен включать скачанный результат, промпт, исходные изображения и настройки. Seed может улучшить повторяемость, но не гарантирует детерминированность. Проверяйте постоянство объекта, действие, кадрирование, звук и конечную точку сцены до монтажа; завершённая обработка сама не доказывает выполнение творческих требований.

Ailoot Ultra · Видео POST /v1/videos google/veo-3.1-lite

google/veo-3.1-lite

Google /google/veo-3.1-lite

Начало

Превратите описание сцены в видео длительностью 4, 6 или 8 секунд с разрешением 720p.

  • Покажите товар в движении
  • Создайте сцену, задающую место действия
  • Попробуйте короткое движение камеры
Допустимые входные данные
Текст · Картинки
Результаты
Видео

Доступно в Ailoot · входные данные и методы

Ailoot Ultra · Видео POST /v1/videos
Входные данные
text, image
Результат
video
Выходной формат
mp4
Число результатов
До 4 выходs
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
google/veo-3.1-lite
По умолчанию—
ПолеpromptТипstringТребованиеОбязательноЗначения и ограничения
Минимальная длина: 1
Максимум байтов: 10 000
Единица: байты UTF8
По умолчанию—
ПолеdurationТипintegerТребованиеОбязательноЗначения и ограничения
4, 6, 8
Единица: секунды
По умолчанию—
ПолеresolutionТипstringТребованиеОбязательноЗначения и ограничения
720p
По умолчанию—
Полеaspect_ratioТипstringТребованиеОбязательноЗначения и ограничения
16:9, 9:16
По умолчанию—
Полеgenerate_audioТипbooleanТребованиеОбязательноЗначения и ограничения
false
По умолчанию—
Полеframe_imagesТипarrayТребованиеНеобязательноЗначения и ограничения
Условия: Не передавайте для text_to_video. Если поле передано: ровно один элемент {"type":"image_url","image_url":{"url":"<actual HTTPS URL>"},"frame_type":"first_frame"}; элемент содержит только type,image_url,frame_type; image_url содержит только url. Дополнительные и повторяющиеся ключи запрещены. Допустимы только duration=4,resolution="720p",aspect_ratio="16:9",generate_audio=false. URL должен разбираться со схемой https, непустым именем хоста, без userinfo и буквального #; подписанная строка запроса и закодированный путь сохраняются. Исходная реализация не проверяет MIME-тип входных данных, размер файла или размеры изображения в пикселях.
По умолчанию—
Сочетания входных материалов

Из текста в видео · Обязательно: prompt

Из изображения в видео · Обязательно: prompt, frame_images

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрcontent_typeКонтрактapplication/json
ПараметрrequiredКонтрактmodel, prompt, duration, resolution, aspect_ratio, generate_audio
Параметрother_optionsКонтрактfalse
ПараметрresolutionКонтракт720p
Параметрprompt_max_bytesКонтракт10000
ПараметрdurationКонтракт4, 6, 8
Параметрaspect_ratioКонтракт16:9, 9:16
Параметрgenerate_audioКонтрактfalse
Параметрmaterial_typesКонтрактtext, image
ПараметрparametersКонтракт{"name":"model","type":"string","required":true,"default_known":false,"default":null,"enum_known":true,"enum":["google/veo-3.1-lite"],"availability":"source_interface"}, {"name":"prompt","type":"string","required":true,"default_known":false,"default":null,"enum_known":false,"enum":null,"availability":"source_interface","min_length":1,"maximum_bytes":10000,"maximum_length":null,"unit":"байты UTF8"}, {"name":"duration","type":"integer","required":true,"default_known":false,"default":null,"enum_known":true,"enum":[4,6,8],"availability":"source_interface","unit":"секунды"}, {"name":"resolution","type":"string","required":true,"default_known":false,"default":null,"enum_known":true,"enum":["720p"],"availability":"source_interface"}, {"name":"aspect_ratio","type":"string","required":true,"default_known":false,"default":null,"enum_known":true,"enum":["16:9","9:16"],"availability":"source_interface"}, {"name":"generate_audio","type":"boolean","required":true,"default_known":false,"default":null,"enum_known":true,"enum":[false],"availability":"source_interface"}, {"name":"frame_images","type":"array","required":false,"default_known":false,"default":null,"enum_known":false,"enum":null,"availability":"source_interface","conditions":"Не передавайте для text_to_video. Если поле передано: ровно один элемент {\"type\":\"image_url\",\"image_url\":{\"url\":\"<actual HTTPS URL>\"},\"frame_type\":\"first_frame\"}; элемент содержит только type,image_url,frame_type; image_url содержит только url. Дополнительные и повторяющиеся ключи запрещены. Допустимы только duration=4,resolution=\"720p\",aspect_ratio=\"16:9\",generate_audio=false. URL должен разбираться со схемой https, непустым именем хоста, без userinfo и буквального #; подписанная строка запроса и закодированный путь сохраняются. Исходная реализация не проверяет MIME-тип входных данных, размер файла или размеры изображения в пикселях."}

Псевдонимы метода: /v1/videos/generations, /videos, /videos/generations

Жизненный цикл: submit_once_poll_original

GET /v1/videos/{request_id}

GET /v1/videos/generations/{request_id}

GET /v1/videos/{request_id}/content

GET /v1/videos/generations/{request_id}/content

Создайте один раз и сохраните возвращённый ID.

Проверяйте исходный статус; сохраняйте каждый готовый ресурс и его длительность.

Тарифы

Как рассчитывается итоговая плата

Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим
Не указано При выборе быстрого режима
Режим flex
Не указано При выборе режима flex
Максимальная интенсивность рассуждений
Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

Оценочные ставки для сравнения

Цены по конфигурациям

Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.

КонфигурацияШкала ставокПрогноз количестваСоздавать аудиоРазрешениеРасчётная единицаУсловия расчётаПлата
КонфигурацияБазовые тарифы на токеныШкала ставокБазовая ставкаПрогноз количества—Создавать аудио—Разрешение—Расчётная единица—Условия расчёта—Плата
Вход · Входные токены · Оценка только для сравнения — / 1K токенов
Выход · Выходные токены · Оценка только для сравнения — / 1K токенов
Вход · Чтение кэша · Оценка только для сравнения — / 1K токенов
Вход · Запись в кэш · Оценка только для сравнения — / 1K токенов
Вход · Запись в кэш, 1 час · Оценка только для сравнения — / 1K токенов
КонфигурацияЦена видеоШкала ставок—Прогноз количества—Создавать аудио—Разрешение—Расчётная единицаза секунду видеоУсловия расчётааудио: with_audioПлата
Выход · Цена видео · Оценка только для сравнения $0.16 за секунду видео
КонфигурацияЦена видеоШкала ставок—Прогноз количества—Создавать аудио—Разрешение—Расчётная единицаза секунду видеоУсловия расчётааудио: with_audio; разрешение: 720pПлата
Выход · Цена видео · Оценка только для сравнения $0.1 за секунду видео
КонфигурацияЦена видеоШкала ставок—Прогноз количества—Создавать аудио—Разрешение—Расчётная единицаза секунду видеоУсловия расчётааудио: without_audioПлата
Выход · Цена видео · Оценка только для сравнения $0.1 за секунду видео
КонфигурацияUltraШкала ставок—Прогноз количестваЗапрошенная конфигурация; только оценка.Создавать аудиоБез аудиоРазрешение720pРасчётная единицаза секунду выходного видеоУсловия расчёта—Плата
Выход · Оценочная секунда выходного видео · Оценка только для сравнения $0.06 за секунду выходного видео

Показанная ставка служит оценкой стоимости до генерации. Итоговое начисление рассчитывается по стоимости, зафиксированной для исходной генерации. Физическая длительность видео не используется как тарифицируемая величина.

КонфигурацияОриентировочная стоимость генерацииШкала ставок—Прогноз количестваОценка для одной генерацииСоздавать аудио—Разрешение—Расчётная единица—Условия расчёта—Плата
Выход · Оценочная стоимость генерации · Оценка только для сравнения $0.24 оценка до генерации

Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации.

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Сведения о справочном тарифе

Справочные шкалы модели не меняют выбор метода, расчёт стоимости или списания. Действующая плата определяется ставками выбранного метода Ailoot.

Ссылки на цены конфигураций видео

Цены по конфигурациям

Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.

КонфигурацияУсловия расчётаПлата
КонфигурацияЦена видеоУсловия расчётааудио: with_audioПлата
Выход · Цена видео $0.16 за секунду видео

Опубликованный ориентир цены для показанной конфигурации. Итоговые списания зависят от фактической оплачиваемой конфигурации.

КонфигурацияЦена видеоУсловия расчётааудио: without_audioПлата
Выход · Цена видео $0.1 за секунду видео

Опубликованный ориентир цены для показанной конфигурации. Итоговые списания зависят от фактической оплачиваемой конфигурации.

КонфигурацияЦена видеоУсловия расчётааудио: with_audio; разрешение: 720pПлата
Выход · Цена видео $0.1 за секунду видео

Опубликованный ориентир цены для показанной конфигурации. Итоговые списания зависят от фактической оплачиваемой конфигурации.

КонфигурацияЦена видеоУсловия расчётааудио: without_audio; разрешение: 720pПлата
Выход · Цена видео $0.06 за секунду видео

Опубликованный ориентир цены для показанной конфигурации. Итоговые списания зависят от фактической оплачиваемой конфигурации.

Примеры запросов

Ailoot Ultra · Видео

curlcurl · анимировать свой первый кадр
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/veo-3.1-lite", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 4, "resolution": "720p", "aspect_ratio": "16:9", "generate_audio": false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URL:?Set the actual HTTPS URL of your first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os,re
from pathlib import Path
from urllib.parse import urlsplit
image=os.environ["AILOOT_IMAGE_URL"]
try:
    parsed=urlsplit(image)
    valid=(image.startswith("https://") and parsed.scheme=="https" and bool(parsed.hostname)
           and parsed.username is None and parsed.password is None and "#" not in image
           and not any(ord(c)<32 or ord(c)==127 for c in image)
           and re.search(r"%(?![0-9A-Fa-f]{2})",image) is None)
except ValueError:
    valid=False
if not valid:
    raise SystemExit("Use your actual HTTPS image URL with a hostname, no userinfo and no fragment")
p={"model":"google/veo-3.1-lite","prompt":"The subject makes a slow, natural movement. Keep the opening composition.","duration":4,"resolution":"720p","aspect_ratio":"16:9","generate_audio":False,"frame_images":[{"type":"image_url","image_url":{"url":image},"frame_type":"first_frame"}]}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print("Keep the complete JSON, headers and original returned id. Use the existing GET status tab for that original operation, then save every completed owned output. Never resubmit an unknown generation.")
PY_RESULT

Получить и сохранить результаты

Ailoot Ultra · Видео

mp4

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/videos/generations/{request_id}/content
Проверить статус задачи
GET статус
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/$operation_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
    for x in r.get("data",[]):print(x)
PY_STATUS
Сохраните все готовые материалы
GET все готовые материалы
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
    if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
    u=urljoin("https://api.ailoot.ai",x)
    z=urlsplit(u)
    if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
    urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
  curl --fail-with-body --silent --show-error "$asset_url" \
    -H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
  index=$((index + 1))
done < asset-urls.txt
Чтение другого содержимого
GET содержимое
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/$operation_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Сохраняйте все готовые результаты

Сохраните каждое готовое видео или полученный файл; загрузите содержимое по каждому фактически полученному URL материала.

Готовый data[] содержит все подписанные ссылки содержимого, принадлежащие Ailoot. Получите данные по каждому возвращённому URL либо используйте конечную точку содержимого, указав в index фактический индекс результата. Неудачная исходная задача может вернуть charge_pending_check; проверяйте её, а не создавайте заново. Корректная аудиодорожка AAC может присутствовать даже при generate_audio=false; сохраняйте исходный MP4 целиком, включая аудио.

Если нужно проверить исходный ответ

Проверяйте существующую исходную задачу; никогда не повторяйте отправку с неизвестным исходом.

Максимум результатов: 4.

Поля ответа
ПолеТипЗначение
ПолеidТипstringЗначение—
ПолеobjectТипstringЗначение—
ПолеmodelТипstringЗначение—
ПолеstatusТипstringЗначение—
Полеdata[]Типsigned content URLЗначение—
Полеcharge_pending_checkТипbooleanЗначение—
Полеerror.codeТипstringЗначение—
Полеerror.messageТипstringЗначение—
Полеoperation_idТипstringЗначениеОтвет исходного статуса или содержимого HTTP503 result_pending_check: в id указан тот же исходный публичный ID видео.
Полеerror.typeТипstringЗначениеserver_error при HTTP503 result_pending_check.
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.
Ответ409 · video_not_readyУсловиеСодержимое исходного результата пока недоступноСледующий шагПроверяйте исходный возвращённый ID и соблюдайте Retry-After.
Ответserver_errorУсловиеВозвращённый ответ указывает, что операция или результат требуют проверкиСледующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно.
Ответ503 · result_pending_checkУсловиеGET исходного статуса или содержимого: задача не опубликована, исходная задача не имеет статуса failed/cancelled/expired, а локальное состояние — unknown либо статус исходной задачи — completed.Следующий шагСохраните исходные id и operation_id (тот же публичный ID видео), ответ и заголовки; читайте только исходный статус или содержимое. Никогда не отправляйте новый запрос на генерацию.
Ответ422 · price_unavailableУсловиеПереданный объект frame_images или его условный профиль не проходит разбор либо для полностью разобранного профиля нет готовой точной тарифной карточки.Следующий шагСохраните model, prompt, duration, resolution, aspect_ratio и generate_audio. Добавьте frame_images, содержащий ровно один элемент first_frame в указанном формате объекта. Укажите duration=4, resolution="720p", aspect_ratio="16:9" и generate_audio=false. Эта проверка выполняется до отправки запроса.

Псевдонимы

Псевдонимы моделей

Ailoot Ultra google/veo-3.1-lite

Псевдонимы путей метода

/v1/videos/generations, /videos, /videos/generations

Связанные ID для вызова

google/veo-3.1-lite

FAQ · Google: Veo 3.1 Lite
Какие входные данные и результаты доступны?

POST /v1/videos · google/veo-3.1-lite: text, image → video

Какие поля использует запрос?

POST /v1/videos · google/veo-3.1-lite: model, prompt, duration, resolution, aspect_ratio, generate_audio, frame_images

Подробнее

Подключите Ailoot к Claude Code, OpenCode, Hermes или своему приложению.

Компания и портфель её проектов

Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.

Покупайте токены со скидкой.

Скидка по подписке для регулярной работы. Промокоды — до 50% на покупку токенов.

Подписка
Выберите тариф со скидкой для своих регулярных запросов.
Промокод до 50%
Введите код при покупке. Цена пересчитается с учётом действующей акции.
Расходы в истории
Модель, токены и сумма сохраняются для каждого запроса.

Выбрать подписку · Посмотреть цены моделей

Подключайте API к продукту, который вы продаёте.

SaaS, приложения и боты — по оферте и лицензионному договору Ailoot. Для перепродажи запросите реселлерскую лицензию.

Коммерческое приложение
Встраивайте генерацию текста, картинок, видео и звука в платные функции своего сервиса.
Лицензия для реселлера
Пришлите описание проекта и схему доступа. Запросите письменные условия использования и перепродажи.
Документы на сайте
Оферта, лицензионный договор и политика обработки данных доступны до подключения.

Запросить реселлерскую лицензию · Оферта и лицензионный договор