빠른 시작
약 5분 만에 처음부터 시작해 AI 영상을 생성해 봅니다.
시작 전에 반드시 알아두세요: Seedance 2.0에는 모델이 6개 있으며, 단일 모델이 아닙니다. "자동 모드 감지" 기능은 존재하지 않습니다. 입력 유형에 맞는 정확한
model값을 직접 선택해야 합니다. 전체 매트릭스는 모델 개요를 참고하세요.
사전 준비
- EvoLink 계정 (무료 가입)
- API 키 관리 페이지에서 발급받은 API 키
- HTTP 클라이언트(cURL, Python, Node.js 등)
베이스 URL
https://api.evolink.ai
1단계: API 키 저장
export EVOLINK_API_KEY="your-api-key-here"
2단계: 올바른 모델 선택
가지고 있는 입력에 따라 모델을 고르세요.
| 입력 자료 | 사용할 모델 |
|---|---|
| 텍스트 프롬프트만 | seedance-2.0-text-to-video |
| 참조 이미지 1~2장 | seedance-2.0-image-to-video |
| 이미지 + 비디오 + 오디오 (멀티모달) | seedance-2.0-reference-to-video |
더 빠르고 저렴한 생성을 원한다면 위 모델 이름에 fast- 접두사를 붙이세요. 예: seedance-2.0-fast-text-to-video. Fast 모델 참고.
3단계: 첫 요청 보내기
다음은 text-to-video 예제입니다.
import os
import requests
response = requests.post(
"https://api.evolink.ai/v1/videos/generations",
headers={
"Authorization": f"Bearer {os.environ['EVOLINK_API_KEY']}",
"Content-Type": "application/json"
},
json={
"model": "seedance-2.0-text-to-video",
"prompt": "A golden retriever running through a sunlit meadow, cinematic slow motion",
"duration": 5,
"quality": "720p",
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
응답 (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": 5
},
"usage": {
"billing_rule": "per_second",
"credits_reserved": 50,
"user_group": "default"
}
}
billing_rule은 항상 per_second입니다. duration 값이 길수록 비용이 늘어납니다.
4단계: 영상 폴링하기
모든 생성 요청은 비동기입니다. 작업 ID를 사용해 결과를 폴링하세요.
import time
task_id = task["id"]
while True:
status = requests.get(
f"https://api.evolink.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['EVOLINK_API_KEY']}"}
)
result = status.json()
if result["status"] == "completed":
print(f"Video URL: {result['results'][0]}")
break
if result["status"] == "failed":
print("Generation failed")
break
print(f"Progress: {result['progress']}%")
time.sleep(5)
중요: 생성된 영상 URL은 24시간 동안 유효합니다. 즉시 자체 스토리지로 다운로드해 보관하세요.
프로덕션 환경에서는 폴링보다 웹훅(callback_url) 사용을 권장합니다.
자주 발생하는 함정
| 증상 | 원인 | 해결 방법 |
|---|---|---|
model에서 400 invalid_request | "model": "seedance-2.0"이라고 작성함 | 전체 모델 ID를 사용하세요. 예: seedance-2.0-text-to-video |
image_urls 전달 시 오류 | text-to-video는 미디어 입력을 받지 않음 | seedance-2.0-image-to-video를 사용하세요 |
quality: "1080p" 거부됨 | 1080p는 지원하지 않음 | 480p 또는 720p를 사용하세요 |
| 30 MB 또는 6000 px를 넘는 이미지 거부됨 | 이미지 입력 한도 초과 | 허용 범위 내로 압축하세요 (image-to-video 참고) |
다음 단계
- 모델 개요 — 6개 모델 매트릭스와 의사결정 트리
- 인증 — Bearer 토큰 상세 설명
- Text-to-Video / Image-to-Video / Reference-to-Video
- Async Tasks — 폴링 엔드포인트 상세
- Webhooks —
callback_url을 통한 실시간 알림