메인 콘텐츠로 건너뛰기
본 문서에서는 SeeDance 비디오 생성 API 연동 설명을 소개합니다. 이는 사용자 정의 매개변수를 입력하여 SeeDance 공식 비디오를 생성할 수 있는 API입니다.

신청 절차

API를 사용하려면 먼저 SeeDance 비디오 생성 API 해당 페이지에서 서비스를 신청해야 합니다. 페이지에 들어가면 「Acquire」 버튼을 클릭합니다, 아래 그림과 같이: 로그인 또는 등록이 되어 있지 않으면 자동으로 로그인 페이지로 이동하여 등록 및 로그인을 요청합니다. 로그인 및 등록 후에는 자동으로 현재 페이지로 돌아옵니다. 첫 신청 시 무료 사용량이 제공되며, 해당 API를 무료로 사용할 수 있습니다.

기본 사용

먼저 기본 사용 방법을 이해해야 합니다. 즉, 입력 프롬프트 content.text, 유형 content.type=text 및 모델 model을 입력하면 처리된 결과를 얻을 수 있습니다. 구체적인 내용은 다음과 같습니다:

여기서 우리는 Request Headers를 설정했습니다. 포함된 내용은 다음과 같습니다:
  • accept: 어떤 형식의 응답 결과를 받고 싶은지, 여기서는 application/json으로 JSON 형식으로 입력합니다.
  • authorization: API 호출을 위한 키, 신청 후 직접 드롭다운에서 선택할 수 있습니다.
또한 Request Body를 설정했습니다. 포함된 내용은 다음과 같습니다:
  • model: 비디오를 생성하는 모델, 선택 가능한 값: doubao-seedance-1-0-pro-250528, doubao-seedance-1-0-pro-fast-251015, doubao-seedance-1-5-pro-251215, doubao-seedance-1-0-lite-t2v-250428, doubao-seedance-1-0-lite-i2v-250428.
  • content: 입력 내용 배열, typetext 또는 image_url일 수 있습니다.
  • resolution: 출력 해상도, 선택 가능 480p / 720p / 1080p.
  • ratio: 가로 세로 비율, 선택 가능 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptive.
  • duration: 비디오 길이(초), 범위 2–12.
  • seed: 랜덤 시드, 정수, -1에서 4294967295까지.
  • camerafixed: 카메라 고정 여부, true / false.
  • watermark: 워터마크 추가 여부, true / false.
  • generate_audio: 음성 비디오 생성 여부, true / false, 오직 doubao-seedance-1-5-pro-251215만 지원.
  • service_tier: 추론 모드, default(온라인) 또는 flex(오프라인, 가격은 온라인의 50%).
  • return_last_frame: 결과에 비디오 마지막 프레임 이미지 URL을 반환할지 여부.
  • execution_expires_after: 작업 타임아웃 시간(초), 범위 3600–259200.
  • callback_url: 비동기 콜백 주소, 설정 후 API는 즉시 task_id를 반환하며, 작업 완료 시 결과를 해당 주소로 POST합니다.
선택 후, 오른쪽에도 해당 코드가 생성된 것을 볼 수 있습니다. 아래 그림과 같이:

「Try」 버튼을 클릭하여 테스트를 진행할 수 있습니다. 위 그림과 같이, 우리는 다음과 같은 결과를 얻었습니다:
{
  "success": true,
  "task_id": "ec22ae22-0140-4033-8c86-a48b536da595",
  "trace_id": "1cc87db0-8ee5-4436-969b-35cc571a9fd5",
  "data": {
    "task_id": "cgt-20251222005129-62fhb",
    "status": "succeeded",
    "video_url": "https://platform.cdn.acedata.cloud/seedance/f592800a-b87c-4705-8796-cbb8018cae35.mp4",
    "model": "doubao-seedance-1-0-pro-250528"
  }
}
반환된 결과는 여러 필드를 포함하고 있으며, 설명은 다음과 같습니다:
  • success: 이 시점에서 비디오 생성 작업의 상태.
  • task_id: 이 시점에서 비디오 생성 작업 ID.
  • trace_id: 이 시점에서 비디오 생성 추적 ID.
  • data: 이 시점에서 비디오 생성 작업의 결과 목록.
    • task_id: 이 시점에서 비디오 생성 작업의 서버 측 ID.
    • video_url: 이 시점에서 비디오 생성 작업의 비디오 링크.
    • status: 이 시점에서 비디오 생성 작업의 상태.
      • model: 비디오 생성을 위해 사용된 모델.
