Przejdź do głównej treści
Dokument ten przedstawia sposób integracji z SeeDance Videos Generation API, które umożliwia generowanie oficjalnych filmów SeeDance poprzez wprowadzenie niestandardowych parametrów.

Proces aplikacji

Aby skorzystać z API, należy najpierw przejść do strony SeeDance Videos Generation API i złożyć wniosek o odpowiednią usługę. Po wejściu na stronę, kliknij przycisk „Acquire”, jak pokazano na obrazku: Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować. Po zalogowaniu lub rejestracji automatycznie wrócisz na bieżącą stronę. Podczas pierwszej aplikacji otrzymasz darmowy limit, który pozwala na bezpłatne korzystanie z tego API.

Podstawowe użycie

Najpierw zapoznaj się z podstawowym sposobem użycia, czyli wprowadzeniem słów kluczowych content.text, typu content.type=text oraz modelu model, aby uzyskać przetworzony wynik. Szczegóły są następujące:

Możemy zobaczyć, że ustawiliśmy nagłówki żądania, w tym:
  • accept: format odpowiedzi, który chcemy otrzymać, tutaj wpisujemy application/json, czyli format JSON.
  • authorization: klucz do wywołania API, który można wybrać z rozwijanej listy po złożeniu wniosku.
Dodatkowo ustawiono ciało żądania, w tym:
  • model: model generujący wideo, dostępne wartości: 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: tablica wprowadzonych treści, type może być text lub image_url.
  • resolution: rozdzielczość wyjściowa, dostępne opcje 480p / 720p / 1080p.
  • ratio: proporcje, dostępne opcje 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptive.
  • duration: długość wideo (sekundy), zakres 2–12.
  • seed: losowe ziarno, liczba całkowita, -1 do 4294967295.
  • camerafixed: czy kamera jest stała, true / false.
  • watermark: czy dodać znak wodny, true / false.
  • generate_audio: czy generować wideo z dźwiękiem, true / false, tylko doubao-seedance-1-5-pro-251215 wspiera.
  • service_tier: tryb wnioskowania, default (online) lub flex (offline, cena 50% ceny online).
  • return_last_frame: czy w wynikach zwrócić URL ostatniej klatki wideo.
  • execution_expires_after: czas wygaśnięcia zadania (sekundy), zakres 3600–259200.
  • callback_url: adres asynchronicznego wywołania zwrotnego, po ustawieniu API natychmiast zwraca task_id, a po zakończeniu zadania wynik zostanie przesłany na ten adres.
Po dokonaniu wyboru, można zauważyć, że po prawej stronie wygenerowano odpowiedni kod, jak pokazano na obrazku:

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazku, a otrzymamy następujący wynik:
{
  "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"
  }
}
Wynik zwrotny zawiera wiele pól, które są opisane poniżej:
  • success, status zadania generowania wideo.
  • task_id, ID zadania generowania wideo.
  • trace_id, ID śledzenia generowania wideo.
  • data, lista wyników zadania generowania wideo.
    • task_id, ID serwera zadania generowania wideo.
    • video_url, link do wideo z zadania generowania wideo.
    • status, status zadania generowania wideo.
      • model, model użyty do generowania wideo.
Możemy zobaczyć, że otrzymaliśmy satysfakcjonujące informacje o wideo, wystarczy, że na podstawie adresu URL wideo w data uzyskamy wygenerowane wideo SeeDance. Dodatkowo, jeśli chcesz wygenerować odpowiedni kod integracyjny, możesz go bezpośrednio skopiować, na przykład kod CURL wygląda następująco:
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"
}'

Opis parametrów inline

Na końcu słów kluczowych content[].text można przekazać parametry generowania w formie --parameter value (stara metoda, słaba walidacja, w przypadku błędnego wypełnienia automatycznie używane są wartości domyślne). Pełna lista parametrów jest następująca:
Parametr inlineOdpowiednie poleOpisZakres wartości
--rsresolutionRozdzielczość wyjściowa480p / 720p / 1080p
--rtratioProporcje16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptive
--durdurationDługość wideo (sekundy)2–12
--framesframesLiczba klatek wideoLiczby całkowite spełniające 25+4n w zakresie [29, 289]
--fpsframespersecondLiczba klatek na sekundęTylko 24
--seedseedLosowe ziarno-1 do 4294967295
--cfcamerafixedCzy kamera jest stałatrue / false
--wmwatermarkCzy dodać znak wodnytrue / false
Zalecana praktyka: bezpośrednio w ciele żądania używaj odpowiednich pól najwyższego poziomu (takich jak resolution, ratio itp.), aby uzyskać tryb silnej walidacji, w przypadku błędnego wypełnienia parametrów zwróci wyraźny komunikat o błędzie, co ułatwia diagnozowanie problemów.

