Text-to-Video API

Seedance 2.5를 찾고 계신가요? Seedance 2.5(네이티브 4K · 30s · 최대 50개 참조)는 2026년 6월 23일 발표되었으며 공개 API는 2026년 7월 초 제공 예정입니다. 2.5의 공식 model ID와 파라미터는 아직 공개되지 않았습니다 — 이 페이지는 현재 사용 가능한 Seedance 2.0 API를 다룹니다. API 액세스 받기 →.

순수 텍스트 프롬프트만으로 영상을 생성합니다. Seedance 2.0에서 가장 일반적으로 쓰이는 모드이며, 크리에이티브 아이데이션, 광고 스크립트, 스토리보드, 숏폼 콘텐츠처럼 시작 시점에 시각적 참조 자료가 없는 상황에 적합합니다.

엔드포인트

POST https://api.evolink.ai/v1/videos/generations

모델 ID: seedance-2.0-text-to-video

더 빠른 생성 속도와 낮은 비용을 원한다면 seedance-2.0-fast-text-to-video를 사용하세요. 매개변수 구조는 동일합니다.

요청 매개변수

매개변수유형필수기본값설명
modelstringseedance-2.0-text-to-video로 지정해야 합니다
promptstring영상 내용 설명. 한국어/중국어 500자 이하 또는 영어 1000단어 이하
durationinteger아니요5영상 길이(초). 4~15 범위. 초 단위로 과금됨
qualitystring아니요720p품질 등급: 480p, 720p, 1080p, 4k
aspect_ratiostring아니요16:916:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive
generate_audioboolean아니요true동기화된 오디오(환경음, 음악, 대사)를 생성할지 여부
model_params.web_searchboolean아니요false활성화하면 모델이 최신 정보 검색이 필요한지 자율적으로 판단합니다. 실제 검색이 발생한 경우에만 과금됩니다
callback_urlstring아니요작업 완료 콜백을 받을 HTTPS URL. 최대 2048자, 사설 IP 금지

매개변수 상세

좋은 prompt 작성

  • 피사체, 동작, 카메라 워크(팬/틸트/줌/돌리), 조명 분위기를 묘사하세요
  • 대사는 곧은 큰따옴표로 감싸 전용 음성 합성을 트리거하세요: 그녀는 돌아서서 말했다: "드디어 왔구나."
  • 프롬프트 안에서 특정 종횡비 값(예: "2.35:1")을 요구하지 마세요. 대신 aspect_ratio 필드를 사용하세요

generate_audio: false 는 무음 영상을 출력합니다. 시각적 품질 손실은 없으며 대역폭만 약간 절약됩니다. 오디오 생성 자체에는 추가 비용이 없습니다.

model_params.web_search: true 는 다음과 같은 경우에 유용합니다.

  • 프롬프트가 "최신", "오늘", "이번 주" 같은 시간적 내용을 참조할 때
  • 실제 사건, 인물, 장소를 언급해야 하는 브랜드 광고가 필요할 때
  • 모델이 검색의 필요성을 내부적으로 판단합니다. 검색이 필요 없으면 수행되지 않고 추가 과금도 발생하지 않습니다

요청 예제

cURL

curl -X POST https://api.evolink.ai/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-text-to-video",
    "prompt": "A macro lens focuses on a green glass frog on a leaf. The focus gradually shifts from its smooth skin to its completely transparent abdomen, where a bright red heart is beating powerfully and rhythmically.",
    "duration": 8,
    "quality": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }'

Python

import requests

response = requests.post(
    "https://api.evolink.ai/v1/videos/generations",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "model": "seedance-2.0-text-to-video",
        "prompt": "A luxury watch rotating slowly on a marble surface, soft studio lighting, product showcase, cinematic",
        "duration": 8,
        "quality": "720p",
        "aspect_ratio": "16:9",
        "generate_audio": False
    }
)

task = response.json()
print(f"Task ID: {task['id']}")

Node.js

const res = await fetch("https://api.evolink.ai/v1/videos/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "seedance-2.0-text-to-video",
    prompt: "A cinematic sunset over the ocean, wide angle",
    duration: 5,
    quality: "720p",
    aspect_ratio: "16:9",
    model_params: { web_search: false }
  })
});

const task = await res.json();
console.log("Task ID:", task.id);

응답

요청이 성공적으로 접수되면 즉시 작업 객체를 반환합니다(HTTP 200). 이 시점에서는 아직 생성이 시작되지 않은 상태입니다.

{
    "id": "task-unified-1774857405-abc123",
    "object": "video.generation.task",
    "created": 1774857405,
    "model": "seedance-2.0-text-to-video",
    "status": "pending",
    "progress": 0,
    "type": "video",
    "task_info": {
        "can_cancel": true,
        "estimated_time": 165,
        "video_duration": 8
    },
    "usage": {
        "billing_rule": "per_second",
        "credits_reserved": 50,
        "user_group": "default"
    }
}

필드 레퍼런스

필드설명
id작업 ID — 상태 폴링이나 웹훅 매칭에 사용
statuspendingprocessingcompleted / failed
progress0~100 퍼센트
task_info.estimated_time완료까지 예상 소요 시간(초)
task_info.video_duration요청한 영상 길이
task_info.can_cancel취소 엔드포인트를 아직 호출할 수 있는지 여부
usage.billing_rule항상 per_second
usage.credits_reserved예약된 크레딧 — 실제 과금은 작업이 completed 상태가 되었을 때 정산됨

결과 가져오기

요청을 보낸 뒤 최종 영상 URL을 받는 방법은 두 가지입니다.

  1. 폴링 — 5초마다 GET /v1/tasks/{id} 호출. Async Tasks 참고.
  2. 웹훅 — 요청에 callback_url을 전달하면 작업이 완료될 때 시스템이 결과를 POST로 보냅니다. Webhooks 참고.

생성된 영상 URL은 24시간 동안 유효합니다. 자체 스토리지로 즉시 다운로드해 보관하세요.

FAQ

text-to-video에 image_urls를 전달하면 왜 오류가 나나요? text-to-video는 어떤 미디어 입력도 받지 않습니다. 참조 이미지가 있다면 image-to-video를 사용하세요.

정확한 픽셀 해상도를 지정할 수 있나요? 없습니다. quality480p, 720p, 1080p, 4k 등급을 노출하며, 실제 픽셀 크기는 aspect_ratioquality 조합에 따라 결정됩니다.

대사를 자연스럽게 들리게 하려면? 대사 부분을 곧은 큰따옴표로 감싸세요. 모델이 이를 자동으로 대사로 인식하여, 환경 내레이션으로 처리하지 않고 전용 음성 합성을 실행합니다.

관련 문서