우리는 만족스러운 비디오 정보를 얻었으며, 결과의 data에서 비디오 링크 주소를 통해 생성된 SeeDance 비디오를 얻을 수 있습니다. 또한 해당 연동 코드를 생성하고 싶다면, 생성된 코드를 직접 복사할 수 있습니다. 예를 들어 CURL의 코드는 다음과 같습니다:
curl -X POST 'https://api.acedata.cloud/seedance/videos' \
-H 'authorization: Bearer ${bearer_token}' \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-d '{
  "content": [{"text":"A kitten yawning at the camera. --rs 720p --rt 16:9 --dur 5 --fps 24 --wm true --seed 11 --cf false","type":"text"}],
  "model": "doubao-seedance-1-0-pro-250528"
}'

인라인 매개변수 설명

content[].text 프롬프트의 끝에 --parameter value 형식으로 생성 매개변수를 추가하여 전달할 수 있습니다(구식 방법, 약한 검증, 잘못 입력 시 자동으로 기본값 사용). 전체 매개변수 목록은 다음과 같습니다:
인라인 매개변수해당 필드설명값 범위
--rsresolution출력 해상도480p / 720p / 1080p
--rtratio가로 세로 비율16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptive
--durduration비디오 길이(초)2–12
--framesframes비디오 프레임 수[29, 289] 중에서 25+4n의 정수
--fpsframespersecond프레임 속도오직 24만 지원
--seedseed랜덤 시드-1에서 4294967295
--cfcamerafixed카메라 고정 여부true / false
--wmwatermark워터마크 추가 여부true / false
추천 방법: Request Body에서 해당 최상위 필드(예: resolution, ratio 등)를 직접 사용하여 강력한 검증 모드를 설정합니다. 매개변수 입력 오류 시 명확한 오류 메시지를 반환하여 문제를 더 쉽게 파악할 수 있습니다.

음성 비디오 생성

doubao-seedance-1-5-pro-251215generate_audio 매개변수를 통해 음성이 포함된 비디오를 생성할 수 있습니다:
{
  "model": "doubao-seedance-1-5-pro-251215",
  "content": [
    {
      "type": "text",
      "text": "A girl holds a fox, the wind blows her hair, you can hear the sound of the wind"
    }
  ],
  "generate_audio": true,
  "ratio": "16:9",
  "duration": 5
}
다른 모델은 이 매개변수를 지원하지 않으며, 전달 시 무시됩니다.

이미지로 비디오 첫 프레임 생성

비디오 생성 작업을 원할 경우, 먼저 content 매개변수에 typeimage_url인 항목이 포함되어야 하며, image_url 필드는 객체 형식이어야 합니다: {"url": "https://..."} 또는 Base64 형식 {"url": "data:image/png;base64,..."}이어야 합니다.
주의: image_url은 문자열 형식(예: "image_url": "https://...")으로 직접 전달할 수 없으며, 반드시 객체 형식 "image_url": {"url": "https://..."}를 사용해야 합니다. 그렇지 않으면 400 오류가 반환됩니다.
해당 코드:
import requests

url = "https://api.acedata.cloud/seedance/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "content": [
        {
            "type": "image_url",
            "image_url": {
                "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/i2v_foxrgirl.png"
            }
        },
        {
            "type": "text",
            "text": "A girl holds a fox in her arms. She opens her eyes and gazes tenderly at the camera, while the fox affectionately holds her back. As the camera slowly pulls away, her hair is gently blown by the wind. --ratio adaptive  --dur 5"
        }
    ],
    "model": "doubao-seedance-1-0-pro-250528"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
클릭하여 실행하면 즉시 결과를 얻을 수 있습니다. 결과는 다음과 같습니다:
{
    "success": true,
    "task_id": "dc7cceb5-3c12-4de7-a5f4-abcbba3e8e39",
    "trace_id": "b3b09de3-b7fa-4bb0-88b5-aad4b4a96fd4",
    "data": {
        "task_id": "cgt-20251222072003-x2259",
        "status": "succeeded",
        "video_url": "https://platform.cdn.acedata.cloud/seedance/6afb78b8-5ba8-424f-adcd-69423a700b50.mp4",
        "model": "doubao-seedance-1-0-pro-250528"
    }
}
생성된 효과는 이미지로 비디오를 생성한 것이며, 결과는 위와 유사합니다.