Generowanie wideo z dźwiękiem

doubao-seedance-1-5-pro-251215 wspiera generowanie wideo z dźwiękiem za pomocą parametru generate_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
}
Inne modele nie obsługują tego parametru, po przekazaniu zostanie on zignorowany.

Generowanie wideo z obrazu - pierwsza klatka

Jeśli chcesz wygenerować wideo z obrazu, najpierw parametr content musi zawierać element z type równym image_url, a pole image_url musi być w formacie obiektowym: {"url": "https://..."} lub w formacie Base64 {"url": "data:image/png;base64,..."}.
Uwaga: image_url nie obsługuje bezpośredniego przekazywania w formacie string (np. "image_url": "https://..."), musi być użyty format obiektowy "image_url": {"url": "https://..."}, w przeciwnym razie zwróci błąd 400.
Odpowiedni kod:
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": "Dziewczyna trzyma lisa w ramionach. Otwiera oczy i patrzy czule w kamerę, podczas gdy lis z czułością trzyma ją z powrotem. Gdy kamera powoli się oddala, jej włosy są delikatnie powiewane przez wiatr. --ratio adaptive  --dur 5"
        }
    ],
    "model": "doubao-seedance-1-0-pro-250528"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Klikając uruchom, można zauważyć, że natychmiast otrzymuje się wynik, jak poniżej:
{
    "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"
    }
}
Można zobaczyć, że wygenerowany efekt to wideo z obrazu, wynik jest podobny do powyższego.

Generowanie wideo z obrazu - pierwsza i ostatnia klatka

Jeśli chcesz wygenerować wideo z pierwszą i ostatnią klatką, najpierw parametr content musi zawierać typ image_url, a także należy ustawić role na first_frame i last_frame, aby określić następujące treści:
  • role: określa pierwszą lub ostatnią klatkę.
  • image_url
    • url link do obrazu Równocześnie content musi również zawierać typ text jako prompt.
Odpowiedni kod:
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": "Ujęcie 360 stopni"
        },
        {
            "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)
Klikając uruchom, można zauważyć, że natychmiast otrzymuje się wynik, jak poniżej:
{
    "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"
    }
}
Można zobaczyć, że wygenerowany efekt to wideo z postaciami, wynik jest podobny do powyższego.

Asynchroniczny callback

Ponieważ czas generowania wideo przez API SeeDance jest dość długi (około 1-2 minut), można użyć pola callback_url w trybie asynchronicznym, aby uniknąć długiego zajmowania połączenia HTTP. Cały proces: klient inicjuje żądanie, określając callback_url, API natychmiast zwraca odpowiedź zawierającą task_id; po zakończeniu zadania platforma wysyła wyniki w formacie POST JSON do callback_url, w wynikach również znajduje się task_id, aby umożliwić powiązanie.
{
  "task_id": "f7096c6c-9430-4392-8201-d259632d7afd"
}
Gdy zadanie zostanie zakończone, zawartość wysyłana do callback_url przez platformę wygląda następująco:
{
  "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"
  }
}
Pole task_id w wynikach jest zgodne z tym, które zostało zwrócone podczas żądania, dzięki czemu można powiązać zadania.

Obsługa błędów

Podczas wywoływania API, jeśli wystąpią błędy, API zwróci odpowiedni kod błędu i informacje. Na przykład:
  • 400 token_mismatched: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 400 api_not_implemented: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
  • 401 invalid_token: Nieautoryzowany, nieprawidłowy lub brakujący token autoryzacyjny.
  • 429 too_many_requests: Zbyt wiele żądań, przekroczono limit.
  • 500 api_error: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

Przykład odpowiedzi błędu

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

Wnioski

Dzięki tej dokumentacji zrozumiałeś, jak korzystać z API generowania wideo SeeDance, aby generować wideo na podstawie wprowadzonych słów kluczowych oraz obrazów referencyjnych. Mamy nadzieję, że ta dokumentacja pomoże Ci lepiej zintegrować i korzystać z tego API. W razie jakichkolwiek pytań, prosimy o kontakt z naszym zespołem wsparcia technicznego.