PopNowAPI
Odbierz klucz API

LTX 2.3 Plus LoRA API

od Lightricks

LTX 2.3: wideo z obrazu z wbudowanymi i własnymi LoRA

lightricks/ltx-2.3-plus-lora/video-extend
  • Do 1080p
  • Klipy 3–20 s
  • Własne LoRA
  • Obraz w wideo
  • Wydłuż wideo

Wywołujesz go nazwą modelu lightricks/ltx-2.3-plus-lora/video-extend w POST /jobs/createTask, od 0,1425 USD.

Nazwa modelulightricks/ltx-2.3-plus-lora/video-extend
EndpointPOST https://api.popnow.ai/api/v1/jobs/createTask
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "lightricks/ltx-2.3-plus-lora/video-extend",
  "input": {
    "preset": "tuned",
    "duration_seconds": 5,
    "resolution": "480p",
    "video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4"
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

input jest zbudowany ze schematu poniżej, więc przechodzi walidację bez zmian. Zamień prompt i linki na własne.

Cena

OpcjaUSD za sekundę
resolution 480p0,0285 USD
resolution 720p0,0475 USD
resolution 1080p0,0665 USD

Rozliczenie w USD · Wszystkie opcje i ceny: GET /models/lightricks/ltx-2.3-plus-lora/video-extend

Limity

Długość klipu
3–20 s
Rozdzielczości
480p · 720p · 1080p
Najdłuższy klip wejściowy
60 s

Parametry

Te pola pochodzą z tego samego schematu, którym sprawdzamy każde żądanie. Pola spoza listy są odrzucane.

  • video_urlstringWymagane

    Klip do obróbki.

    Zakres
    1 – … chars · video/mp4, video/webm, video/quicktime, video/x-m4v
  • presetstringOpcjonalne

    Style preset bundle. tuned is the recommended general-purpose stack; original applies light styling only.

    Domyślnie
    "tuned"
    Dozwolone wartości
    "tuned""original"
  • promptstringOpcjonalne

    Describe what happens next: the action that follows and the camera move. You can leave it empty.

  • lorasarray<object>Opcjonalne

    Wczytaj własne pliki LoRA, by utrwalić styl lub postać.

    Zakres
    0 – 3 items
    Pola wewnętrzne
    • loras[].pathstringWymagane

      Key of a built-in LoRA.

      Dozwolone wartości
      "sulphur""sulphur_v1""vbvr""dreamly""synth""plora""singularity""omninft""omninft_bf16""better_motion""physics_v2""hardcut""transition"
    • loras[].scalenumberOpcjonalne

      Strength for this LoRA, 0 to 4; 0 turns it off. Defaults to 1.

      Domyślnie
      1
      Zakres
      0 – 4
  • duration_secondsintegerOpcjonalneZmienia cenę

    Długość klipu. Płacisz za każdą sekundę.

    Domyślnie
    5
    Zakres
    3 – 20
  • resolutionstringOpcjonalneZmienia cenę

    Rozmiar wyniku. Większy jest ostrzejszy i droższy.

    Domyślnie
    "480p"
    Dozwolone wartości
    "480p""720p""1080p"
  • seedintegerOpcjonalne

    Ta sama liczba daje powtarzalny wynik.

    Zakres
    0 – 2147483647
Surowy JSON Schema
{
  "additionalProperties": false,
  "properties": {
    "duration_seconds": {
      "default": 5,
      "description": "Length of the new segment in whole seconds, from 3 to 20. The source clip is added on top and is not billed.",
      "maximum": 20,
      "minimum": 3,
      "type": "integer"
    },
    "loras": {
      "description": "Per-LoRA strength overrides applied on top of the preset, up to three.",
      "items": {
        "properties": {
          "path": {
            "description": "Key of a built-in LoRA.",
            "enum": [
              "sulphur",
              "sulphur_v1",
              "vbvr",
              "dreamly",
              "synth",
              "plora",
              "singularity",
              "omninft",
              "omninft_bf16",
              "better_motion",
              "physics_v2",
              "hardcut",
              "transition"
            ],
            "type": "string"
          },
          "scale": {
            "default": 1,
            "description": "Strength for this LoRA, 0 to 4; 0 turns it off. Defaults to 1.",
            "maximum": 4,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "maxItems": 3,
      "type": "array"
    },
    "preset": {
      "default": "tuned",
      "description": "Style preset bundle. tuned is the recommended general-purpose stack; original applies light styling only.",
      "enum": [
        "tuned",
        "original"
      ],
      "type": "string"
    },
    "prompt": {
      "description": "Describe what happens next: the action that follows and the camera move. You can leave it empty.",
      "type": "string"
    },
    "resolution": {
      "default": "480p",
      "description": "Resolution of the new segment. It sets how sharp the new part is generated; match your source clip.",
      "enum": [
        "480p",
        "720p",
        "1080p"
      ],
      "type": "string"
    },
    "seed": {
      "description": "Random seed. Keep it fixed only for controlled comparisons, not as a frame-identical guarantee.",
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer"
    },
    "video_url": {
      "contentMediaType": [
        "video/mp4",
        "video/webm",
        "video/quicktime",
        "video/x-m4v"
      ],
      "format": "uri",
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "video_url"
  ],
  "type": "object"
}

Odpowiedzi, odpytywanie i callbacki

Wszystkie modele działają tak samo: utwórz zadanie, a potem odpytuj je albo poczekaj na callback.

Najpierw cena

cURL
curl -X POST https://api.popnow.ai/api/v1/jobs/quote \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "lightricks/ltx-2.3-plus-lora/video-extend",
  "input": {
    "preset": "tuned",
    "duration_seconds": 5,
    "resolution": "480p",
    "video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4"
  }
}'

Przed uruchomieniem wyślij tę samą treść żądania do POST /jobs/quote, aby zobaczyć szacowaną i maksymalną opłatę w USD. Wycena nie uruchamia zadania ani nie obciąża salda.

Przyjęte

HTTP
HTTP/1.1 202 Accepted

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "state": "queued"
  },
  "request_id": "req_example_create"
}

HTTP 202 oznacza przyjęcie zadania: maksymalna kwota w USD pozostaje zarezerwowana do rozliczenia. Po przyjęciu zadania rezerwujemy maksymalną kwotę wyceny na saldzie API. Po zakończeniu naliczamy opłatę za rzeczywiste użycie, nie wyższą niż rezerwacja, i zwalniamy resztę. Jeśli zadanie się nie powiedzie, rezerwacja zostaje zwolniona.

Sprawdź status

cURL
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Odpytuj co kilka sekund, stopniowo wydłużając odstęp, i przestań, gdy state ma wartość succeeded, failed, canceled lub expired.

Gotowe zadanie

JSON
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "lightricks/ltx-2.3-plus-lora/video-extend",
    "state": "succeeded",
    "output": {
      "assets": [
        {
          "url": "https://cdn.popnow.ai/tasks/task_01k3m8x9q2z4v7n5p6r8s0t1w3/output.mp4?signature=FROM_RESPONSE",
          "expiresAt": "2026-10-17T12:20:00Z",
          "mime": "video/mp4",
          "width": 1280,
          "height": 720,
          "durationSeconds": 5
        }
      ]
    },
    "settled": true
  },
  "request_id": "req_example_record"
}

