Image-to-Video API
이미지 1~2장을 영상으로 변환합니다. 동작은 전달한 이미지 개수에 따라 결정됩니다.
- 이미지 1장 → 첫 프레임 모드. 이미지가 영상의 첫 프레임이 되고, 모델이 그로부터 앞으로 진행되는 동작을 생성합니다.
- 이미지 2장 → 첫-마지막 프레임 모드. 첫 번째 이미지가 영상의 시작, 두 번째 이미지가 마지막을 차지하고, 모델이 그 사이의 전환 애니메이션을 생성합니다.
엔드포인트
POST https://api.evolink.ai/v1/videos/generations
모델 ID: seedance-2.0-image-to-video
Fast 변형
seedance-2.0-fast-image-to-video는 이미지 개수에 따라 첫 프레임 모드와 첫-마지막 프레임 모드를 자동으로 감지합니다.
요청 매개변수
| 매개변수 | 유형 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
model | string | 예 | — | seedance-2.0-image-to-video로 지정해야 합니다 |
prompt | string | 예 | — | 동작/카메라/분위기에 대한 자연어 설명. 한국어/중국어 500자 이하 또는 영어 1000단어 이하 |
image_urls | array<string> | 예 | — | 공개적으로 접근 가능한 이미지 URL 1개 또는 2개 |
duration | integer | 아니요 | 5 | 영상 길이(초). 4~15 범위 |
quality | string | 아니요 | 720p | 480p 또는 720p |
aspect_ratio | string | 아니요 | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive |
generate_audio | boolean | 아니요 | true | 동기화된 오디오 생성 여부 |
callback_url | string | 아니요 | — | 작업 완료 콜백을 받을 HTTPS URL. 최대 2048자 |
참고: 이미지는 URL로만 전달합니다. Base64 인라인은 지원하지 않습니다. URL은 인증 없이 공개적으로 GET 가능해야 하며, 로그인 페이지로 리디렉션되어서는 안 됩니다.
이미지 입력 요구 사항
| 제약 | 한도 |
|---|---|
| 개수 | 이미지 1장 또는 2장 |
| 형식 | .jpeg, .png, .webp |
| 크기 | 한 변당 300~6000 px |
| 종횡비 | 0.4 ~ 2.5 (즉 2:5에서 5:2까지) |
| 이미지당 최대 용량 | 30 MB |
| 요청 본문 전체 | 64 MB 이하 |
이 한도를 초과하면 invalid_request가 반환됩니다. 사실적인 사람 얼굴은 지원하지 않으며, 시스템이 자동으로 거부합니다.
첫 프레임 모드 (이미지 1장)
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-image-to-video",
"prompt": "The camera slowly pushes in and the scene comes alive, with wind gently moving the grass in the background.",
"image_urls": ["https://example.com/first-frame.jpg"],
"duration": 5,
"aspect_ratio": "adaptive"
}'
aspect_ratio: "adaptive"는 출력 종횡비를 입력 이미지에 자동으로 맞춥니다.
첫-마지막 프레임 모드 (이미지 2장)
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-image-to-video",
"prompt": "A smooth transition from the sunrise ocean to the sunset ocean in the same location",
"image_urls": [
"https://example.com/sunrise.jpg",
"https://example.com/sunset.jpg"
],
"duration": 6,
"quality": "720p",
"aspect_ratio": "16:9"
}'
두 이미지의 크기와 종횡비가 비슷해야 합니다. 그렇지 않으면 모델이 전환 과정에서 왜곡을 일으킬 수 있습니다.
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-image-to-video",
"prompt": "The model slowly turns, hair flowing gently in the wind",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"quality": "720p"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
응답
{
"id": "task-unified-1774857405-abc123",
"object": "video.generation.task",
"created": 1774857405,
"model": "seedance-2.0-image-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"
}
}
필드 의미는 다른 Seedance 2.0 모델과 동일합니다. 전체 라이프사이클은 Async Tasks를 참고하세요.
FAQ
이미지를 3장 보내면 어떻게 되나요?invalid_request가 반환됩니다. image-to-video는 정확히 1장 또는 2장의 이미지만 허용합니다. 스타일이나 피사체 참조용으로 2장 이상이 필요하다면 Reference-to-Video를 사용하세요.
이미지 URL은 자체 호스팅해야 하나요? 필수는 아닙니다. 공개적으로 GET 가능한 URL이면 됩니다. 재현성이 중요한 프로덕션 파이프라인이라면, 서드파티 URL의 만료를 피하기 위해 자체 객체 스토리지(OSS / S3 / R2)에 이미지를 호스팅하세요.
입력 이미지의 사람 얼굴이 결과에 그대로 보존되나요? 입력 이미지에 사실적인 사람 얼굴이 포함되어 있으면 요청이 즉시 거부됩니다. 얼굴 일관성이 필요한 가상 캐릭터를 만들려면, 먼저 다른 도구로 비실사 얼굴을 합성한 다음 이 API에 입력하세요.
관련 문서
- 모델 개요
- Text-to-Video API
- Reference-to-Video API — 이미지가 2장보다 많거나 멀티모달 입력이 필요할 때
- Fast 모델 —
seedance-2.0-fast-image-to-video - Async Tasks / Webhooks