Seedance API

Seedance 2.5 또는 Seedance 2.0, 비동기 작업, 웹훅, 크레딧 기반 결제 시스템을 활용하여 여러분의 제품에 비디오 생성 기능을 직접 연동해 보세요.

기본 URL
https://api.seevio.ai
목차

소개

본 API를 사용하면 프로그램 방식으로 Seedance 2.5 및 Seedance 2.0 비디오 생성 작업을 처리할 수 있습니다. 권장 모델인 Seedance 2.5는 텍스트 투 비디오, 첫 프레임 또는 첫 프레임 및 마지막 프레임 기반의 이미지 투 비디오, 그리고 멀티모달 참조 투 비디오 생성을 지원합니다. 생성 프로세스는 비동기 방식으로 진행됩니다. 작업을 생성하면 즉시 작업 ID(task ID)가 반환되며, 작업 엔드포인트를 폴링하거나 웹훅을 수신하여 완료된 비디오를 받아볼 수 있습니다.

비동기 작업

폴링은 개발 환경이나 간단한 연동을 구현할 때 적합합니다.

웹훅 지원

프로덕션 환경에서는 웹훅 방식을 추천합니다. 불필요한 반복 폴링을 방지하고, 작업이 최종 상태에 도달했을 때 서비스로 즉시 알림을 받을 수 있기 때문입니다.

크레딧 기반 처리

작업 요청 시 필요한 크레딧이 먼저 예약됩니다. 작업이 성공적으로 완료되면 예약된 크레딧이 차감되며, 실패하거나 시간이 초과된 작업의 크레딧은 자동으로 환불됩니다.

인증

대시보드에서 API 키를 생성한 후 모든 요청에 Bearer 토큰으로 포함하여 전송하세요. 전체 API 키는 생성할 때 딱 한 번만 표시됩니다.

Authorization: Bearer sk_live_xxxxxxxx
sk_live_

실제 서비스 트래픽에는 sk_live_ 키를 사용하세요.

sk_test_

동일한 API 스펙으로 샌드박스 연동 테스트를 진행할 때는 sk_test_ 키를 사용하세요.

401

키가 누락되었거나, 잘못되었거나, 만료된 경우 HTTP 401 오류와 함께 invalid_api_key 메시지가 반환됩니다.

빠른 시작

먼저 비디오 생성 작업을 요청하세요. 작업이 정상적으로 접수되면, 결과물을 전달받을 방식을 선택합니다. 작업 엔드포인트를 폴링하거나 웹훅을 통해 최종 결과를 수신할 수 있습니다.

작업 생성 요청하기

비동기 비디오 생성 작업을 생성하고 즉시 작업 ID를 발급받습니다.

curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "callback_url": "https://your-domain.com/api/seedance/webhook",
    "input": {
      "prompt": "a cat surfing on a neon wave, cinematic lighting",
      "generation_type": "text-to-video",
      "duration": 5,
      "aspect_ratio": "16:9",
      "resolution": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false
    }
  }'
결과 수신 방법 1: 폴링

연동 서비스에서 직접 상태를 확인하고 싶을 때, 작업 상태 조회 엔드포인트를 주기적으로 호출합니다.

curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"
결과 수신 방법 2: 웹훅

작업 생성 요청 시 callback_url을 함께 전달하면, 생성 완료 또는 실패 시 콜백을 받아 연동 시스템의 작업 기록을 자동으로 업데이트할 수 있습니다.

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrl = callbackData.data.results[0];
    // Save the video URL or update your own task record here.
  }

  if (callbackData.status === "failed") {
    const errorMessage = callbackData.data.failed_reason;
    // Mark your own task record as failed here.
  }

  return new Response(null, { status: 200 });
}

비디오 생성 작업 요청

POST /v1/videos/generations를 호출하여 비디오 생성 작업을 생성합니다. 요청 바디의 최상위 레벨에는 model 정보와 선택 사항인 callback_url, 그리고 prompt 및 생성 설정을 포함한 input 객체가 들어갑니다.

POST
/v1/videos/generations
curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "callback_url": "https://your-domain.com/api/seedance/webhook",
    "input": {
      "prompt": "a cat surfing on a neon wave, cinematic lighting",
      "generation_type": "text-to-video",
      "duration": 5,
      "aspect_ratio": "16:9",
      "resolution": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false
    }
  }'

생성 모드