이미지로 비디오 첫 및 마지막 프레임 생성

비디오의 첫 및 마지막 프레임을 생성하려면, 먼저 content 매개변수에 image_url 유형을 전달해야 하며, 각각 rolefirst_framelast_frame으로 설정하여 다음과 같은 내용을 지정할 수 있습니다:
  • role: 첫 프레임 또는 마지막 프레임을 지정합니다.
  • image_url
    • url 이미지 링크 동시에 content에는 text 유형을 입력하여 프롬프트 힌트를 제공해야 합니다.
해당 코드:
import requests

url = "https://api.acedata.cloud/seedance/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
   "model": "doubao-seedance-1-0-pro-250528",
    "content": [
         {
            "type": "text",
            "text": "360-degree shot"
        },
        {
            "type": "image_url",
            "image_url": {
                "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/seepro_first_frame.jpeg"
            },
            "role": "first_frame"
        },
        {
            "type": "image_url",
            "image_url": {
                "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/seepro_last_frame.jpeg"
            },
            "role": "last_frame"
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
클릭하여 실행하면 즉시 결과를 얻을 수 있습니다. 결과는 다음과 같습니다:
{
    "success": true,
    "task_id": "f7096c6c-9430-4392-8201-d259632d7afd",
    "trace_id": "4a4a3721-00fb-43d2-aff2-3b516ac01a8a",
    "data": {
        "task_id": "cgt-20251222073134-54qcw",
        "status": "succeeded",
        "video_url": "https://platform.cdn.acedata.cloud/seedance/95f9f5f0-fc50-4c71-bc6f-e154582c141e.mp4",
        "model": "doubao-seedance-1-0-pro-250528"
    }
}
생성된 효과는 캐릭터 생성 비디오이며, 결과는 위와 유사합니다.

비동기 콜백

SeeDance 비디오 생성 API의 생성 시간이 길기 때문에(약 1-2분), callback_url 필드를 통해 비동기 모드를 사용하여 HTTP 연결이 장시간 점유되는 것을 피할 수 있습니다. 전체 프로세스: 클라이언트가 요청을 시작할 때 callback_url을 지정하면, API는 즉시 task_id가 포함된 응답을 반환합니다. 작업이 완료되면 플랫폼은 생성 결과를 POST JSON 형식으로 callback_url로 전송하며, 결과에도 task_id가 포함되어 있어 연관성을 유지할 수 있습니다.
{
  "task_id": "f7096c6c-9430-4392-8201-d259632d7afd"
}
작업이 완료되면 플랫폼이 callback_url로 푸시하는 내용은 다음과 같습니다:
{
  "success": true,
  "task_id": "f7096c6c-9430-4392-8201-d259632d7afd",
  "trace_id": "4a4a3721-00fb-43d2-aff2-3b516ac01a8a",
  "data": {
    "task_id": "cgt-20251222073134-54qcw",
    "status": "succeeded",
    "video_url": "https://platform.cdn.acedata.cloud/seedance/95f9f5f0-fc50-4c71-bc6f-e154582c141e.mp4",
    "model": "doubao-seedance-1-0-pro-250528"
  }
}
결과의 task_id 필드는 요청 시 반환된 것과 일치하며, 이 필드를 통해 작업의 연관성을 실현할 수 있습니다.

오류 처리

API를 호출할 때 오류가 발생하면, API는 해당 오류 코드와 정보를 반환합니다. 예를 들어:
  • 400 token_mismatched: 잘못된 요청, 누락되었거나 잘못된 매개변수 때문일 수 있습니다.
  • 400 api_not_implemented: 잘못된 요청, 누락되었거나 잘못된 매개변수 때문일 수 있습니다.
  • 401 invalid_token: 인증되지 않음, 잘못되었거나 누락된 인증 토큰입니다.
  • 429 too_many_requests: 너무 많은 요청, 비율 제한을 초과했습니다.
  • 500 api_error: 내부 서버 오류, 서버에서 문제가 발생했습니다.

오류 응답 예시

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

결론

이 문서를 통해 SeeDance 비디오 생성 API를 사용하여 입력 프롬프트와 참조 이미지를 통해 비디오를 생성하는 방법을 이해하셨습니다. 이 문서가 API를 더 잘 연결하고 사용하는 데 도움이 되기를 바랍니다. 질문이 있으시면 언제든지 기술 지원 팀에 문의해 주시기 바랍니다.