Pobierz plik z url przed expiresAt. Potrzebujesz później nowego linku? Poproś o niego przez POST /common/download-url.

Weryfikacja callbacku

Node.js
import { createHash, createHmac, timingSafeEqual } from "node:crypto";
import express from "express";

const app = express();
// express.raw keeps the exact bytes that were signed; express.json would not match.
app.post("/hooks/popnow", express.raw({ type: "application/json" }), (req, res) => {
  const timestamp = req.header("X-Webhook-Timestamp");
  const signature = req.header("X-Webhook-Signature") ?? "";
  const body = JSON.parse(req.body.toString("utf8"));
  const taskId = body.data?.taskId ?? body.task_id;
  const digest = createHash("sha256").update(req.body).digest("hex");
  const expected = createHmac("sha256", process.env.POPNOW_WEBHOOK_SECRET)
    .update(`${taskId}.${timestamp}.${digest}`)
    .digest("base64");
  const ok = expected.length === signature.length && timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
  // Check the signature first, then reject anything older than five minutes.
  if (!ok || Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return res.status(401).end();
  res.status(200).end(); // answer fast, then fetch the task and store its files
});

Gdy ustawisz callBackUrl, wyślemy ci gotowe zadanie. Zanim mu zaufasz, sprawdź podpis na surowym ciele żądania.

Wysyłanie pliku lokalnego

cURL
curl -X POST https://api.popnow.ai/api/v1/common/upload-url \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contentType": "image/png", "bytes": 482113}'

# PUT the file bytes to data.uploadUrl with every header in data.headers, then commit it:
curl -X POST https://api.popnow.ai/api/v1/files/$FILE_ID/commit \
  -H "Authorization: Bearer $POPNOW_API_KEY"
# The commit returns a popnow://f/... reference. Put it in any image, video or
# audio field of the task input instead of a public https URL.

Publiczne linki https działają bez zmian. Pliki lokalne przechodzą najpierw przez upload-url i commit.

O modelu LTX 2.3 Plus LoRA

LTX 2.3: wideo z obrazu z wbudowanymi i własnymi LoRA.

Wywołujesz go nazwą modelu lightricks/ltx-2.3-plus-lora/video-extend w POST /jobs/createTask, od 0,1425 USD.

Parametry żądania

ParametrWymaganyOpis
duration_secondsNieDługość klipu. Płacisz za każdą sekundę. ≥ 3 · ≤ 20 · Domyślnie: 5
lorasNieWczytaj własne pliki LoRA, by utrwalić styl lub postać.
presetNieStyle preset bundle. tuned is the recommended general-purpose stack; original applies light styling only. tuned · original · Domyślnie: tuned
promptNieDescribe what happens next: the action that follows and the camera move. You can leave it empty.
resolutionNieRozmiar wyniku. Większy jest ostrzejszy i droższy. 480p · 720p · 1080p · Domyślnie: 480p
seedNieTa sama liczba daje powtarzalny wynik. ≥ 0 · ≤ 2147483647
video_urlTakKlip do obróbki.

Ceny

Ceny podano w USD. API korzysta z oddzielnego salda w dolarach amerykańskich. Kredytów strony nie można używać w API ani zamieniać na saldo API. Nie można też zamieniać salda API na kredyty strony. Po przyjęciu zadania rezerwujemy maksymalną kwotę wyceny na saldzie API. Po zakończeniu naliczamy opłatę za rzeczywiste użycie, nie wyższą niż rezerwacja, i zwalniamy resztę. Jeśli zadanie się nie powiedzie, rezerwacja zostaje zwolniona.

OpcjaUSD za sekundę
resolution 480p0,0285 USD
resolution 720p0,0475 USD
resolution 1080p0,0665 USD

Przed uruchomieniem wyślij tę samą treść żądania do POST /jobs/quote, aby zobaczyć szacowaną i maksymalną opłatę w USD. Wycena nie uruchamia zadania ani nie obciąża salda.

Szybki start z API

Wywołaj API LTX 2.3 Plus LoRA w trzech krokach

  1. Utwórz klucz API. Zaloguj się do PopNow i utwórz klucz w konsoli API. Klucze zaczynają się od sk-popnow-. Wywołania korzystają z oddzielnego salda w dolarach amerykańskich.
  2. Wyślij żądanie. Wyślij POST /jobs/createTask z model lightricks/ltx-2.3-plus-lora/video-extend i obiektem input zgodnym z tabelą parametrów. Odpowiedź od razu zwraca ID zadania.
  3. Odbierz wynik. Odpytuj GET /jobs/recordInfo po ID zadania albo podaj callBackUrl, a wyślemy tam wynik. Gdy zadanie się powiedzie, pobierz pliki z linków wyjściowych.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "lightricks/ltx-2.3-plus-lora/video-extend",
  "input": {
    "preset": "tuned",
    "duration_seconds": 5,
    "resolution": "480p",
    "video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4"
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Podmień prompt i linki na własne. Odniesienie do odpowiedzi, odpytywania i callbacku znajdziesz na karcie API.

Pytania o API LTX 2.3 Plus LoRA

Ile kosztuje API LTX 2.3 Plus LoRA?

LTX 2.3 Plus LoRA kosztuje od 0,1425 USD za klip 5-sekundowy – najtańsze zadanie to „Wydłuż wideo”. Ceny według opcji: 480p 0,0285 USD za sekundę, 720p 0,0475 USD za sekundę, 1080p 0,0665 USD za sekundę. API korzysta z oddzielnego salda w dolarach amerykańskich. Kredytów strony nie można używać w API ani zamieniać na saldo API. Nie można też zamieniać salda API na kredyty strony. Po przyjęciu zadania rezerwujemy maksymalną kwotę wyceny na saldzie API. Po zakończeniu naliczamy opłatę za rzeczywiste użycie, nie wyższą niż rezerwacja, i zwalniamy resztę. Jeśli zadanie się nie powiedzie, rezerwacja zostaje zwolniona.

Jakie limity ma API LTX 2.3 Plus LoRA · Wydłuż wideo?

Długość klipu: 3–20 s; Rozdzielczości: 480p · 720p · 1080p; Najdłuższy klip wejściowy: 60 s. Żądania poza tymi limitami są odrzucane, zanim cokolwiek zostanie pobrane.

Więcej o LTX 2.3 Plus LoRA