Начало

Быстрый старт

Создадим тестовое видео по шаблону. Тестовый ключ бесплатный, токены не списываются.

1

Создайте ключ

Войдите по почте и откройте API-ключи. Нажмите «Создать ключ», режим «Тестовый». Ключ начинается с hl_test_ и показывается один раз. Положите его в переменную окружения:

export HAWKLANCE_API_KEY="hl_test_..."
2

Загрузите фото

Файл принадлежит режиму ключа: фото, загруженное тестовым ключом, не увидит боевой.

curl -X POST https://api.hawklance.ai/v1/files \
  -H "Authorization: Bearer $HAWKLANCE_API_KEY" \
  -F file=@portrait.jpg

В ответе будет id вида file_….

3

Узнайте, что нужно шаблону

Поле inputs перечисляет, что передать: сколько фото и какие варианты выбора.

curl https://api.hawklance.ai/v1/templates/novyy-obraz \
  -H "Authorization: Bearer $HAWKLANCE_API_KEY"
4

Создайте видео

curl -X POST https://api.hawklance.ai/v1/videos \
  -H "Authorization: Bearer $HAWKLANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "novyy-obraz",
    "inputs": {
      "person": [
        "file_..."
      ],
      "new_look": [
        "file_..."
      ]
    },
    "quality": "720p"
  }'

Ответ приходит сразу, со статусом queued и идентификатором vid_….

5

Дождитесь результата

Спрашивайте статус раз в 5 секунд. В бою удобнее вебхуки.

Python
import os, time, requests

BASE = "https://api.hawklance.ai/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['HAWKLANCE_API_KEY']}"}

video_id = "vid_..."  # из ответа POST /v1/videos
while True:
    video = requests.get(f"{BASE}/videos/{video_id}", headers=HEADERS).json()
    if video["status"] in ("succeeded", "failed", "canceled"):
        break
    time.sleep(5)

print(video["output"]["url"] if video["status"] == "succeeded" else video["error"])
Node.js
const BASE = "https://api.hawklance.ai/v1";
const headers = { Authorization: `Bearer ${process.env.HAWKLANCE_API_KEY}` };

const videoId = "vid_..."; // из ответа POST /v1/videos
let video;
do {
  await new Promise((r) => setTimeout(r, 5000));
  video = await (await fetch(`${BASE}/videos/${videoId}`, { headers })).json();
} while (video.status === "queued" || video.status === "running");

console.log(video.output?.url ?? video.error);

Когда статус станет succeeded, в output.url будет ссылка на MP4. Она действует 6 часов; свежую даст новый запрос.

6

Перейдите на боевой ключ

Пополните баланс в биллинге, создайте ключ в режиме «Боевой» и замените hl_test_ на hl_live_. Код менять не нужно.