generation_type 매개변수는 허용되는 미디어 입력값의 종류와 모델이 이를 해석하는 방식을 제어합니다.

Seedance 2.5 지원 기능
seedance-2-5

model을 seedance-2-5로 설정하여 480p 또는 720p 해상도의 4초~30초 길이의 비디오를 생성할 수 있습니다.

  • 텍스트 투 비디오: 가변 종횡비(adaptive) 또는 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 종횡비 지원
  • 이미지 투 비디오: 1장(첫 프레임) 또는 2장(첫 프레임 및 마지막 프레임)의 이미지 기반 생성, 종횡비는 가변(adaptive)으로만 지원
  • 참조 투 비디오: 이미지 최대 30장, 비디오 최대 10개, 오디오 최대 10개까지 참조 가능 (전체 미디어 파일은 총 50개 이하로 제한)
  • 참조 비디오 및 오디오는 각각 2초~30초 길이여야 하며, 전체 비디오 및 전체 오디오의 총합 길이는 각각 30초 이하여야 함
  • 오디오 단독 참조 입력 및 return_last_frame 기능을 지원하며, seed 입력은 지원하지 않음
모드필수 미디어선택 미디어참고
text-to-videopromptduration, aspect_ratio, resolution, seed텍스트 프롬프트만 사용합니다. image_urls, video_urls, audio_urls는 필요하지 않습니다.
image-to-videoprompt + image_urls 배열 (이미지 URL 1~2개)duration, aspect_ratio, resolution, seedimage_urls는 배열 형식이어야 합니다. 첫 프레임 지정을 위해 1개의 이미지 URL을 전달하거나, 첫 프레임과 마지막 프레임 지정을 위해 2개의 이미지 URL을 전달합니다. 비디오 및 오디오는 무시됩니다.
reference-to-videoprompt + 최소 1개 이상의 이미지, 비디오 또는 오디오 참조 파일각 미디어 한도 범위 내의 이미지, 비디오, 오디오 파일Seedance 2.5는 오디오 파일만 단독으로 참조하는 방식을 지원합니다. Seedance 2.0의 경우 오디오를 포함하려면 최소 1개 이상의 이미지 또는 비디오를 함께 제공해야 합니다.
text-to-video

텍스트 프롬프트만으로 비디오를 생성하려면 텍스트 투 비디오를 사용하세요.

curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "callback_url": "https://your-domain.com/api/seedance/webhook",
    "input": {
      "prompt": "a cinematic drone shot over a futuristic coastal city at sunrise",
      "generation_type": "text-to-video",
      "duration": 5,
      "aspect_ratio": "16:9",
      "resolution": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false
    }
  }'
image-to-video

input.image_urls 배열에 1~2개의 이미지 URL을 전달하여 이미지 투 비디오를 사용하세요. 1개일 경우 첫 프레임으로, 2개일 경우 각각 첫 프레임과 마지막 프레임으로 적용됩니다. 이 모드에서 비디오 및 오디오 참조 파일은 무시됩니다.

curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "input": {
      "prompt": "the subject turns toward camera, soft studio motion",
      "generation_type": "image-to-video",
      "image_urls": ["https://your.cdn.com/first-frame.jpg"],
      "duration": 5,
      "resolution": "720p"
    }
  }'
reference-to-video

참조 이미지, 비디오, 오디오를 조합하여 보다 상세하고 정교하게 연출하려면 참조 투 비디오를 사용하세요. Seedance 2.5는 오디오 단독 참조를 지원하나, Seedance 2.0은 오디오 제공 시 최소 1개 이상의 이미지 또는 비디오를 함께 입력해야 합니다.

참조 미디어 한도

  • Seedance 2.5: 참조 이미지 최대 30장
  • Seedance 2.5: 참조 비디오 최대 10개 (개당 2초~30초, 전체 비디오 길이 합계 30초 이하)
  • Seedance 2.5: 참조 오디오 최대 10개 (개당 2초~30초, 전체 오디오 길이 합계 30초 이하)
  • Seedance 2.5: 모든 유형을 포함하여 전체 미디어 개수 최대 50개 제한
  • Seedance 2.0 계열 모델은 기존 제한 사항이 유지됩니다: 이미지 최대 9장, 비디오 최대 3개, 오디오 최대 3개, 비디오/오디오 그룹당 총 길이 15초 제한

지원하는 입력 조합

