30초 영상, 50개 이상의 참조 소재. 지금 사용해 보기

SeeGen AI API

SeeGen AI API에 오신 것을 환영합니다 — 여러 주요 모델을 아우르는 시네마틱 비디오와 고품질 이미지 생성을 하나의 API로 제공합니다.

개요

SeeGen AI는 통합 생성 API입니다. 여러 주요 AI 비디오/이미지 모델을 하나의 일관된 엔드포인트 세트로 호출할 수 있습니다. model 파라미터로 모델을 선택하세요 — 인증, 작업 제출, 상태 폴링, Webhook은 모든 모델에서 동일한 방식으로 동작합니다.

현재 사용 가능한 모델:

  • 비디오 — Seedance 2.0 Pro(sd2), Seedance 2.0 Fast(sd2-fast), Seedance 2.0 Mini(sd2-mini), Seedance 2.5(sd2.5), HappyHorse 1.1(happyhorse)
  • 이미지 — GPT Image 2(gpt-image-2), Nano Banana 2(nano-banana-2), Nano Banana Pro(nano-banana-pro), Seedream 5.0 Lite(seedream-v5.0-lite), Seedream 5.0 Pro(seedream-v5.0-pro)

기본 URL: https://seegen.ai/api/v1

모델: 위 별칭 중 하나를 model 필드에 지정하세요(예: sd2, gpt-image-2).

SeeGen AI를 선택하는 이유

SeeGen AI를 선택해야 할 더 많은 이유:

  • Seedance 2.0뿐만 아니라 HappyHorse 1.1, Nano Banana, ChatGPT Image 등도 이용 가능합니다.
  • 구독 불필요 — 사용한 만큼만 지불
  • 최신 모델에 빠르게 액세스
  • 24/7 고객 지원
  • 공식 모델 관련 문의 지원
  • 개발자용 콘솔 액세스
  • 기업과 개인 사용자 모두 이용 가능

요금제

40% OFF

API Pack

$500$833

125,000 크레딧 ($0.004/크레딧)

5s 영상 ~781개

40% OFF

API-XL Pack

$2,000$3,332

500,000 크레딧 ($0.004/크레딧)

5s 영상 ~3,125개

Seedance 2.0 / Fast / Mini / 2.5 — 비용 계산 방식

out = 출력 초, in = 각 입력 비디오의 ⌈duration⌉(각각 올림) 합계(out × 2/3을 최솟값으로 함)로 정의합니다. Seedance 2.5는 Seedance 2.0과 동일한 계산 방식을 따릅니다. 해당 모델의 기본 요율은 작업 공식을 적용하기 전에 1.5배로 곱한 뒤 반올림합니다(1080P는 sd2.5의 네이티브 출력이며, 720P 요율의 2.5배). 모델과 무관한 업스케일 추가 요금은 2K / 4K에서 출력 1초당 +30 / +40크레딧으로 동일합니다(1080P는 sd2-fast / sd2-mini에서만 +20).

비디오 입력 없음비디오 입력 포함
sd2.5: 480P30 × out23 × (out + in)
sd2.5: 720P60 × out45 × (out + in)
sd2.5: 1080P (네이티브)150 × out113 × (out + in)
sd2.5: 2K(60 + 30) × out45 × (out + in) + 30 × out
sd2.5: 4K(60 + 40) × out45 × (out + in) + 40 × out
sd2-pro: 480P20 × out15 × (out + in)
sd2-pro: 720P40 × out30 × (out + in)
sd2-pro: 1080P (네이티브)100 × out75 × (out + in)
sd2-pro: 2K(40 + 30) × out30 × (out + in) + 30 × out
sd2-pro: 4K (네이티브)200 × out150 × (out + in)
sd2-fast: 480P16 × out12 × (out + in)
sd2-fast: 720P32 × out24 × (out + in)
sd2-fast: 1080P(32 + 20) × out24 × (out + in) + 20 × out
sd2-fast: 2K(32 + 30) × out24 × (out + in) + 30 × out
sd2-fast: 4K(32 + 40) × out24 × (out + in) + 40 × out
sd2-mini: 480P10 × out7.5 × (out + in)
sd2-mini: 720P20 × out15 × (out + in)
sd2-mini: 1080P(20 + 20) × out15 × (out + in) + 20 × out
sd2-mini: 2K(20 + 30) × out15 × (out + in) + 30 × out
sd2-mini: 4K(20 + 40) × out15 × (out + in) + 40 × out

참고: sd2-pro의 1080P와 4K는 공식 네이티브 출력입니다(4K = 720P 요율의 5배). sd2-pro의 2K와 sd2-fast / sd2-mini의 1080P/2K/4K는 모두 SeeGen AI가 업스케일한 것입니다. sd2.5는 480P/720P/1080P를 네이티브로 생성하며(1080P = 720P 요율의 2.5배, 업스케일 추가 요금 없음), 2K/4K는 자동 업스케일을 사용합니다. 원하는 등급은 outputResolution: "4k"와 같이 요청할 수 있습니다(예: "2k" / "4k"; 게이트웨이가 네이티브인지 업스케일인지 자동으로 선택하며, 달라지는 것은 가격과 Native 라벨뿐입니다). sd2-minisd2-pro의 50% 가격으로, 가장 저렴한 등급입니다. Seedance 2.5는 Seedance 2.0의 영상별 길이 올림, 최소 입력 길이 하한, 업스케일 계산 방식을 그대로 사용합니다. 해당 모델의 기본 요율은 작업 계산 전에 1.5배로 곱한 뒤 반올림합니다(예: 비디오 포함 1080P: 75 × 1.5 → 113). 모델과 무관한 2K / 4K 업스케일 추가 요금은 출력 1초당 +30 / +40크레딧으로 유지됩니다. 업스케일이 실패하면 완료된 작업은 부분 환불 없이 720P로 폴백됩니다.

  • sd2.5 480P, 4초 출력, 비디오 입력 없음: 120크레딧
  • sd2.5 720P, 5초 출력, 비디오 입력 없음: 300크레딧
  • sd2.5 720P, 5초 출력 + 3초 입력 비디오(최소 입력 4초): 405크레딧
  • sd2.5 1080P 네이티브, 5초 출력, 비디오 입력 없음: 750크레딧
  • sd2.5 1080P 네이티브, 5초 출력 + 5초 입력 비디오: 1,130크레딧

happyhorse — 초당 크레딧

출력크레딧/초5s 예시
720P32160
1080P60300
2K32 + 30310
4K32 + 40360

