LTX 2.3 Plus LoRA API

Lightricks

LTX 2.3 이미지 영상화, 내장 LoRA와 커스텀 LoRA

lightricks/ltx-2.3-plus-lora/video-extend
  • 최대 1080p
  • 3–20초
  • 내 LoRA 불러오기
  • 이미지로 영상 만들기
  • 영상 이어 만들기

POST /jobs/createTask에서 모델 이름을 lightricks/ltx-2.3-plus-lora/video-extend(으)로 지정하면 호출할 수 있습니다. US$0.1425부터.

모델 이름lightricks/ltx-2.3-plus-lora/video-extend
엔드포인트POST 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은 아래 스키마로 만들었기 때문에 그대로 검증을 통과합니다. 프롬프트와 링크만 내 것으로 바꾸세요.

가격

옵션USD /초
resolution 480pUS$0.0285
resolution 720pUS$0.0475
resolution 1080pUS$0.0665

미국 달러 기준 요금 · 모든 옵션과 가격: GET /models/lightricks/ltx-2.3-plus-lora/video-extend

제한

영상 길이
3–20 s
해상도
480p · 720p · 1080p
입력 클립 최대 길이
60 s

파라미터

이 필드들은 모든 요청을 검사할 때 쓰는 것과 같은 스키마에서 나옵니다. 목록에 없는 필드는 거부됩니다.

  • video_urlstring필수

    작업할 영상.

    범위
    1 – … chars · video/mp4, video/webm, video/quicktime, video/x-m4v
  • presetstring선택

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

    기본값
    "tuned"
    허용 값
    "tuned""original"
  • promptstring선택

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

  • lorasarray<object>선택

    내 LoRA 파일을 불러와 스타일이나 캐릭터를 고정합니다.

    범위
    0 – 3 items
    내부 필드
    • loras[].pathstring필수

      Key of a built-in LoRA.

      허용 값
      "sulphur""sulphur_v1""vbvr""dreamly""synth""plora""singularity""omninft""omninft_bf16""better_motion""physics_v2""hardcut""transition"
    • loras[].scalenumber선택

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

      기본값
      1
      범위
      0 – 4
  • duration_secondsinteger선택가격이 달라짐

    클립 길이. 초 단위로 요금이 붙습니다.

    기본값
    5
    범위
    3 – 20
  • resolutionstring선택가격이 달라짐

    출력 크기. 클수록 선명하고 가격도 올라갑니다.

    기본값
    "480p"
    허용 값
    "480p""720p""1080p"
  • seedinteger선택

    같은 숫자를 쓰면 같은 결과를 다시 얻을 수 있습니다.

    범위
    0 – 2147483647
원본 JSON 스키마
{
  "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"
}

응답, 폴링, 콜백

모든 모델은 같은 방식으로 동작합니다. 작업을 만들고, 폴링하거나 콜백을 기다리세요.

먼저 견적 받기

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"
  }
}'

실행 전에 같은 요청 본문을 POST /jobs/quote로 보내면 예상 요금과 최대 요금을 미국 달러로 확인할 수 있습니다. 견적만으로는 작업이 실행되거나 요금이 청구되지 않습니다.

접수됨

HTTP
HTTP/1.1 202 Accepted

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

HTTP 202는 접수 완료를 뜻하며 최대 달러 금액이 정산까지 예약됩니다. 작업이 접수되면 견적의 최대 금액을 API 잔액에서 예약합니다. 완료 후 실제 사용량으로 정산하고 남은 예약 금액을 해제합니다. 청구액은 예약 금액을 넘지 않으며, 작업이 실패하면 예약 금액을 해제합니다.

상태 확인

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

간격을 조금씩 늘리며 몇 초마다 확인하고, state가 succeeded, failed, canceled, expired 중 하나가 되면 멈추세요.

완료된 작업

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"
}

expiresAt 전에 url에서 내려받으세요. 나중에 새 링크가 필요하면 POST /common/download-url을 호출하세요.

콜백 검증하기

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
});

callBackUrl을 설정하면 완료된 작업을 보내 드립니다. 믿기 전에 원본 요청 본문으로 서명을 확인하세요.

로컬 파일 보내기

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.

공개 https 링크는 그대로 쓸 수 있습니다. 로컬 파일은 먼저 upload-url과 commit을 거칩니다.