텍스트 + 이미지
텍스트 + 비디오
텍스트 + 오디오 (Seedance 2.5 전용)
텍스트 + 이미지 + 비디오
텍스트 + 이미지 + 오디오
텍스트 + 비디오 + 오디오
텍스트 + 이미지 + 비디오 + 오디오
curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "input": {
      "prompt": "use the product from image 1 and the camera motion from the reference video",
      "generation_type": "reference-to-video",
      "image_urls": ["https://your.cdn.com/product.jpg"],
      "video_urls": ["https://your.cdn.com/camera-motion.mp4"],
      "audio_urls": [],
      "duration": 8,
      "resolution": "720p"
    }
  }'

요청 매개변수

매개변수 이름, Enum 값, 엔드포인트 경로, 예시 등은 고정된 API 규격입니다. 아래에서 각 필드의 상세 동작 방식을 확인할 수 있습니다.

헤더

헤더필수 여부설명예시
Authorization요청 인증에 사용되는 Bearer 형식의 API 키입니다.Bearer sk_live_xxx
Content-Type모든 쓰기 요청은 JSON 포맷으로 이루어집니다.application/json

최상위 필드

필드명타입필수 여부기본값범위 / Enum해당 모드예시
model

비디오 생성에 사용할 모델 버전입니다. Seedance 2.5는 seedance-2-5, Seedance 2.0은 seedance-2-0, 속도 최적화 버전은 seedance-2-0-fast, 경량 버전은 seedance-2-0-mini를 선택하세요.

string-seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-mini모두seedance-2-5
callback_url

작업이 성공적으로 완료되거나 실패했을 때 콜백을 수신할 HTTPS 엔드포인트 주소입니다.

string아니요-HTTPS URL (사설 네트워크 대역 불가)모두https://your-domain.com/hook
input

생성 세부 설정 및 참조 미디어 자원입니다.

object--모두-

input.* 필드 목록

필드명타입필수 여부기본값범위 / Enum해당 모드예시
input.prompt

생성할 비디오 내용을 설명하는 텍스트 프롬프트입니다.

string-비어 있지 않은 텍스트모두a cat surfing
input.generation_type

비디오 생성 모드입니다. 지정하지 않을 경우 기본값은 text-to-video입니다.

string아니요text-to-videotext-to-video | image-to-video | reference-to-video-image-to-video
input.image_urls

외부에서 접근 가능한 공개 이미지 URL 배열입니다. 이미지 투 비디오 모드에서는 첫 프레임 지정용 1개 또는 첫 프레임과 마지막 프레임 지정용 2개의 이미지를 전달합니다. 참조 투 비디오 모드의 경우 Seedance 2.5는 최대 30개, Seedance 2.0은 최대 9개까지 지원합니다.

string[]조건부[]이미지 투 비디오: 1~2개 이미지. 참조 투 비디오: Seedance 2.5는 최대 30개, Seedance 2.0은 최대 9개.image-to-video / reference-to-video["https://.../a.jpg"]
input.video_urls

외부에서 접근 가능한 공개 비디오 URL 배열로, 참조 투 비디오 모드에서만 사용됩니다. Seedance 2.5는 최대 10개(개당 2~30초, 총합 30초 이하), Seedance 2.0은 최대 3개(총합 15초 이하)까지 지원합니다.

string[]아니요[]Seedance 2.5: 최대 10개 (개당 2~30초, 전체 합산 길이 30초 이하). Seedance 2.0: 최대 3개 (전체 합산 길이 15초 이하).reference-to-video[]
input.audio_urls

외부에서 접근 가능한 공개 오디오 URL 배열로, 참조 투 비디오 모드에서만 사용됩니다. Seedance 2.5는 최대 10개(개당 2~30초, 총합 30초 이하)까지 지원하며 오디오 단독 참조도 가능합니다. Seedance 2.0은 최대 3개(총합 15초 이하)까지 지원합니다.

string[]아니요[]Seedance 2.5: 최대 10개 (개당 2~30초, 전체 합산 길이 30초 이하). Seedance 2.0: 최대 3개 (전체 합산 길이 15초 이하).reference-to-video[]
input.duration

생성할 비디오의 목표 재생 시간(초)입니다.

int아니요5Seedance 2.5: 4~30초. Seedance 2.0: 4~15초.모두5
input.aspect_ratio

출력 비디오의 종횡비입니다. adaptive로 설정하면 시스템이 이미지 비율에 맞추어 최적의 비디오 비율을 찾아냅니다. Seedance 2.5 이미지 투 비디오 모드는 adaptive만 지원합니다.