참고: 2K / 4K 업스케일은 720P 기본 요금에 추가됩니다(네이티브 1080P와는 중복 적용되지 않습니다). t2v / i2v / r2v는 동일한 초당 요율을 공유합니다 — 참조 이미지는 과금되지 않습니다.

🎉 기간 한정 혜택: 모든 이미지 생성 33% 할인 — 아래의 모든 이미지 가격은 이미 할인이 적용된 금액입니다.

gpt-image-2 — 이미지당 크레딧

해상도중간 품질고품질
1k10154770
2k (기본값)233584125
4k4060154230

각 작업은 이미지 1장을 생성합니다. N개의 변형을 얻으려면 N개의 작업을 제출하세요. 실패한 작업은 크레딧이 자동으로 환불됩니다.

nano-banana-2 및 nano-banana-pro — 이미지당 크레딧

해상도nano-banana-2nano-banana-pro
1k20304060
2k (기본값)30454060
4k477074110

각 작업은 이미지 1장을 생성합니다. N개의 변형을 얻으려면 N개의 작업을 제출하세요. 실패한 작업은 크레딧이 자동으로 환불됩니다.

Seedream 5.0 — 이미지당 크레딧

모델 / 등급크레딧
Lite 2k / 4k (정액)710
Pro 1k (기본값)1015
Pro 2k2030

각 작업은 이미지 1장을 생성합니다. N개의 변형을 얻으려면 N개의 작업을 제출하세요. 실패한 작업은 크레딧이 자동으로 환불됩니다. 참조 이미지는 별도로 과금되지 않습니다.

잔액 확인: GET /api/v1/account/credits

인증

모든 API 요청에는 Authorization 헤더에 Bearer 토큰이 필요합니다. API 키는 계정 설정에서 생성하고 관리할 수 있습니다.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://seegen.ai/api/v1/account/credits

중요: API 키는 생성 시 한 번만 표시됩니다. 안전하게 보관하세요. 계정당 최대 10개까지 API 키를 생성할 수 있습니다.

빠른 시작

두 단계로 비디오를 생성하세요: 작업을 생성한 뒤 결과를 폴링합니다.

# 1. Create a text-to-video task
TASK_ID=$(curl -s -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A golden retriever running on the beach at sunset",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask | jq -r '.taskId')

echo "Task created: $TASK_ID"

# 2. Poll for result
while true; do
  RESULT=$(curl -s -H "Authorization: Bearer $API_KEY" \
    "https://seegen.ai/api/v1/jobs/queryTask?taskId=$TASK_ID")
  STATUS=$(echo $RESULT | jq -r '.status')
  echo "Status: $STATUS"
  if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ]; then
    echo $RESULT | jq .
    break
  fi
  sleep 5
done

엔드포인트

POST/api/v1/jobs/createTask

새 비디오 생성 작업 생성

GET/api/v1/jobs/queryTask

작업 상태 및 결과 조회

GET/api/v1/account/credits

크레딧 잔액 확인

POST/api/v1/assets/upload

검토용 에셋(이미지/비디오/오디오) 업로드

GET/api/v1/assets/status

에셋 검토 상태 조회

GET/api/v1/assets/list

업로드한 에셋 목록 조회

POST/api/v1/upscale/create

독립형 비디오 업스케일 작업 제출(720p / 1080p / 2K / 4K)

GET/api/v1/upscale/query

독립형 업스케일 작업의 상태와 결과를 폴링

모델 선택(비디오)

비디오를 생성하는 모델군은 두 가지입니다. 모드와 가격에 따라 선택하고, 요금제 섹션과 함께 비용을 추정하세요.

모델T2VI2VFirst–LastMulti-RefR2V네이티브 1080p네이티브 4K오디오720p / 5s
sd2.5업스케일300 크레딧
sd2200 크레딧
sd2-fast업스케일업스케일160 크레딧
sd2-mini업스케일업스케일100 크레딧
happyhorse업스케일160 크레딧

T2V = 텍스트로 비디오 생성 · I2V = 이미지로 비디오 생성(첫 프레임) · First–Last = 시작 + 종료 키프레임 · Multi-Ref = 이미지/비디오/오디오 참조 혼합 · R2V = 캐릭터 마커가 있는 참조 이미지 1~9장

Seedance 2.0 / 2.0 Fast / 2.0 Mini / Seedance 2.5

텍스트로 비디오 생성

텍스트 프롬프트로 비디오를 생성합니다. 이미지는 필요하지 않습니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A futuristic city with flying cars at night, neon lights reflecting on wet streets",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
파라미터타입필수설명
promptstring생성할 비디오에 대한 텍스트 설명. 최대 20000자.
durationstring아니요동영상 길이: "4s"~"15s"; sd2.5는 최대 "30s"까지 지원(기본값: "5s")
resolutionstring아니요resolution으로 화면 비율을 지정합니다. 옵션: auto(기본값), 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstring아니요출력 해상도 등급: "480p", "720p"(기본값), "1080p", "2k", "4k" 중 하나. 네이티브 해상도는 모델마다 다릅니다: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast·Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. 그보다 높은 등급은 자동으로 업스케일됩니다.
seedint아니요재현성을 위한 시드 값: 무작위는 -1 또는 생략, 고정하려면 0–2147483647을 지정합니다.
generateAudioboolean아니요동기화된 오디오 트랙을 합성할지 여부입니다. 기본값은 true이며, 무음 비디오를 원하면 false를 지정합니다.

이미지로 비디오 생성

정적 이미지를 비디오로 애니메이션화합니다. 시작 프레임으로 이미지 URL 1개를 제공합니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": ["https://example.com/photo.jpg"],  // or "asset://asset-20260326-abc123"
      "prompt": "The woman slowly turns her head and smiles",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
파라미터타입필수설명
urlsstring[]이미지 URL 1개를 포함하는 배열(원본 프레임). HTTP URL과 에셋 참조(예: "asset://asset-20260326-abc123") 모두 지원합니다.
promptstring아니요원하는 움직임에 대한 텍스트 설명
durationstring아니요동영상 길이: "4s"~"15s"; sd2.5는 최대 "30s"까지 지원(기본값: "5s")
outputResolutionstring아니요출력 해상도 등급: "480p", "720p"(기본값), "1080p", "2k", "4k" 중 하나. 네이티브 해상도는 모델마다 다릅니다: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast·Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. 그보다 높은 등급은 자동으로 업스케일됩니다.
seedint아니요재현성을 위한 시드 값: 무작위는 -1 또는 생략, 고정하려면 0–2147483647을 지정합니다.
generateAudioboolean아니요동기화된 오디오 트랙을 합성할지 여부입니다. 기본값은 true이며, 무음 비디오를 원하면 false를 지정합니다.

