Text-to-Video 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는 지원하지 않음
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를 사용하세요.

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

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

관련 문서