string아니요adaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptive모두16:9
input.resolution

출력 비디오의 해상도 규격입니다.

string아니요720pSeedance 2.5: 480p | 720p. Seedance 2.0: 모델 버전에 따라 480p | 720p | 1080p | 4k 지원.모두720p
input.generate_audio

모델이 오디오 생성을 지원하는 경우 오디오를 포함할지 여부입니다.

boolean아니요truetrue | false모두true
input.watermark

출력 비디오에 워터마크를 포함할지 여부입니다.

boolean아니요falsetrue | false모두false
input.web_search

모델이 지원하는 경우 웹 검색 기반 정보 탐색 기능을 활용할지 여부입니다.

boolean아니요falsetrue | false모두false
input.return_last_frame

가능한 경우 최종 비디오의 마지막 프레임 이미지 URL을 함께 반환할지 여부입니다.

boolean아니요falsetrue | false모두false
input.seed

Seedance 2.0 계열 모델에서 결과물의 일관성을 유지하기 위해 제공하는 시드 값입니다. Seedance 2.5는 이 필드를 지원하지 않으므로 포함하지 마세요.

int아니요-1-1 또는 0~4294967295모두-1

크레딧 차감량은 해상도, 비디오 길이, 모델 종류 및 참조 투 비디오 모드에서 비디오 참조 파일이 포함되었는지 여부에 따라 달라집니다. 생성 요청 시 응답으로 반환되는 credits 값은 해당 작업 처리를 위해 실제 예약된 크레딧 수량입니다.

크레딧 단가 보기

응답

POST /v1/videos/generations 요청이 성공적으로 접수되었을 때 반환되는 응답입니다. 이는 작업이 성공적으로 큐에 등록되고 크레딧 예약이 완료되었음을 의미합니다. 반환된 taskId를 사용해 GET /v1/tasks/:id 엔드포인트를 호출하여 상태를 확인하거나, 이후 수신할 웹훅 콜백 데이터와 비교 매칭할 수 있습니다.

POST /v1/videos/generations 성공 응답 예시

{
  "taskId": "3f2aK9mR...",
  "credits": 100
}

작업 상태 조회

현재의 작업 상태를 확인하려면 GET /v1/tasks/:id 엔드포인트를 사용하세요. 너무 빈번한 호출을 피하기 위해 폴링 주기는 최소 10초 이상으로 유지해야 합니다. 실제 프로덕션 서비스를 연동할 때는 웹훅 사용을 권장합니다.

curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"

작업 완료 시 응답