시작/종료 프레임

시작 프레임과 종료 프레임을 지정하면 모델이 그 사이의 전환을 생성합니다. videoInputMode: "keyframe"을 사용합니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/first-frame.jpg",
        "https://example.com/last-frame.jpg"
      ],
      "prompt": "Smooth camera transition from day to night",
      "duration": "5s",
      "videoInputMode": "keyframe"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
파라미터타입필수설명
urlsstring[]정확히 2개의 이미지 URL을 포함하는 배열: [first_frame, last_frame]. HTTP URL과 에셋 참조(예: "asset://asset-20260326-abc123") 모두 지원합니다.
videoInputModestring"keyframe"이어야 합니다
promptstring아니요전환을 안내하는 텍스트 설명
durationstring아니요동영상 길이: "4s"~"15s"; sd2.5는 최대 "30s"까지 지원(기본값: "5s")
outputResolutionstring아니요출력 해상도 등급: "480p", "720p"(기본값), "1080p", "2k", "4k" 중 하나. 네이티브 해상도는 모델마다 다릅니다: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast·Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. 그보다 높은 등급은 자동으로 업스케일됩니다.
seedint아니요재현성을 위한 시드 값: 무작위는 -1 또는 생략, 고정하려면 0–2147483647을 지정합니다.
generateAudioboolean아니요동기화된 오디오 트랙을 합성할지 여부입니다. 기본값은 true이며, 무음 비디오를 원하면 false를 지정합니다.

멀티 레퍼런스

여러 참조 이미지·비디오·오디오 파일을 사용해 생성을 제어합니다. videoInputMode: "reference"를 사용합니다. sd2.5에서는 이것이 기본 참조 서브태스크입니다. 기존 비디오를 편집하거나 이어서 생성하려면 아래의 '비디오 편집/연장'을 참고하세요.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/ref1.jpg",
        "https://example.com/ref2.jpg"
      ],
      "videoUrls": ["asset://asset-motion-video"],
      "audioUrls": ["https://example.com/audio.mp3"],
      "prompt": "Character walks through a garden",
      "duration": "5s",
      "videoInputMode": "reference",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
파라미터타입필수설명
urlsstring[]아니요참조 이미지 URL(최대 9개). HTTP URL과 에셋 참조(예: "asset://asset-20260326-abc123") 모두 지원합니다.
videoUrlsstring[]아니요참조 비디오의 asset:// URI — 먼저 /api/v1/assets/upload로 업로드해야 합니다. 외부 URL은 거부됩니다. sd2: 최대 3개, 각 15s 이하. sd2.5: 최대 10개, 각 2–30s이며 200MB 이하, 참조 비디오 총 길이 30s 이하, 480p–4K 입력을 지원합니다.
audioUrlsstring[]아니요참조 오디오 입력. sd2 / sd2-fast / sd2-mini: 최대 3개 파일, 각 2–15s, 총 15s 이하 — 이 모델들에서는 오디오만 단독 참조로 사용할 수 없습니다(이미지 또는 비디오를 최소 1개 추가하세요). sd2.5: 최대 10개 파일, 각 15MB 이하 및 2–30s, 총 30s 이하이며 오디오 단독 입력도 지원합니다.
videoInputModestring"reference"이어야 합니다
promptstring아니요텍스트 설명
durationstring아니요동영상 길이: "4s"~"15s"; sd2.5는 최대 "30s"까지 지원(기본값: "5s")
resolutionstring참조 모드에서는 필수입니다. 옵션: 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstring아니요출력 해상도 등급: "480p", "720p"(기본값), "1080p", "2k", "4k" 중 하나. 네이티브 해상도는 모델마다 다릅니다: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast·Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. 그보다 높은 등급은 자동으로 업스케일됩니다.
seedint아니요재현성을 위한 시드 값: 무작위는 -1 또는 생략, 고정하려면 0–2147483647을 지정합니다.
generateAudioboolean아니요동기화된 오디오 트랙을 합성할지 여부입니다. 기본값은 true이며, 무음 비디오를 원하면 false를 지정합니다.

참조 제약 조건

  • 이미지 최대 9개, 비디오 최대 3개, 오디오 최대 3개
  • 전체 유형 합산 최대 12개 파일
  • 비디오/오디오는 각각 15초 이하여야 합니다
  • 이미지는 짧은 변이 400px 이상이어야 합니다
  • sd2.5: 이미지 최대 30개, 비디오 최대 10개, 오디오 최대 10개, 총 최대 50개; 비디오와 오디오는 각각 총 30초 이하입니다

비디오 편집/연장

sd2.5는 참조 기반 생성을 세 가지 서브태스크로 나눕니다. 일반 참조 생성에서는 mode를 생략하고, 기존 비디오를 편집하려면 mode: "edit", 이어서 생성하려면 mode: "extend"를 지정합니다. 둘 다 videoUrls에 최소 1개의 비디오가 필요하며, 항상 원본 비디오의 화면 비율로 출력됩니다.

조작하려는 비디오는 videoUrls첫 번째에 배치하고, 프롬프트에서는 이를 'Video 1'로 지칭하세요. edit은 출력 길이를 첫 번째(원본) 비디오에 강제로 맞추며, 이 비디오는 4–30s여야 하므로 전송한 duration은 무시됩니다. 과금은 원본 비디오 길이를 출력 길이로 사용하고, 모든 참조 비디오를 입력으로 포함합니다. extend는 순서대로 이어붙일 1~3개의 클립을 허용하며, 요청한 duration이 이번 생성의 출력 길이가 됩니다(원본 길이와 무관) — 일반 참조 생성과 동일하게 과금됩니다.