LTX 2.3 Plus LoRA 소개

LTX 2.3 이미지 영상화, 내장 LoRA와 커스텀 LoRA.

POST /jobs/createTask에서 모델 이름을 lightricks/ltx-2.3-plus-lora/video-extend(으)로 지정하면 호출할 수 있습니다. US$0.1425부터.

요청 파라미터

파라미터필수설명
duration_seconds아니요클립 길이. 초 단위로 요금이 붙습니다. ≥ 3 · ≤ 20 · 기본값: 5
loras아니요내 LoRA 파일을 불러와 스타일이나 캐릭터를 고정합니다.
preset아니요Style preset bundle. tuned is the recommended general-purpose stack; original applies light styling only. tuned · original · 기본값: tuned
prompt아니요Describe what happens next: the action that follows and the camera move. You can leave it empty.
resolution아니요출력 크기. 클수록 선명하고 가격도 올라갑니다. 480p · 720p · 1080p · 기본값: 480p
seed아니요같은 숫자를 쓰면 같은 결과를 다시 얻을 수 있습니다. ≥ 0 · ≤ 2147483647
video_url예작업할 영상.

가격

요금은 미국 달러 기준입니다. API는 별도의 미국 달러 잔액을 사용합니다. 웹사이트 크레딧은 API에 사용할 수 없으며, API 잔액과 웹사이트 크레딧 간 전환도 지원하지 않습니다. 작업이 접수되면 견적의 최대 금액을 API 잔액에서 예약합니다. 완료 후 실제 사용량으로 정산하고 남은 예약 금액을 해제합니다. 청구액은 예약 금액을 넘지 않으며, 작업이 실패하면 예약 금액을 해제합니다.

옵션USD /초
resolution 480pUS$0.0285
resolution 720pUS$0.0475
resolution 1080pUS$0.0665

실행 전에 같은 요청 본문을 POST /jobs/quote로 보내면 예상 요금과 최대 요금을 미국 달러로 확인할 수 있습니다. 견적만으로는 작업이 실행되거나 요금이 청구되지 않습니다.

API 빠른 시작

LTX 2.3 Plus LoRA API를 3단계로 호출하기

  1. API 키 만들기. PopNow에 로그인하고 API 콘솔에서 키를 만드세요. 키는 sk-popnow-로 시작하며 API 호출은 별도의 달러 잔액을 사용합니다.
  2. 요청 보내기. POST /jobs/createTask에 model은 lightricks/ltx-2.3-plus-lora/video-extend, input은 파라미터 표에 맞춰 보내세요. 응답으로 작업 ID가 바로 돌아옵니다.
  3. 결과 받기. 작업 ID로 GET /jobs/recordInfo를 폴링하거나 callBackUrl을 넘기면 결과를 그 주소로 보내 드립니다. 작업이 성공하면 출력 링크에서 내려받으세요.
# 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"

프롬프트와 링크는 직접 쓰는 것으로 바꾸세요. 응답, 폴링, 콜백 참고 자료는 API 탭에 있어요.

LTX 2.3 Plus LoRA API 질문

LTX 2.3 Plus LoRA API 요금은 얼마인가요?

LTX 2.3 Plus LoRA 가격은 가장 저렴한 영상 이어 만들기 기준 US$0.1425 / 5초 영상부터입니다. 옵션별 가격: 480p US$0.0285/초, 720p US$0.0475/초, 1080p US$0.0665/초. API는 별도의 미국 달러 잔액을 사용합니다. 웹사이트 크레딧은 API에 사용할 수 없으며, API 잔액과 웹사이트 크레딧 간 전환도 지원하지 않습니다. 작업이 접수되면 견적의 최대 금액을 API 잔액에서 예약합니다. 완료 후 실제 사용량으로 정산하고 남은 예약 금액을 해제합니다. 청구액은 예약 금액을 넘지 않으며, 작업이 실패하면 예약 금액을 해제합니다.

LTX 2.3 Plus LoRA · 영상 이어 만들기 API의 제한은 무엇인가요?

영상 길이: 3–20 s; 해상도: 480p · 720p · 1080p; 입력 클립 최대 길이: 60 s. 이 범위를 벗어난 요청은 청구되기 전에 거부됩니다.

LTX 2.3 Plus LoRA 더 알아보기