{
  "id": "3f2aK9mR...",
  "status": "completed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": ["https://cdn.seevio.ai/.../x.mp4"],
    "video_expires_at": "2026-06-13T10:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

작업 실패 시 응답

{
  "id": "3f2aK9mR...",
  "status": "failed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}
상태 및 결제 처리 의미
status=queued요청이 정상 접수되었으며, 대기열에서 처리 대기 중입니다.
status=generating시스템에서 비디오 생성을 시작하여 처리 중입니다.
status=completed비디오 생성이 성공적으로 완료되었습니다. data.results에서 생성된 파일의 URL을 확인할 수 있습니다.
status=failed생성 작업이 실패했거나 시간 초과가 발생했습니다.
billing_status=reserved작업이 진행되는 동안 필요한 크레딧이 예약 상태로 유지됩니다.
billing_status=charged작업이 완료되어 예약되었던 크레딧이 최종 차감(확정)되었습니다.
billing_status=refunded작업이 실패하거나 시간 초과되어 예약되었던 크레딧이 자동으로 반환되었습니다.
billing_status=refund_failed환불 트랜잭션 도중 오류가 발생하였습니다. 수동 처리가 필요합니다.

video_expires_at에 표기된 시간이 경과하면 data.results 배열은 비워지게 됩니다. 해당 만료 기간이 지나기 전에 동영상 파일을 꼭 다운로드하여 자체 스토리지에 보관해 주세요.

웹훅

요청 시 callback_url을 제공한 경우, Seedance는 작업 완료 또는 실패 시 지정된 엔드포인트로 최종 결과물이 담긴 JSON 데이터를 전송합니다. 만약 콜백 수신 서버가 2xx 계열 이외의 응답을 반환하거나 15초 이내에 응답하지 않을 경우, 최대 5회까지 재시도를 수행합니다. 이때 재시도 요청도 동일한 task id를 유지하므로 중복 데이터 수신 처리에 유의해 주세요. 콜백 데이터를 성공적으로 기록했다면 즉시 200 OK 응답을 반환하는 것이 좋습니다.

작업 완료 콜백 데이터

{
  "id": "3f2aK9mR...",
  "status": "completed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "data": {
    "results": ["https://cdn.seevio.ai/.../x.mp4"],
    "video_expires_at": "2026-06-13T10:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

작업 실패 콜백 데이터

{
  "id": "3f2aK9mR...",
  "status": "failed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}
export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrl = callbackData.data.results[0];
    // Save the video URL or update your own task record here.
  }

  if (callbackData.status === "failed") {
    const errorMessage = callbackData.data.failed_reason;
    // Mark your own task record as failed here.
  }

  return new Response(null, { status: 200 });
}

콜백 데이터 규격을 유효성 검증하고, id 기준으로 중복 수신 여부를 체크한 뒤, 작업 상태를 업데이트하고 신속하게 응답 처리하세요.

callback_url은 반드시 HTTPS 보안 연결을 사용해야 하며 사설 IP, 루프백, 링크 로컬 네트워크 대역의 IP 주소는 허용되지 않습니다.

오류

잘못된 매개변수 입력, 유효하지 않은 API 키 사용, 크레딧 부족, 속도 제한 초과, 없는 작업 조회 등 API 요청 자체가 실패한 경우 POST /v1/videos/generations 및 GET /v1/tasks/:id는 아래 규격의 에러 응답을 반환합니다. 일부 에러 상황에 따라 required, available, retry_after와 같은 추가 정보 필드가 포함될 수 있습니다.

{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this task.",
    "required": 100,
    "available": 12
  }
}
에러 코드HTTP 상태 코드오류 내용재시도 가능 여부
invalid_request400필수 파라미터가 누락되었거나 형식이 잘못되었습니다.아니요. 요청 파라미터를 수정한 후 다시 요청해야 합니다.
invalid_api_key401API 키가 누락되었거나, 잘못되었거나, 만료되었습니다.아니요. 올바른 API 키를 사용하세요.
insufficient_credits402보유 크레딧이 부족합니다. 작업 접수 및 크레딧 예약이 진행되지 않습니다.크레딧 충전 후 가능합니다.
forbidden403사용된 API 키에 해당 엔드포인트를 호출할 권한(스코프)이 없습니다.아니요.
not_found404요청한 작업이 존재하지 않거나, 해당 API 키의 소유자가 생성한 작업이 아닙니다.아니요.
rate_limited429단시간 내 너무 많은 요청을 보내 API 속도 제한을 초과했습니다.예. 응답의 Retry-After 시간에 맞춰 재시도해 주세요.
internal_error500서버 내부에서 오류가 발생했습니다.예. 잠시 후 다시 시도해 주세요.

호출 속도 제한

API 키별로 슬라이딩 윈도우 방식의 속도 제한이 적용됩니다. 비디오 생성 요청은 기본 분당 100회로 제한되며, 상태 조회(폴링) 요청은 이보다 더 유연하게 허용됩니다. HTTP 429 응답 수신 시, Retry-After 헤더 정보를 참고하세요.

비디오 생성 요청

100/

상태 조회 요청

더 유연한 호출 한도 제공

429 응답 헤더

Retry-After

결제 및 크레딧

API 크레딧 결제는 '요청 시 예약, 성공 시 실제 차감, 실패 시 환불' 정책을 따릅니다. 대시보드의 사용량 페이지에서 상세한 API 크레딧 사용 내역, 작업 로그 및 기간별 이용 통계를 직관적으로 확인할 수 있습니다.

크레딧 예약

작업이 성공적으로 접수되면, 실행에 필요한 크레딧 잔액을 확인하고 먼저 예약해 둡니다.

크레딧 결제(차감)

비디오가 성공적으로 생성되어 작업이 완료되면 예약된 크레딧 차감이 최종 확정됩니다.

크레딧 환불

작업이 도중에 실패하거나 시간이 초과된 경우, 예약했던 크레딧은 시스템이 자동으로 반환합니다.

대시보드에서 사용량 확인하기

실시간 API 호출 로그, 작업 진행 타임라인, 크레딧 사용 이력 및 기간별 데이터 시각화 통계를 제공합니다.

API 로그 확인