2.0 계열 모델(sd2 / sd2-fast / sd2-mini)도 mode: "edit"mode: "extend"를 지원합니다. 이들은 프롬프트에서 작업을 추론하므로(편집이나 연장 내용을 명확히 설명하세요), 화면 비율은 원본 비디오를 따르고 duration은 계속 직접 제어할 수 있으며 과금도 일반적인 방식입니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2.5",
    "inputs": {
      "mode": "edit",
      "videoUrls": ["asset://asset-source-video"],
      "urls": ["https://example.com/annotation-at-1.2s.png"],
      "source_frame_timestamps_ms": [1200],
      "prompt": "Replace the marked object with a red umbrella",
      "outputResolution": "720p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
파라미터타입필수설명
modestring아니요"edit" 또는 "extend". 일반 참조 생성에서는 생략합니다.
videoUrlsstring[]최소 1개의 비디오가 필요합니다. 첫 번째가 소스('Video 1')이며, 편집 출력 길이와 과금은 이를 따릅니다. 이후 비디오는 추가 참조(edit)이거나 순서대로 이어붙일 추가 클립(extend, 최대 3개)입니다.
urlsstring[]아니요선택적 주석/참조 이미지.
source_frame_timestamps_msnumber[]아니요mode "edit"에서만 사용. urls의 각 이미지마다 원본 비디오 기준 타임스탬프(밀리초, 음수 아님)를 하나씩 지정합니다.
outputResolutionstring아니요출력 해상도 등급: "480p", "720p"(기본값), "1080p", "2k", "4k" 중 하나. 네이티브 해상도는 모델마다 다릅니다: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast·Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. 그보다 높은 등급은 자동으로 업스케일됩니다.

Seedance 파라미터 레퍼런스

sd2 / sd2-fast / sd2-mini / sd2.5 모델의 모든 inputs 파라미터에 대한 전체 레퍼런스입니다.

파라미터타입필수설명
promptstring아니요텍스트 설명(텍스트로 비디오 생성 시 필수, 다른 모드에서는 선택). 최대 20000자.
urlsstring[]아니요이미지 URL. HTTP URL과 에셋 참조(예: "asset://asset-20260326-abc123") 모두 지원합니다. 내부적으로 uploadedUrls에 매핑됩니다.
videoUrlsstring[]아니요참조 비디오 asset:// URI(리퍼런스 모드 전용). 먼저 /api/v1/assets/upload로 업로드해야 합니다 — 외부 URL은 거부됩니다.
audioUrlsstring[]아니요참조 오디오 URL(리퍼런스 모드 전용). sd2.5에서는 오디오 단독 입력을 지원합니다. sd2 / sd2-fast / sd2-mini는 오디오와 함께 이미지 또는 비디오를 최소 1개 지정해야 합니다.
durationstring아니요일반적으로 "4s"~"15s"; sd2.5는 최대 "30s"까지 지원합니다. 기본값: "5s"
resolutionstring아니요화면 비율: auto(기본값) | 720x720 | 720x960 | 960x720 | 1280x720 | 720x1280 | 1280x540
outputResolutionstring아니요출력 해상도 등급: "480p", "720p"(기본값), "1080p", "2k", "4k" 중 하나. 네이티브 해상도는 모델마다 다릅니다: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast·Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. 그보다 높은 등급은 자동으로 업스케일됩니다.
videoInputModestring아니요"keyframe"(기본값) 또는 "reference"
modestring아니요리퍼런스 모드 서브태스크(모든 Seedance 모델 공통): 일반 참조 생성에서는 생략, videoUrls의 첫 번째 비디오를 편집하려면 "edit", 1~3개의 클립을 이어서 생성하려면 "extend". 자세한 내용은 '비디오 편집/연장'을 참고하세요.
source_frame_timestamps_msnumber[]아니요sd2.5 비디오 편집 전용: 주석 이미지마다 음수가 아닌 밀리초 타임스탬프를 하나씩 지정합니다.
seedint아니요재현성을 위한 랜덤 시드입니다. 서버가 무작위로 지정하게 하려면 -1을 지정하거나 생략합니다. 동일한 시드 + 동일한 입력이면 거의 일치하는 결과를 얻을 수 있습니다(GPU의 비결정성으로 인해 비트 단위로 완전히 동일하지는 않습니다). 범위: -1~2147483647.
generateAudioboolean아니요비디오에 동기화된 오디오 트랙(음성, 효과음, 배경 음악)을 합성할지 여부입니다. 기본값은 true입니다. 무음 비디오를 만들려면 false로 설정하세요 — 처리 속도가 약간 빨라지며, 별도로 더빙할 계획이라면 유용합니다.
bitrateModestring아니요동일한 해상도에서의 출력 비트레이트 등급: "standard"(기본값) 또는 "high". "high"는 더 많은 디테일을 유지하고 밴딩/블로킹을 줄이지만 파일 크기가 약 3~5배가 됩니다 — 해상도나 가격은 변하지 않습니다.
upscaleResolutionstring아니요(사용 중단됨) 이전 방식의 분리형 필드이며, 하위 호환성을 위해 계속 허용됩니다. 새로 연동할 때는 outputResolution을 사용하세요. 이제 "2k" / "4k"를 직접 지정할 수 있습니다. 둘 다 전송하면 upscaleResolution이 우선 적용됩니다 — 단, 네이티브 1080p를 지원하는 모델(Seedance2 Pro / Seedance 2.5)에서는 upscaleResolution:"1080p"가 네이티브 1080p로 처리됩니다(네이티브 요율로 과금).

최상위 요청 필드: model(필수), inputs(필수), callBackUrl(선택적 webhook URL).

에셋

에셋은 비디오 생성 작업에서 사용되기 전에 검토 절차를 거치는 이미지/비디오/오디오 파일입니다. 에셋을 업로드하고 ACTIVE 상태가 될 때까지 기다린 뒤, 작업에서 해당 asset:// URL을 사용하세요.

참고: 실제 인물이 등장하는 이미지/비디오 에셋은 공식 검토가 필요하며, 보통 몇 초 내에 완료됩니다. 승인되면 바로 참조로 사용할 수 있습니다. 검토를 거치지 않으면 생성이 실패할 수 있습니다.

에셋 업로드

업로드 방법은 두 가지입니다: 로컬 파일을 직접 전송(multipart/form-data)하거나, 공개적으로 접근 가능한 HTTPS URL을 제출합니다. 두 방법 모두 에셋은 자동으로 처리 및 검토됩니다.

방법 A — 파일 직접 업로드(multipart/form-data)

이미지 호스트 없이 로컬 파일을 전송합니다. 미디어 타입은 파일의 바이트에서 감지됩니다(파일명 확장자는 신뢰하지 않습니다). 허용 형식: 이미지(jpg/png/webp/gif/bmp/tiff/heic), 비디오(mp4/mov), 오디오(wav/mp3). 파일당 최대 50MB(이미지 ≤30MB, 비디오 ≤50MB, 오디오 ≤15MB).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@/path/to/photo.jpg" \
  -F "name=my-photo" \
  https://seegen.ai/api/v1/assets/upload
파라미터타입필수설명
filefile로컬 파일(multipart 폼 필드). 미디어 타입은 콘텐츠에서 감지됩니다.
namestring아니요에셋 이름(최대 64자)

방법 B — URL로 업로드(application/json)

파일이 이미 공개 HTTPS URL에 호스팅되어 있는 경우.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/photo.jpg",
    "type": "IMAGE",
    "name": "my-photo"
  }' \
  https://seegen.ai/api/v1/assets/upload
파라미터타입필수설명
urlstring업로드할 파일의 공개 접근 가능한 HTTPS URL
typestring"IMAGE", "AUDIO", 또는 "VIDEO"
namestring아니요에셋 이름(최대 64자)

업로드 응답

{
  "assetId": 123,
  "volcAssetId": "asset-20260326-abc123",
  "type": "IMAGE",
  "status": "PROCESSING",
  "failReason": null,
  "url": "https://example.com/photo.jpg",
  "name": "my-photo",
  "createdAt": 1711234567890
}

에셋 상태 조회

에셋의 검토 상태를 폴링합니다. 상태가 PROCESSING이면 이 엔드포인트가 검토 시스템의 업데이트를 자동으로 확인합니다.

# Query by asset ID (numeric)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=123"

# Query by volcAssetId (string)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=asset-20260326-abc123"

에셋 상태 값

  • PROCESSING검토 중, 아직 사용 불가
  • ACTIVE검토 통과, 작업에서 사용 가능
  • FAILED검토 실패, failReason을 확인하세요

에셋 목록 조회

타입과 상태로 필터링하여 업로드한 에셋을 목록으로 조회합니다. 커서 기반 페이지네이션을 지원합니다.

# List all assets
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list"

# Filter by type and status
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?type=IMAGE&status=ACTIVE&limit=10"

# Paginate with cursor
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?cursor=100&limit=20"
파라미터타입필수설명
typestring아니요타입으로 필터링: "IMAGE", "AUDIO", 또는 "VIDEO"
statusstring아니요상태로 필터링: "NONE", "PROCESSING", "ACTIVE", 또는 "FAILED"
cursornumber아니요페이지네이션용 커서(이전 응답의 nextCursor 사용)
limitnumber아니요페이지당 항목 수, 1-50(기본값: 20)

목록 응답

{
  "items": [
    {
      "assetId": 123,
      "volcAssetId": "asset-20260326-abc123",
      "type": "IMAGE",
      "status": "ACTIVE",
      "failReason": null,
      "url": "https://example.com/photo.jpg",
      "name": "my-photo",
      "width": 1920,
      "height": 1080,
      "size": 245000,
      "duration": null,
      "createdAt": 1711234567890
    }
  ],
  "nextCursor": 122
}

작업에서 에셋 사용하기

에셋이 ACTIVE 상태가 되면, 작업의 URL에서 asset:// 프로토콜과 함께 해당 volcAssetId를 사용하세요:

{
  "model": "sd2",
  "inputs": {
    "urls": ["asset://asset-20260326-abc123"],
    "prompt": "The person slowly looks up and smiles",
    "duration": "5s"
  }
}

HappyHorse 1.1(Alibaba)

Alibaba DashScope의 대체 비디오 생성 모델입니다. 세 가지 모드를 지원합니다: 텍스트로 비디오 생성, 첫 프레임 기반 이미지로 비디오 생성, 레퍼런스로 비디오 생성(프롬프트당 1~9장의 참조 이미지를 결합; 프롬프트에서 character1, character2, … 로 피사체를 지칭). HappyHorse 1.1은 마지막 프레임, 참조 비디오, 참조 오디오를 지원하지 않습니다. 모델명: happyhorse.

에셋 검토가 필요 없습니다 — 공개 HTTPS 이미지 URL을 직접 사용하거나, 에셋 라이브러리의 asset:// 참조를 전달할 수 있습니다(자동으로 원본 R2 URL로 해석됩니다).

텍스트로 비디오 생성

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "prompt": "A panda DJ at a beach party, smoky sunset",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

이미지로 비디오 생성(첫 프레임)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "urls": ["https://example.com/panda.jpg"],
      "prompt": "The panda blinks and smiles",
      "duration": "5s",
      "outputResolution": "1080p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

레퍼런스로 비디오 생성(참조 이미지 1~9장)

videoWorkflowTab: "multi-reference"와 1~9장의 참조 이미지 URL을 전달하면 여러 피사체를 하나의 출력으로 결합할 수 있습니다. 프롬프트에서 각 이미지를 character1, character2, …(urls의 순서와 일치)로 지칭하세요. 화면 비율은 ratio 필드로 제어합니다(기준이 될 첫 프레임이 없으므로).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "videoWorkflowTab": "multi-reference",
      "urls": [
        "https://example.com/character.jpg",
        "https://example.com/folding-fan.jpg",
        "https://example.com/earrings.jpg"
      ],
      "prompt": "A woman in red character1 opening folding fan character2, with tassel earrings character3 swinging",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

HappyHorse 파라미터 레퍼런스

happyhorse 모델의 모든 inputs 파라미터에 대한 전체 레퍼런스입니다.

파라미터타입필수설명
promptstring아니요텍스트 설명. 텍스트로 비디오 생성과 레퍼런스로 비디오 생성에서는 필수, 이미지로 비디오 생성에서는 선택. 비CJK 문자는 최대 5000자, CJK 문자는 최대 2500자(초과분은 업스트림에서 자동으로 잘립니다). r2v에서는 character1/character2/…로 N번째 참조 이미지를 지칭합니다.
urlsstring[]아니요t2v: 생략. i2v: 정확히 1개의 URL(첫 프레임으로 사용). r2v: 1~9개의 URL. 공개 HTTPS URL과 에셋 참조(예: "asset://asset-20260326-abc123")를 지원합니다.
videoWorkflowTabstring아니요레퍼런스로 비디오 생성 모드를 활성화하려면 "multi-reference"로 설정하세요(urls 1개 이상과 함께 사용해야 합니다). 텍스트로 비디오 생성/이미지로 비디오 생성에서는 생략.
durationstring아니요"3s"~"15s"(기본값 "5s").
outputResolutionstring아니요"720p"(기본값) 또는 "1080p".
ratiostring아니요"16:9" / "9:16" / "1:1" / "4:3" / "3:4". 텍스트로 비디오 생성과 레퍼런스로 비디오 생성에 사용 — 이미지로 비디오 생성의 화면 비율은 첫 프레임에서 추론됩니다.
seedint아니요0에서 2147483647까지. 무작위 시드를 사용하려면 비워 두세요.

이미지 요구 사항(i2v / r2v)

  • 짧은 변 ≥ 300px
  • 화면 비율은 1:2.5~2.5:1 사이
  • 형식: JPEG, JPG, PNG, BMP, WEBP
  • 이미지당 최대 파일 크기 10MB(r2v: 1~9개 입력 각각에 적용)

모델 선택(이미지)

이미지 모델은 프롬프트(및 선택적으로 참조 이미지)를 받아 작업당 이미지 1장을 반환합니다. 각 요청은 선택한 모델의 등급에 따라 이미지 단위로 과금됩니다(단, Seedream Lite는 고정 요금이 적용됩니다). 실패한 작업은 자동으로 환불됩니다. 배치 파라미터는 없습니다 — 여러 변형을 생성하려면 이미지마다 createTask를 한 번씩 호출하세요.

모델T2II2I(편집)Multi-Ref최대 해상도2k / medium
gpt-image-2최대 10장4k요금제 참고
nano-banana-2최대 10장4k요금제 참고
nano-banana-pro최대 10장4k요금제 참고
seedream-v5.0-lite최대 10장4k정액
seedream-v5.0-pro최대 10장2k요금제 참고

GPT Image 2

OpenAI의 GPT Image 2 모델을 사용한 고품질 텍스트로 이미지 생성 및 이미지로 이미지 편집. 하나의 워크플로에서 두 모드를 모두 처리합니다 — urls를 전달하면 자동으로 편집 모드로 전환됩니다. 출력은 요청한 형식(PNG / JPEG / WEBP)으로 R2를 통해 전달됩니다. 모델명: gpt-image-2.

텍스트로 이미지 생성

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "quality": "medium",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

이미지로 이미지 생성(편집)

urls로 1~10장의 참조 이미지를 전달하세요. 모델은 이를 prompt에 설명된 편집을 위한 시각적 맥락으로 사용합니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "quality": "medium",
      "resolution": "1k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

GPT Image 2 파라미터 레퍼런스

gpt-image-2 모델의 모든 inputs 파라미터에 대한 전체 레퍼런스입니다.

파라미터타입필수설명
promptstring생성할 이미지에 대한 텍스트 설명, 또는 urls가 제공된 경우 적용할 편집 내용.
urlsstring[]아니요이미지로 이미지(편집) 모드용 참조 이미지 URL(1~10장). 텍스트로 이미지 생성 시 생략. 공개 HTTPS URL을 허용합니다.
qualitystring아니요"medium" / "high". 기본값: "medium". 크레딧은 등급에 따라 달라집니다(요금제 참고).
resolutionstring아니요"1k" / "2k" / "4k". 기본값: "2k". 크레딧은 등급에 따라 달라집니다(요금제 참고).
aspectRatiostring아니요"1:1" / "16:9" / "9:16" / "4:3" / "3:4". 기본값: "1:1".
outputFormatstring아니요"png" / "jpeg" / "webp". 기본값: "png".

입력 이미지 요구 사항(이미지로 이미지 모드)

  • 작업당 참조 이미지 최대 10장
  • 이미지당 최대 파일 크기 50MB
  • 짧은 변 ≥ 256px
  • 화면 비율은 1:3~3:1 사이
  • 형식: JPEG, JPG, PNG, WEBP

이미지당 크레딧은 해상도와 품질에 따라 달라집니다 — 전체 표는 요금제 섹션을 참고하세요.

Nano Banana 2

Nano Banana 2은 gpt-image-2보다 더 폭넓은 화면 비율을 지원하는 고품질 이미지 모델입니다 — 세로/가로 프리셋(3:2, 2:3, 4:5, 5:4)과 시네마틱한 21:9가 추가되었습니다. 하나의 워크플로에서 두 모드를 모두 처리합니다 — urls를 전달하면 자동으로 편집 모드로 전환됩니다. 모델명: nano-banana-2.

텍스트로 이미지 생성

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

이미지로 이미지 생성(편집)

urls로 1~10장의 참조 이미지를 전달하세요. 모델은 이를 prompt에 설명된 편집을 위한 시각적 맥락으로 사용합니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Nano Banana 2 파라미터 레퍼런스

nano-banana-2 모델의 모든 inputs 파라미터에 대한 전체 레퍼런스입니다.

파라미터타입필수설명
promptstring생성할 이미지에 대한 텍스트 설명, 또는 urls가 제공된 경우 적용할 편집 내용.
urlsstring[]아니요이미지로 이미지(편집) 모드용 참조 이미지 URL(1~10장). 텍스트로 이미지 생성 시 생략. 공개 HTTPS URL을 허용합니다.
resolutionstring아니요"1k" / "2k" / "4k". 기본값: "2k". 크레딧은 등급에 따라 달라집니다(요금제 참고).
aspectRatiostring아니요"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". 기본값: "1:1".

입력 이미지 요구 사항(이미지로 이미지 모드)

  • 작업당 참조 이미지 최대 10장
  • 이미지당 최대 파일 크기 50MB
  • 짧은 변 ≥ 256px
  • 화면 비율은 1:3~3:1 사이
  • 형식: JPEG, JPG, PNG, WEBP

이미지당 크레딧은 해상도에 따라 달라집니다 — 전체 표는 요금제 섹션을 참고하세요.

Nano Banana Pro

Nano Banana Pro은 gpt-image-2보다 더 폭넓은 화면 비율을 지원하는 고품질 이미지 모델입니다 — 세로/가로 프리셋(3:2, 2:3, 4:5, 5:4)과 시네마틱한 21:9가 추가되었습니다. 하나의 워크플로에서 두 모드를 모두 처리합니다 — urls를 전달하면 자동으로 편집 모드로 전환됩니다. 모델명: nano-banana-pro.

텍스트로 이미지 생성

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

이미지로 이미지 생성(편집)

urls로 1~10장의 참조 이미지를 전달하세요. 모델은 이를 prompt에 설명된 편집을 위한 시각적 맥락으로 사용합니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Nano Banana Pro 파라미터 레퍼런스

nano-banana-pro 모델의 모든 inputs 파라미터에 대한 전체 레퍼런스입니다.

파라미터타입필수설명
promptstring생성할 이미지에 대한 텍스트 설명, 또는 urls가 제공된 경우 적용할 편집 내용.
urlsstring[]아니요이미지로 이미지(편집) 모드용 참조 이미지 URL(1~10장). 텍스트로 이미지 생성 시 생략. 공개 HTTPS URL을 허용합니다.
resolutionstring아니요"1k" / "2k" / "4k". 기본값: "2k". 크레딧은 등급에 따라 달라집니다(요금제 참고).
aspectRatiostring아니요"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". 기본값: "1:1".

입력 이미지 요구 사항(이미지로 이미지 모드)

  • 작업당 참조 이미지 최대 10장
  • 이미지당 최대 파일 크기 50MB
  • 짧은 변 ≥ 256px
  • 화면 비율은 1:3~3:1 사이
  • 형식: JPEG, JPG, PNG, WEBP

이미지당 크레딧은 해상도에 따라 달라집니다 — 전체 표는 요금제 섹션을 참고하세요.

Seedream 5.0 Lite

2K 또는 4K, 15가지 화면 비율로 빠른 텍스트로 이미지 생성 및 이미지로 이미지 생성을 지원합니다. 모델명: seedream-v5.0-lite.

텍스트로 이미지 생성

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "A cinematic product photograph, soft studio light",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

이미지로 이미지 생성(편집)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "Restyle the references as a premium fashion campaign",
      "urls": ["https://example.com/reference.png"],
      "resolution": "4k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Seedream 5.0 Lite 파라미터

파라미터타입필수설명
promptstring이미지 설명 또는 편집 지시사항.
urlsstring[]아니요공개 HTTPS 참조 이미지 URL 1~10장. 텍스트로 이미지 생성 시 생략.
resolutionstring아니요"2k" 또는 "4k". 기본값: "2k".
aspectRatiostring아니요"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", 또는 "21:9".

Seedream 5.0 Pro

1K 또는 2K로 고화질 생성 및 편집을 지원합니다. 모델명: seedream-v5.0-pro.

텍스트로 이미지 생성

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Editorial portrait with dramatic rim lighting",
      "resolution": "2k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

이미지로 이미지 생성(편집)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Turn the reference into a cinematic poster",
      "urls": ["https://example.com/reference.png"],
      "resolution": "2k",
      "aspectRatio": "1:2"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Seedream 5.0 Pro 파라미터

파라미터타입필수설명
promptstring이미지 설명 또는 편집 지시사항.
urlsstring[]아니요공개 HTTPS 참조 이미지 URL 1~10장. 텍스트로 이미지 생성 시 생략.
resolutionstring아니요"1k" 또는 "2k". 기본값: "1k". 4k는 지원되지 않습니다.
aspectRatiostring아니요"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", 또는 "21:9".

비디오 업스케일러

작업 생성

POST /api/v1/upscale/create

# source.url accepts ANY https video URL — your own CDN, OR a file you first
# uploaded to us via /api/v1/assets/upload (pass the r2Url it returns). No need
# to declare which: we detect it. External URLs are validated; our own are trusted.
curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": { "type": "url", "url": "https://your-cdn.com/video.mp4" },
    "targetResolution": "2k",
    "callBackUrl": "https://your-server.com/webhook"
  }' \
  https://seegen.ai/api/v1/upscale/create
파라미터타입필수설명
source.typestring모든 소스에는 "url"을 사용하세요("uploadId"는 하위 호환성을 위해 유지되는 레거시 별칭입니다).
source.urlstring아니요type="url"인 경우. 자체 CDN 또는 /api/v1/assets/upload가 반환하는 r2Url 등 모든 https 비디오 URL. 외부 URL의 경우, http 및 사설/내부 IP는 거부됩니다(SSRF 방지). 자체 에셋 호스트의 URL은 이 검사를 건너뜁니다.
source.r2Urlstring아니요레거시 — type="uploadId"인 경우에만 사용(하위 호환). 새로 연동할 때는 type="url"을 사용하세요.
targetResolutionstring"720p", "1080p", "2k", 또는 "4k". 소스 해상도보다 높아야 합니다.
callBackUrlstring아니요종료 상태(완료 또는 실패)에 도달했을 때 한 번 호출되는 Webhook URL.

생성 응답

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "orderId": "ord_2026...",
  "status": "validating"
}

상태 조회

GET /api/v1/upscale/query?taskId=...

상태는 validatingprocessingcompleted / failed 순으로 진행됩니다.

curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/upscale/query?taskId=n770mo4sh6rpi690ff3gwymx"

완료 응답

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "completed",
  "targetResolution": "2k",
  "creditsConsumed": 900,
  "result": {
    "url": "https://static.seegen.ai/standalone-upscale/results/...mp4",
    "probedDurationSeconds": 30,
    "probedSourceResolution": "1280x720"
  },
  "error": null,
  "createdAt": "2026-04-29T01:23:45.000Z",
  "finishedAt": "2026-04-29T01:35:01.000Z"
}

실패 응답

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "failed",
  "creditsConsumed": null,
  "result": null,
  "error": {
    "code": "SOURCE_RESOLUTION_TOO_HIGH",
    "message": "Source 3840x2160 is not below target 4k"
  }
}

제한 사항

  • 소스: https URL 또는 이전에 업로드한 R2 URL
  • 최대 600초(5초 미만 클립은 5초로 과금)
  • 파일 크기 ≤ 200MB
  • 형식: MP4 / MOV / WebM
  • 소스 해상도는 타깃보다 낮아야 합니다

요금

  • 720P: 초당 17크레딧(5s = 85, 30s = 510)
  • 1080P: 초당 25크레딧(5s = 125, 30s = 750)
  • 2K: 초당 38크레딧(5s = 190, 30s = 1140)
  • 4K: 초당 50크레딧(5s = 250, 30s = 1500)
  • 최소 5초; 실패 시 크레딧이 자동으로 환불됩니다

오류 코드

조치할 수 있는 일반적인 오류입니다. 그 외의 실패는 내용을 바로 알 수 있는 message 필드를 반환합니다 — 코드가 이 중 하나라고 가정하기 전에 먼저 이를 확인하세요.

코드의미
INVALID_URLURL 형식이 잘못되었거나 https가 아닙니다
URL_NOT_REACHABLEURL을 가져올 수 없습니다 — 공개적으로 접근 가능한지 확인하세요
UNSUPPORTED_MEDIA_TYPE파일이 비디오가 아니거나 MP4 / MOV / WebM 형식이 아닙니다
FILE_TOO_LARGE소스가 200MB를 초과합니다
DURATION_EXCEEDS_LIMIT소스가 600초를 초과합니다
SOURCE_RESOLUTION_TOO_HIGH소스가 이미 타깃과 같거나 더 높습니다 — 더 높은 타깃을 선택하세요
INSUFFICIENT_CREDITS크레딧이 부족합니다 — 충전 후 다시 시도하세요

Webhook 콜백

폴링 대신 callBackUrl을 제공하면 작업이 완료되거나 실패했을 때 결과를 자동으로 받을 수 있습니다.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "callBackUrl": "https://your-server.com/webhook/callback",
    "inputs": {
      "prompt": "A cat playing piano",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

콜백 페이로드

작업이 완료되면 queryTask 응답과 동일한 형식으로 귀하의 URL에 POST 요청을 전송합니다:

// POST to your callBackUrl
{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",
  "creditsUsed": 200,
  "output": [
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

재시도 정책: 엔드포인트가 2xx 이외의 상태를 반환하면, 지연 시간을 늘려가며 최대 3회 재시도합니다(1s, 5s, 30s).

응답 형식

createTask 응답

// 200 OK
{ "taskId": "task_abc123" }

queryTask 응답

{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",     // "PENDING" | "PROCESSING" | "COMPLETED" | "FAILED"
  "creditsUsed": 200,
  "output": [                // null when status is not "COMPLETED"
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,             // error message when status is "FAILED"
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

credits 응답

{
  "credits": 5000,
  "availableCredits": 4800
}

오류 처리

상태 코드의미조치
400잘못된 파라미터오류 메시지를 확인하고 요청을 수정하세요
401API 키가 유효하지 않거나 없음Authorization 헤더 형식을 확인하세요
402크레딧 부족seegen.ai에서 크레딧을 추가로 구매하세요
403접근 거부본인 소유의 작업만 조회할 수 있습니다
404작업을 찾을 수 없음taskId가 올바른지 확인하세요
429동시 실행 제한(작업 3개)기존 작업이 완료될 때까지 기다리세요
500내부 서버 오류몇 초 후 다시 시도하세요

제출 전 검증(코드가 포함된 400)

Seedance 요청은 크레딧이 청구되기 전에 업스트림 계약과 대조하여 확인됩니다. 검사에 실패하면 createTask는 HTTP 400과 함께 { "message": "...", "code": "..." }를 반환하며 작업은 생성되지 않습니다. 메시지에는 어떤 제한에 걸렸는지와 해결 방법이 정확히 안내됩니다.

파라미터타입필수설명
EMPTY_CONTENTcode아니요프롬프트도 없고 참조 이미지/비디오/오디오도 없습니다.
AUDIO_ONLY_NOT_SUPPORTEDcode아니요sd2 / sd2-fast / sd2-mini에서 오디오만 참조로 사용되었습니다. 이미지나 비디오를 추가하거나, sd2.5(오디오 단독 지원)를 사용하세요.
DURATION_OUT_OF_RANGEcode아니요duration이 모델 범위 내의 정수가 아닙니다(sd2 계열 "4s"–"15s", sd2.5 "4s"–"30s").
EDIT_SOURCE_VIDEO_REQUIRED / EXTEND_SOURCE_VIDEO_REQUIREDcode아니요videoUrls에 비디오가 없는 상태로 mode "edit" / "extend"가 요청되었습니다.
EDIT_SOURCE_DURATION_INVALIDcode아니요sd2.5 비디오 편집: 요청의 비디오가 4s 미만이거나 30s를 초과합니다(ARK는 편집 작업의 모든 비디오에 4–30s를 적용합니다).
TOO_MANY_REFERENCEScode아니요모델이 허용하는 수보다 많은 참조 이미지/비디오/오디오 클립이 있습니다(sd2 계열 9 / 3 / 3, sd2.5 30 / 10 / 10; extend는 비디오 3개 이하).
REFERENCE_VIDEO_DURATION_INVALIDcode아니요참조 비디오가 클립당 최대값(sd2 계열 15s, sd2.5 30s)을 초과하거나, 참조 비디오 총 길이가 상한(15s / 30s)을 초과합니다.
ASSET_NOT_FOUND / EXTERNAL_URL / READ_TIMEOUT / READ_FAILEDcode아니요videoUrls 항목을 업로드한 에셋 중 하나로 확인할 수 없거나, 길이를 읽을 수 없습니다.

전체 예제

전체 워크플로: 에셋을 업로드하고, 검토를 기다린 뒤, 승인된 에셋으로 작업을 생성하고, 결과를 폴링합니다.

const API_KEY = process.env.API_KEY;
const BASE = "https://seegen.ai/api/v1";
const headers = {
  "Authorization": `Bearer ${API_KEY}`,
  "Content-Type": "application/json",
};

// 1. Upload asset and wait for review
// (To upload a LOCAL file instead of a URL, POST multipart/form-data with a "file"
//  field — no Content-Type header, no "type" — see the Upload Asset section above.)
async function uploadAndWaitForAsset(url, type = "IMAGE") {
  const res = await fetch(`${BASE}/assets/upload`, {
    method: "POST",
    headers,
    body: JSON.stringify({ url, type }),
  });
  if (!res.ok) throw new Error(`Upload failed: ${(await res.json()).message}`);
  const asset = await res.json();
  console.log(`Asset uploaded: ${asset.assetId}, status: ${asset.status}`);

  // Poll until review completes
  while (true) {
    const statusRes = await fetch(
      `${BASE}/assets/status?assetId=${asset.assetId}`,
      { headers }
    );
    const status = await statusRes.json();
    if (status.status === "ACTIVE") {
      console.log(`Asset approved: asset://${status.volcAssetId}`);
      return status.volcAssetId;
    }
    if (status.status === "FAILED") {
      throw new Error(`Asset review failed: ${status.failReason}`);
    }
    await new Promise((r) => setTimeout(r, 3000));
  }
}

// 2. Create a task
async function createTask(inputs, callBackUrl) {
  const res = await fetch(`${BASE}/jobs/createTask`, {
    method: "POST",
    headers,
    body: JSON.stringify({
      model: "sd2",
      inputs,
      ...(callBackUrl && { callBackUrl }),
    }),
  });
  if (!res.ok) throw new Error(`[${res.status}] ${(await res.json()).message}`);
  return res.json();
}

// 3. Poll until done
async function waitForResult(taskId, timeoutMs = 300000) {
  const start = Date.now();
  while (Date.now() - start < timeoutMs) {
    const res = await fetch(
      `${BASE}/jobs/queryTask?taskId=${taskId}`,
      { headers }
    );
    const result = await res.json();
    if (result.status === "COMPLETED") return result;
    if (result.status === "FAILED") throw new Error(result.error);
    await new Promise((r) => setTimeout(r, 5000));
  }
  throw new Error("Timeout waiting for task");
}

// Full workflow: upload → review → generate → result
async function main() {
  // Upload image and wait for review
  const volcAssetId = await uploadAndWaitForAsset(
    "https://example.com/photo.jpg", "IMAGE"
  );

  // Create task with approved asset
  const { taskId } = await createTask({
    urls: [`asset://${volcAssetId}`],
    prompt: "The person slowly looks up and smiles",
    duration: "5s",
  });
  console.log(`Task: ${taskId}`);

  // Wait for video
  const result = await waitForResult(taskId);
  console.log(`Video: ${result.output[0].url}`);
}

main().catch(console.error);

도움이 필요하신가요? Discord에 참여하거나 문의하기