[{"data":1,"prerenderedAt":1913},["ShallowReactive",2],{"docs-/docs/sdks":3},{"id":4,"title":5,"body":6,"description":1906,"extension":1907,"meta":1908,"navigation":93,"path":1909,"seo":1910,"stem":1911,"__hash__":1912},"content/en/docs/sdks.md","SDKs & Examples - Seedance 2.0 API",{"type":7,"value":8,"toc":1889},"minimark",[9,14,18,23,34,44,48,53,575,579,1063,1067,1189,1193,1197,1311,1315,1429,1433,1436,1592,1614,1618,1633,1725,1733,1737,1832,1838,1842,1845,1849,1885],[10,11,13],"h1",{"id":12},"sdks-code-examples","SDKs & Code Examples",[15,16,17],"p",{},"The Seedance 2.0 API uses a standard REST interface and can be called from any HTTP client — no SDK required. This page provides ready-to-copy code for all three generation modes.",[19,20,22],"h2",{"id":21},"base-url","Base URL",[24,25,30],"pre",{"className":26,"code":28,"language":29},[27],"language-text","https://api.evolink.ai\n","text",[31,32,28],"code",{"__ignoreMap":33},"",[35,36,37],"blockquote",{},[15,38,39,40,43],{},"All examples assume ",[31,41,42],{},"export EVOLINK_API_KEY=\"your-api-key-here\"",".",[19,45,47],{"id":46},"text-to-video","Text-to-Video",[49,50,52],"h3",{"id":51},"python","Python",[24,54,57],{"className":55,"code":56,"language":51,"meta":33,"style":33},"language-python shiki shiki-themes github-dark","import os\nimport time\nimport requests\n\nAPI_KEY = os.environ[\"EVOLINK_API_KEY\"]\nBASE_URL = \"https://api.evolink.ai\"\n\nheaders = {\n    \"Authorization\": f\"Bearer {API_KEY}\",\n    \"Content-Type\": \"application/json\"\n}\n\n# 1. Create task\nresponse = requests.post(\n    f\"{BASE_URL}/v1/videos/generations\",\n    headers=headers,\n    json={\n        \"model\": \"seedance-2.0-text-to-video\",\n        \"prompt\": \"A cinematic sunset over the ocean, wide shot\",\n        \"duration\": 5,\n        \"quality\": \"720p\",\n        \"aspect_ratio\": \"16:9\"\n    }\n)\ntask_id = response.json()[\"id\"]\nprint(f\"Task created: {task_id}\")\n\n# 2. Poll\nwhile True:\n    result = requests.get(f\"{BASE_URL}/v1/tasks/{task_id}\", headers=headers).json()\n\n    if result[\"status\"] == \"completed\":\n        print(f\"Video URL: {result['results'][0]}\")\n        break\n    if result[\"status\"] == \"failed\":\n        print(\"Generation failed\")\n        break\n\n    print(f\"Progress: {result['progress']}%\")\n    time.sleep(5)\n",[31,58,59,72,80,88,95,115,126,131,143,167,178,184,189,196,207,223,235,246,259,272,285,298,309,315,321,337,364,369,375,387,426,431,454,490,496,514,526,531,536,565],{"__ignoreMap":33},[60,61,64,68],"span",{"class":62,"line":63},"line",1,[60,65,67],{"class":66},"snl16","import",[60,69,71],{"class":70},"s95oV"," os\n",[60,73,75,77],{"class":62,"line":74},2,[60,76,67],{"class":66},[60,78,79],{"class":70}," time\n",[60,81,83,85],{"class":62,"line":82},3,[60,84,67],{"class":66},[60,86,87],{"class":70}," requests\n",[60,89,91],{"class":62,"line":90},4,[60,92,94],{"emptyLinePlaceholder":93},true,"\n",[60,96,98,102,105,108,112],{"class":62,"line":97},5,[60,99,101],{"class":100},"sDLfK","API_KEY",[60,103,104],{"class":66}," =",[60,106,107],{"class":70}," os.environ[",[60,109,111],{"class":110},"sU2Wk","\"EVOLINK_API_KEY\"",[60,113,114],{"class":70},"]\n",[60,116,118,121,123],{"class":62,"line":117},6,[60,119,120],{"class":100},"BASE_URL",[60,122,104],{"class":66},[60,124,125],{"class":110}," \"https://api.evolink.ai\"\n",[60,127,129],{"class":62,"line":128},7,[60,130,94],{"emptyLinePlaceholder":93},[60,132,134,137,140],{"class":62,"line":133},8,[60,135,136],{"class":70},"headers ",[60,138,139],{"class":66},"=",[60,141,142],{"class":70}," {\n",[60,144,146,149,152,155,158,161,164],{"class":62,"line":145},9,[60,147,148],{"class":110},"    \"Authorization\"",[60,150,151],{"class":70},": ",[60,153,154],{"class":66},"f",[60,156,157],{"class":110},"\"Bearer ",[60,159,160],{"class":100},"{API_KEY}",[60,162,163],{"class":110},"\"",[60,165,166],{"class":70},",\n",[60,168,170,173,175],{"class":62,"line":169},10,[60,171,172],{"class":110},"    \"Content-Type\"",[60,174,151],{"class":70},[60,176,177],{"class":110},"\"application/json\"\n",[60,179,181],{"class":62,"line":180},11,[60,182,183],{"class":70},"}\n",[60,185,187],{"class":62,"line":186},12,[60,188,94],{"emptyLinePlaceholder":93},[60,190,192],{"class":62,"line":191},13,[60,193,195],{"class":194},"sAwPA","# 1. Create task\n",[60,197,199,202,204],{"class":62,"line":198},14,[60,200,201],{"class":70},"response ",[60,203,139],{"class":66},[60,205,206],{"class":70}," requests.post(\n",[60,208,210,213,215,218,221],{"class":62,"line":209},15,[60,211,212],{"class":66},"    f",[60,214,163],{"class":110},[60,216,217],{"class":100},"{BASE_URL}",[60,219,220],{"class":110},"/v1/videos/generations\"",[60,222,166],{"class":70},[60,224,226,230,232],{"class":62,"line":225},16,[60,227,229],{"class":228},"s9osk","    headers",[60,231,139],{"class":66},[60,233,234],{"class":70},"headers,\n",[60,236,238,241,243],{"class":62,"line":237},17,[60,239,240],{"class":228},"    json",[60,242,139],{"class":66},[60,244,245],{"class":70},"{\n",[60,247,249,252,254,257],{"class":62,"line":248},18,[60,250,251],{"class":110},"        \"model\"",[60,253,151],{"class":70},[60,255,256],{"class":110},"\"seedance-2.0-text-to-video\"",[60,258,166],{"class":70},[60,260,262,265,267,270],{"class":62,"line":261},19,[60,263,264],{"class":110},"        \"prompt\"",[60,266,151],{"class":70},[60,268,269],{"class":110},"\"A cinematic sunset over the ocean, wide shot\"",[60,271,166],{"class":70},[60,273,275,278,280,283],{"class":62,"line":274},20,[60,276,277],{"class":110},"        \"duration\"",[60,279,151],{"class":70},[60,281,282],{"class":100},"5",[60,284,166],{"class":70},[60,286,288,291,293,296],{"class":62,"line":287},21,[60,289,290],{"class":110},"        \"quality\"",[60,292,151],{"class":70},[60,294,295],{"class":110},"\"720p\"",[60,297,166],{"class":70},[60,299,301,304,306],{"class":62,"line":300},22,[60,302,303],{"class":110},"        \"aspect_ratio\"",[60,305,151],{"class":70},[60,307,308],{"class":110},"\"16:9\"\n",[60,310,312],{"class":62,"line":311},23,[60,313,314],{"class":70},"    }\n",[60,316,318],{"class":62,"line":317},24,[60,319,320],{"class":70},")\n",[60,322,324,327,329,332,335],{"class":62,"line":323},25,[60,325,326],{"class":70},"task_id ",[60,328,139],{"class":66},[60,330,331],{"class":70}," response.json()[",[60,333,334],{"class":110},"\"id\"",[60,336,114],{"class":70},[60,338,340,343,346,348,351,354,357,360,362],{"class":62,"line":339},26,[60,341,342],{"class":100},"print",[60,344,345],{"class":70},"(",[60,347,154],{"class":66},[60,349,350],{"class":110},"\"Task created: ",[60,352,353],{"class":100},"{",[60,355,356],{"class":70},"task_id",[60,358,359],{"class":100},"}",[60,361,163],{"class":110},[60,363,320],{"class":70},[60,365,367],{"class":62,"line":366},27,[60,368,94],{"emptyLinePlaceholder":93},[60,370,372],{"class":62,"line":371},28,[60,373,374],{"class":194},"# 2. Poll\n",[60,376,378,381,384],{"class":62,"line":377},29,[60,379,380],{"class":66},"while",[60,382,383],{"class":100}," True",[60,385,386],{"class":70},":\n",[60,388,390,393,395,398,400,402,404,407,409,411,413,415,418,421,423],{"class":62,"line":389},30,[60,391,392],{"class":70},"    result ",[60,394,139],{"class":66},[60,396,397],{"class":70}," requests.get(",[60,399,154],{"class":66},[60,401,163],{"class":110},[60,403,217],{"class":100},[60,405,406],{"class":110},"/v1/tasks/",[60,408,353],{"class":100},[60,410,356],{"class":70},[60,412,359],{"class":100},[60,414,163],{"class":110},[60,416,417],{"class":70},", ",[60,419,420],{"class":228},"headers",[60,422,139],{"class":66},[60,424,425],{"class":70},"headers).json()\n",[60,427,429],{"class":62,"line":428},31,[60,430,94],{"emptyLinePlaceholder":93},[60,432,434,437,440,443,446,449,452],{"class":62,"line":433},32,[60,435,436],{"class":66},"    if",[60,438,439],{"class":70}," result[",[60,441,442],{"class":110},"\"status\"",[60,444,445],{"class":70},"] ",[60,447,448],{"class":66},"==",[60,450,451],{"class":110}," \"completed\"",[60,453,386],{"class":70},[60,455,457,460,462,464,467,469,472,475,478,481,484,486,488],{"class":62,"line":456},33,[60,458,459],{"class":100},"        print",[60,461,345],{"class":70},[60,463,154],{"class":66},[60,465,466],{"class":110},"\"Video URL: ",[60,468,353],{"class":100},[60,470,471],{"class":70},"result[",[60,473,474],{"class":110},"'results'",[60,476,477],{"class":70},"][",[60,479,480],{"class":100},"0",[60,482,483],{"class":70},"]",[60,485,359],{"class":100},[60,487,163],{"class":110},[60,489,320],{"class":70},[60,491,493],{"class":62,"line":492},34,[60,494,495],{"class":66},"        break\n",[60,497,499,501,503,505,507,509,512],{"class":62,"line":498},35,[60,500,436],{"class":66},[60,502,439],{"class":70},[60,504,442],{"class":110},[60,506,445],{"class":70},[60,508,448],{"class":66},[60,510,511],{"class":110}," \"failed\"",[60,513,386],{"class":70},[60,515,517,519,521,524],{"class":62,"line":516},36,[60,518,459],{"class":100},[60,520,345],{"class":70},[60,522,523],{"class":110},"\"Generation failed\"",[60,525,320],{"class":70},[60,527,529],{"class":62,"line":528},37,[60,530,495],{"class":66},[60,532,534],{"class":62,"line":533},38,[60,535,94],{"emptyLinePlaceholder":93},[60,537,539,542,544,546,549,551,553,556,558,560,563],{"class":62,"line":538},39,[60,540,541],{"class":100},"    print",[60,543,345],{"class":70},[60,545,154],{"class":66},[60,547,548],{"class":110},"\"Progress: ",[60,550,353],{"class":100},[60,552,471],{"class":70},[60,554,555],{"class":110},"'progress'",[60,557,483],{"class":70},[60,559,359],{"class":100},[60,561,562],{"class":110},"%\"",[60,564,320],{"class":70},[60,566,568,571,573],{"class":62,"line":567},40,[60,569,570],{"class":70},"    time.sleep(",[60,572,282],{"class":100},[60,574,320],{"class":70},[49,576,578],{"id":577},"nodejs","Node.js",[24,580,584],{"className":581,"code":582,"language":583,"meta":33,"style":33},"language-javascript shiki shiki-themes github-dark","const API_KEY = process.env.EVOLINK_API_KEY;\nconst BASE_URL = \"https://api.evolink.ai\";\n\nconst headers = {\n    \"Authorization\": `Bearer ${API_KEY}`,\n    \"Content-Type\": \"application/json\"\n};\n\n// 1. Create task\nconst createRes = await fetch(`${BASE_URL}/v1/videos/generations`, {\n    method: \"POST\",\n    headers,\n    body: JSON.stringify({\n        model: \"seedance-2.0-text-to-video\",\n        prompt: \"A cinematic sunset over the ocean, wide shot\",\n        duration: 5,\n        quality: \"720p\",\n        aspect_ratio: \"16:9\"\n    })\n});\nconst { id: taskId } = await createRes.json();\nconsole.log(`Task created: ${taskId}`);\n\n// 2. Poll\nwhile (true) {\n    const res = await fetch(`${BASE_URL}/v1/tasks/${taskId}`, { headers });\n    const result = await res.json();\n\n    if (result.status === \"completed\") {\n        console.log(`Video URL: ${result.results[0]}`);\n        break;\n    }\n    if (result.status === \"failed\") {\n        console.log(\"Generation failed\");\n        break;\n    }\n\n    console.log(`Progress: ${result.progress}%`);\n    await new Promise(r => setTimeout(r, 5000));\n}\n","javascript",[31,585,586,605,619,623,634,650,658,663,667,672,701,711,716,732,741,750,759,768,775,780,785,816,836,840,845,858,888,906,910,924,955,962,966,978,990,996,1000,1004,1028,1059],{"__ignoreMap":33},[60,587,588,591,594,596,599,602],{"class":62,"line":63},[60,589,590],{"class":66},"const",[60,592,593],{"class":100}," API_KEY",[60,595,104],{"class":66},[60,597,598],{"class":70}," process.env.",[60,600,601],{"class":100},"EVOLINK_API_KEY",[60,603,604],{"class":70},";\n",[60,606,607,609,612,614,617],{"class":62,"line":74},[60,608,590],{"class":66},[60,610,611],{"class":100}," BASE_URL",[60,613,104],{"class":66},[60,615,616],{"class":110}," \"https://api.evolink.ai\"",[60,618,604],{"class":70},[60,620,621],{"class":62,"line":82},[60,622,94],{"emptyLinePlaceholder":93},[60,624,625,627,630,632],{"class":62,"line":90},[60,626,590],{"class":66},[60,628,629],{"class":100}," headers",[60,631,104],{"class":66},[60,633,142],{"class":70},[60,635,636,638,640,643,645,648],{"class":62,"line":97},[60,637,148],{"class":110},[60,639,151],{"class":70},[60,641,642],{"class":110},"`Bearer ${",[60,644,101],{"class":100},[60,646,647],{"class":110},"}`",[60,649,166],{"class":70},[60,651,652,654,656],{"class":62,"line":117},[60,653,172],{"class":110},[60,655,151],{"class":70},[60,657,177],{"class":110},[60,659,660],{"class":62,"line":128},[60,661,662],{"class":70},"};\n",[60,664,665],{"class":62,"line":133},[60,666,94],{"emptyLinePlaceholder":93},[60,668,669],{"class":62,"line":145},[60,670,671],{"class":194},"// 1. Create task\n",[60,673,674,676,679,681,684,688,690,693,695,698],{"class":62,"line":169},[60,675,590],{"class":66},[60,677,678],{"class":100}," createRes",[60,680,104],{"class":66},[60,682,683],{"class":66}," await",[60,685,687],{"class":686},"svObZ"," fetch",[60,689,345],{"class":70},[60,691,692],{"class":110},"`${",[60,694,120],{"class":100},[60,696,697],{"class":110},"}/v1/videos/generations`",[60,699,700],{"class":70},", {\n",[60,702,703,706,709],{"class":62,"line":180},[60,704,705],{"class":70},"    method: ",[60,707,708],{"class":110},"\"POST\"",[60,710,166],{"class":70},[60,712,713],{"class":62,"line":186},[60,714,715],{"class":70},"    headers,\n",[60,717,718,721,724,726,729],{"class":62,"line":191},[60,719,720],{"class":70},"    body: ",[60,722,723],{"class":100},"JSON",[60,725,43],{"class":70},[60,727,728],{"class":686},"stringify",[60,730,731],{"class":70},"({\n",[60,733,734,737,739],{"class":62,"line":198},[60,735,736],{"class":70},"        model: ",[60,738,256],{"class":110},[60,740,166],{"class":70},[60,742,743,746,748],{"class":62,"line":209},[60,744,745],{"class":70},"        prompt: ",[60,747,269],{"class":110},[60,749,166],{"class":70},[60,751,752,755,757],{"class":62,"line":225},[60,753,754],{"class":70},"        duration: ",[60,756,282],{"class":100},[60,758,166],{"class":70},[60,760,761,764,766],{"class":62,"line":237},[60,762,763],{"class":70},"        quality: ",[60,765,295],{"class":110},[60,767,166],{"class":70},[60,769,770,773],{"class":62,"line":248},[60,771,772],{"class":70},"        aspect_ratio: ",[60,774,308],{"class":110},[60,776,777],{"class":62,"line":261},[60,778,779],{"class":70},"    })\n",[60,781,782],{"class":62,"line":274},[60,783,784],{"class":70},"});\n",[60,786,787,789,792,795,797,800,803,805,807,810,813],{"class":62,"line":287},[60,788,590],{"class":66},[60,790,791],{"class":70}," { ",[60,793,794],{"class":228},"id",[60,796,151],{"class":70},[60,798,799],{"class":100},"taskId",[60,801,802],{"class":70}," } ",[60,804,139],{"class":66},[60,806,683],{"class":66},[60,808,809],{"class":70}," createRes.",[60,811,812],{"class":686},"json",[60,814,815],{"class":70},"();\n",[60,817,818,821,824,826,829,831,833],{"class":62,"line":300},[60,819,820],{"class":70},"console.",[60,822,823],{"class":686},"log",[60,825,345],{"class":70},[60,827,828],{"class":110},"`Task created: ${",[60,830,799],{"class":70},[60,832,647],{"class":110},[60,834,835],{"class":70},");\n",[60,837,838],{"class":62,"line":311},[60,839,94],{"emptyLinePlaceholder":93},[60,841,842],{"class":62,"line":317},[60,843,844],{"class":194},"// 2. Poll\n",[60,846,847,849,852,855],{"class":62,"line":323},[60,848,380],{"class":66},[60,850,851],{"class":70}," (",[60,853,854],{"class":100},"true",[60,856,857],{"class":70},") {\n",[60,859,860,863,866,868,870,872,874,876,878,881,883,885],{"class":62,"line":339},[60,861,862],{"class":66},"    const",[60,864,865],{"class":100}," res",[60,867,104],{"class":66},[60,869,683],{"class":66},[60,871,687],{"class":686},[60,873,345],{"class":70},[60,875,692],{"class":110},[60,877,120],{"class":100},[60,879,880],{"class":110},"}/v1/tasks/${",[60,882,799],{"class":70},[60,884,647],{"class":110},[60,886,887],{"class":70},", { headers });\n",[60,889,890,892,895,897,899,902,904],{"class":62,"line":366},[60,891,862],{"class":66},[60,893,894],{"class":100}," result",[60,896,104],{"class":66},[60,898,683],{"class":66},[60,900,901],{"class":70}," res.",[60,903,812],{"class":686},[60,905,815],{"class":70},[60,907,908],{"class":62,"line":371},[60,909,94],{"emptyLinePlaceholder":93},[60,911,912,914,917,920,922],{"class":62,"line":377},[60,913,436],{"class":66},[60,915,916],{"class":70}," (result.status ",[60,918,919],{"class":66},"===",[60,921,451],{"class":110},[60,923,857],{"class":70},[60,925,926,929,931,933,936,939,941,944,947,949,951,953],{"class":62,"line":389},[60,927,928],{"class":70},"        console.",[60,930,823],{"class":686},[60,932,345],{"class":70},[60,934,935],{"class":110},"`Video URL: ${",[60,937,938],{"class":70},"result",[60,940,43],{"class":110},[60,942,943],{"class":70},"results",[60,945,946],{"class":110},"[",[60,948,480],{"class":100},[60,950,483],{"class":110},[60,952,647],{"class":110},[60,954,835],{"class":70},[60,956,957,960],{"class":62,"line":428},[60,958,959],{"class":66},"        break",[60,961,604],{"class":70},[60,963,964],{"class":62,"line":433},[60,965,314],{"class":70},[60,967,968,970,972,974,976],{"class":62,"line":456},[60,969,436],{"class":66},[60,971,916],{"class":70},[60,973,919],{"class":66},[60,975,511],{"class":110},[60,977,857],{"class":70},[60,979,980,982,984,986,988],{"class":62,"line":492},[60,981,928],{"class":70},[60,983,823],{"class":686},[60,985,345],{"class":70},[60,987,523],{"class":110},[60,989,835],{"class":70},[60,991,992,994],{"class":62,"line":498},[60,993,959],{"class":66},[60,995,604],{"class":70},[60,997,998],{"class":62,"line":516},[60,999,314],{"class":70},[60,1001,1002],{"class":62,"line":528},[60,1003,94],{"emptyLinePlaceholder":93},[60,1005,1006,1009,1011,1013,1016,1018,1020,1023,1026],{"class":62,"line":533},[60,1007,1008],{"class":70},"    console.",[60,1010,823],{"class":686},[60,1012,345],{"class":70},[60,1014,1015],{"class":110},"`Progress: ${",[60,1017,938],{"class":70},[60,1019,43],{"class":110},[60,1021,1022],{"class":70},"progress",[60,1024,1025],{"class":110},"}%`",[60,1027,835],{"class":70},[60,1029,1030,1033,1036,1039,1041,1044,1047,1050,1053,1056],{"class":62,"line":538},[60,1031,1032],{"class":66},"    await",[60,1034,1035],{"class":66}," new",[60,1037,1038],{"class":100}," Promise",[60,1040,345],{"class":70},[60,1042,1043],{"class":228},"r",[60,1045,1046],{"class":66}," =>",[60,1048,1049],{"class":686}," setTimeout",[60,1051,1052],{"class":70},"(r, ",[60,1054,1055],{"class":100},"5000",[60,1057,1058],{"class":70},"));\n",[60,1060,1061],{"class":62,"line":567},[60,1062,183],{"class":70},[49,1064,1066],{"id":1065},"curl","cURL",[24,1068,1072],{"className":1069,"code":1070,"language":1071,"meta":33,"style":33},"language-bash shiki shiki-themes github-dark","# 1. Create task\ncurl -X POST https://api.evolink.ai/v1/videos/generations \\\n  -H \"Authorization: Bearer $EVOLINK_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"seedance-2.0-text-to-video\",\n    \"prompt\": \"A cinematic sunset over the ocean, wide shot\",\n    \"duration\": 5,\n    \"quality\": \"720p\"\n  }'\n\n# Response: {\"id\": \"task-unified-...\", \"status\": \"pending\", ...}\n\n# 2. Query status\ncurl https://api.evolink.ai/v1/tasks/TASK_ID \\\n  -H \"Authorization: Bearer $EVOLINK_API_KEY\"\n","bash",[31,1073,1074,1078,1094,1109,1118,1126,1131,1136,1141,1146,1151,1155,1160,1164,1169,1178],{"__ignoreMap":33},[60,1075,1076],{"class":62,"line":63},[60,1077,195],{"class":194},[60,1079,1080,1082,1085,1088,1091],{"class":62,"line":74},[60,1081,1065],{"class":686},[60,1083,1084],{"class":100}," -X",[60,1086,1087],{"class":110}," POST",[60,1089,1090],{"class":110}," https://api.evolink.ai/v1/videos/generations",[60,1092,1093],{"class":100}," \\\n",[60,1095,1096,1099,1102,1105,1107],{"class":62,"line":82},[60,1097,1098],{"class":100},"  -H",[60,1100,1101],{"class":110}," \"Authorization: Bearer ",[60,1103,1104],{"class":70},"$EVOLINK_API_KEY",[60,1106,163],{"class":110},[60,1108,1093],{"class":100},[60,1110,1111,1113,1116],{"class":62,"line":90},[60,1112,1098],{"class":100},[60,1114,1115],{"class":110}," \"Content-Type: application/json\"",[60,1117,1093],{"class":100},[60,1119,1120,1123],{"class":62,"line":97},[60,1121,1122],{"class":100},"  -d",[60,1124,1125],{"class":110}," '{\n",[60,1127,1128],{"class":62,"line":117},[60,1129,1130],{"class":110},"    \"model\": \"seedance-2.0-text-to-video\",\n",[60,1132,1133],{"class":62,"line":128},[60,1134,1135],{"class":110},"    \"prompt\": \"A cinematic sunset over the ocean, wide shot\",\n",[60,1137,1138],{"class":62,"line":133},[60,1139,1140],{"class":110},"    \"duration\": 5,\n",[60,1142,1143],{"class":62,"line":145},[60,1144,1145],{"class":110},"    \"quality\": \"720p\"\n",[60,1147,1148],{"class":62,"line":169},[60,1149,1150],{"class":110},"  }'\n",[60,1152,1153],{"class":62,"line":180},[60,1154,94],{"emptyLinePlaceholder":93},[60,1156,1157],{"class":62,"line":186},[60,1158,1159],{"class":194},"# Response: {\"id\": \"task-unified-...\", \"status\": \"pending\", ...}\n",[60,1161,1162],{"class":62,"line":191},[60,1163,94],{"emptyLinePlaceholder":93},[60,1165,1166],{"class":62,"line":198},[60,1167,1168],{"class":194},"# 2. Query status\n",[60,1170,1171,1173,1176],{"class":62,"line":209},[60,1172,1065],{"class":686},[60,1174,1175],{"class":110}," https://api.evolink.ai/v1/tasks/TASK_ID",[60,1177,1093],{"class":100},[60,1179,1180,1182,1184,1186],{"class":62,"line":225},[60,1181,1098],{"class":100},[60,1183,1101],{"class":110},[60,1185,1104],{"class":70},[60,1187,1188],{"class":110},"\"\n",[19,1190,1192],{"id":1191},"image-to-video","Image-to-Video",[49,1194,1196],{"id":1195},"first-frame-mode-1-image","First-frame mode (1 image)",[24,1198,1200],{"className":55,"code":1199,"language":51,"meta":33,"style":33},"response = requests.post(\n    f\"{BASE_URL}/v1/videos/generations\",\n    headers=headers,\n    json={\n        \"model\": \"seedance-2.0-image-to-video\",\n        \"prompt\": \"The model slowly turns, hair flowing gently in the wind\",\n        \"image_urls\": [\"https://example.com/portrait.jpg\"],\n        \"duration\": 5,\n        \"quality\": \"720p\",\n        \"aspect_ratio\": \"adaptive\"\n    }\n)\n",[31,1201,1202,1210,1222,1230,1238,1249,1260,1274,1284,1294,1303,1307],{"__ignoreMap":33},[60,1203,1204,1206,1208],{"class":62,"line":63},[60,1205,201],{"class":70},[60,1207,139],{"class":66},[60,1209,206],{"class":70},[60,1211,1212,1214,1216,1218,1220],{"class":62,"line":74},[60,1213,212],{"class":66},[60,1215,163],{"class":110},[60,1217,217],{"class":100},[60,1219,220],{"class":110},[60,1221,166],{"class":70},[60,1223,1224,1226,1228],{"class":62,"line":82},[60,1225,229],{"class":228},[60,1227,139],{"class":66},[60,1229,234],{"class":70},[60,1231,1232,1234,1236],{"class":62,"line":90},[60,1233,240],{"class":228},[60,1235,139],{"class":66},[60,1237,245],{"class":70},[60,1239,1240,1242,1244,1247],{"class":62,"line":97},[60,1241,251],{"class":110},[60,1243,151],{"class":70},[60,1245,1246],{"class":110},"\"seedance-2.0-image-to-video\"",[60,1248,166],{"class":70},[60,1250,1251,1253,1255,1258],{"class":62,"line":117},[60,1252,264],{"class":110},[60,1254,151],{"class":70},[60,1256,1257],{"class":110},"\"The model slowly turns, hair flowing gently in the wind\"",[60,1259,166],{"class":70},[60,1261,1262,1265,1268,1271],{"class":62,"line":128},[60,1263,1264],{"class":110},"        \"image_urls\"",[60,1266,1267],{"class":70},": [",[60,1269,1270],{"class":110},"\"https://example.com/portrait.jpg\"",[60,1272,1273],{"class":70},"],\n",[60,1275,1276,1278,1280,1282],{"class":62,"line":133},[60,1277,277],{"class":110},[60,1279,151],{"class":70},[60,1281,282],{"class":100},[60,1283,166],{"class":70},[60,1285,1286,1288,1290,1292],{"class":62,"line":145},[60,1287,290],{"class":110},[60,1289,151],{"class":70},[60,1291,295],{"class":110},[60,1293,166],{"class":70},[60,1295,1296,1298,1300],{"class":62,"line":169},[60,1297,303],{"class":110},[60,1299,151],{"class":70},[60,1301,1302],{"class":110},"\"adaptive\"\n",[60,1304,1305],{"class":62,"line":180},[60,1306,314],{"class":70},[60,1308,1309],{"class":62,"line":186},[60,1310,320],{"class":70},[49,1312,1314],{"id":1313},"first-last-frame-transition-2-images","First-last-frame transition (2 images)",[24,1316,1318],{"className":55,"code":1317,"language":51,"meta":33,"style":33},"response = requests.post(\n    f\"{BASE_URL}/v1/videos/generations\",\n    headers=headers,\n    json={\n        \"model\": \"seedance-2.0-image-to-video\",\n        \"prompt\": \"A smooth transition from sunrise to sunset over the same ocean\",\n        \"image_urls\": [\n            \"https://example.com/sunrise.jpg\",\n            \"https://example.com/sunset.jpg\"\n        ],\n        \"duration\": 6,\n        \"quality\": \"720p\"\n    }\n)\n",[31,1319,1320,1328,1340,1348,1356,1366,1377,1384,1391,1396,1401,1412,1421,1425],{"__ignoreMap":33},[60,1321,1322,1324,1326],{"class":62,"line":63},[60,1323,201],{"class":70},[60,1325,139],{"class":66},[60,1327,206],{"class":70},[60,1329,1330,1332,1334,1336,1338],{"class":62,"line":74},[60,1331,212],{"class":66},[60,1333,163],{"class":110},[60,1335,217],{"class":100},[60,1337,220],{"class":110},[60,1339,166],{"class":70},[60,1341,1342,1344,1346],{"class":62,"line":82},[60,1343,229],{"class":228},[60,1345,139],{"class":66},[60,1347,234],{"class":70},[60,1349,1350,1352,1354],{"class":62,"line":90},[60,1351,240],{"class":228},[60,1353,139],{"class":66},[60,1355,245],{"class":70},[60,1357,1358,1360,1362,1364],{"class":62,"line":97},[60,1359,251],{"class":110},[60,1361,151],{"class":70},[60,1363,1246],{"class":110},[60,1365,166],{"class":70},[60,1367,1368,1370,1372,1375],{"class":62,"line":117},[60,1369,264],{"class":110},[60,1371,151],{"class":70},[60,1373,1374],{"class":110},"\"A smooth transition from sunrise to sunset over the same ocean\"",[60,1376,166],{"class":70},[60,1378,1379,1381],{"class":62,"line":128},[60,1380,1264],{"class":110},[60,1382,1383],{"class":70},": [\n",[60,1385,1386,1389],{"class":62,"line":133},[60,1387,1388],{"class":110},"            \"https://example.com/sunrise.jpg\"",[60,1390,166],{"class":70},[60,1392,1393],{"class":62,"line":145},[60,1394,1395],{"class":110},"            \"https://example.com/sunset.jpg\"\n",[60,1397,1398],{"class":62,"line":169},[60,1399,1400],{"class":70},"        ],\n",[60,1402,1403,1405,1407,1410],{"class":62,"line":180},[60,1404,277],{"class":110},[60,1406,151],{"class":70},[60,1408,1409],{"class":100},"6",[60,1411,166],{"class":70},[60,1413,1414,1416,1418],{"class":62,"line":186},[60,1415,290],{"class":110},[60,1417,151],{"class":70},[60,1419,1420],{"class":110},"\"720p\"\n",[60,1422,1423],{"class":62,"line":191},[60,1424,314],{"class":70},[60,1426,1427],{"class":62,"line":198},[60,1428,320],{"class":70},[19,1430,1432],{"id":1431},"reference-to-video","Reference-to-Video",[15,1434,1435],{},"Use image, video, and audio reference assets in a single request:",[24,1437,1439],{"className":55,"code":1438,"language":51,"meta":33,"style":33},"response = requests.post(\n    f\"{BASE_URL}/v1/videos/generations\",\n    headers=headers,\n    json={\n        \"model\": \"seedance-2.0-reference-to-video\",\n        \"prompt\": (\n            \"Replicate video 1's first-person perspective and pacing; \"\n            \"use audio 1 as background music throughout. \"\n            \"Scene: a young rider weaving through rain-soaked city streets \"\n            \"at night, neon reflections on wet asphalt.\"\n        ),\n        \"image_urls\": [\"https://example.com/rider-style.jpg\"],\n        \"video_urls\": [\"https://example.com/pov-reference.mp4\"],\n        \"audio_urls\": [\"https://example.com/synthwave-bgm.mp3\"],\n        \"duration\": 10,\n        \"quality\": \"720p\",\n        \"aspect_ratio\": \"16:9\"\n    }\n)\n",[31,1440,1441,1449,1461,1469,1477,1488,1495,1500,1505,1510,1515,1520,1531,1543,1555,1566,1576,1584,1588],{"__ignoreMap":33},[60,1442,1443,1445,1447],{"class":62,"line":63},[60,1444,201],{"class":70},[60,1446,139],{"class":66},[60,1448,206],{"class":70},[60,1450,1451,1453,1455,1457,1459],{"class":62,"line":74},[60,1452,212],{"class":66},[60,1454,163],{"class":110},[60,1456,217],{"class":100},[60,1458,220],{"class":110},[60,1460,166],{"class":70},[60,1462,1463,1465,1467],{"class":62,"line":82},[60,1464,229],{"class":228},[60,1466,139],{"class":66},[60,1468,234],{"class":70},[60,1470,1471,1473,1475],{"class":62,"line":90},[60,1472,240],{"class":228},[60,1474,139],{"class":66},[60,1476,245],{"class":70},[60,1478,1479,1481,1483,1486],{"class":62,"line":97},[60,1480,251],{"class":110},[60,1482,151],{"class":70},[60,1484,1485],{"class":110},"\"seedance-2.0-reference-to-video\"",[60,1487,166],{"class":70},[60,1489,1490,1492],{"class":62,"line":117},[60,1491,264],{"class":110},[60,1493,1494],{"class":70},": (\n",[60,1496,1497],{"class":62,"line":128},[60,1498,1499],{"class":110},"            \"Replicate video 1's first-person perspective and pacing; \"\n",[60,1501,1502],{"class":62,"line":133},[60,1503,1504],{"class":110},"            \"use audio 1 as background music throughout. \"\n",[60,1506,1507],{"class":62,"line":145},[60,1508,1509],{"class":110},"            \"Scene: a young rider weaving through rain-soaked city streets \"\n",[60,1511,1512],{"class":62,"line":169},[60,1513,1514],{"class":110},"            \"at night, neon reflections on wet asphalt.\"\n",[60,1516,1517],{"class":62,"line":180},[60,1518,1519],{"class":70},"        ),\n",[60,1521,1522,1524,1526,1529],{"class":62,"line":186},[60,1523,1264],{"class":110},[60,1525,1267],{"class":70},[60,1527,1528],{"class":110},"\"https://example.com/rider-style.jpg\"",[60,1530,1273],{"class":70},[60,1532,1533,1536,1538,1541],{"class":62,"line":191},[60,1534,1535],{"class":110},"        \"video_urls\"",[60,1537,1267],{"class":70},[60,1539,1540],{"class":110},"\"https://example.com/pov-reference.mp4\"",[60,1542,1273],{"class":70},[60,1544,1545,1548,1550,1553],{"class":62,"line":198},[60,1546,1547],{"class":110},"        \"audio_urls\"",[60,1549,1267],{"class":70},[60,1551,1552],{"class":110},"\"https://example.com/synthwave-bgm.mp3\"",[60,1554,1273],{"class":70},[60,1556,1557,1559,1561,1564],{"class":62,"line":209},[60,1558,277],{"class":110},[60,1560,151],{"class":70},[60,1562,1563],{"class":100},"10",[60,1565,166],{"class":70},[60,1567,1568,1570,1572,1574],{"class":62,"line":225},[60,1569,290],{"class":110},[60,1571,151],{"class":70},[60,1573,295],{"class":110},[60,1575,166],{"class":70},[60,1577,1578,1580,1582],{"class":62,"line":237},[60,1579,303],{"class":110},[60,1581,151],{"class":70},[60,1583,308],{"class":110},[60,1585,1586],{"class":62,"line":248},[60,1587,314],{"class":70},[60,1589,1590],{"class":62,"line":261},[60,1591,320],{"class":70},[35,1593,1594],{},[15,1595,1596,1600,1601,1603,1604,1600,1607,417,1610,1613],{},[1597,1598,1599],"strong",{},"Note:"," ",[31,1602,1431],{}," has ",[1597,1605,1606],{},"no",[31,1608,1609],{},"@Image1",[31,1611,1612],{},"@Video1","-style tag syntax. Describe each asset's role in plain natural language.",[19,1615,1617],{"id":1616},"using-fast-models","Using Fast Models",[15,1619,1620,1621,1624,1625,1628,1629,1632],{},"Swap the ",[31,1622,1623],{},"model"," field from ",[31,1626,1627],{},"seedance-2.0-xxx"," to ",[31,1630,1631],{},"seedance-2.0-fast-xxx"," — all other parameters stay the same:",[24,1634,1636],{"className":55,"code":1635,"language":51,"meta":33,"style":33},"response = requests.post(\n    f\"{BASE_URL}/v1/videos/generations\",\n    headers=headers,\n    json={\n        \"model\": \"seedance-2.0-fast-text-to-video\",  # ← only change\n        \"prompt\": \"A cinematic sunset over the ocean, wide shot\",\n        \"duration\": 5,\n        \"quality\": \"720p\"\n    }\n)\n",[31,1637,1638,1646,1658,1666,1674,1689,1699,1709,1717,1721],{"__ignoreMap":33},[60,1639,1640,1642,1644],{"class":62,"line":63},[60,1641,201],{"class":70},[60,1643,139],{"class":66},[60,1645,206],{"class":70},[60,1647,1648,1650,1652,1654,1656],{"class":62,"line":74},[60,1649,212],{"class":66},[60,1651,163],{"class":110},[60,1653,217],{"class":100},[60,1655,220],{"class":110},[60,1657,166],{"class":70},[60,1659,1660,1662,1664],{"class":62,"line":82},[60,1661,229],{"class":228},[60,1663,139],{"class":66},[60,1665,234],{"class":70},[60,1667,1668,1670,1672],{"class":62,"line":90},[60,1669,240],{"class":228},[60,1671,139],{"class":66},[60,1673,245],{"class":70},[60,1675,1676,1678,1680,1683,1686],{"class":62,"line":97},[60,1677,251],{"class":110},[60,1679,151],{"class":70},[60,1681,1682],{"class":110},"\"seedance-2.0-fast-text-to-video\"",[60,1684,1685],{"class":70},",  ",[60,1687,1688],{"class":194},"# ← only change\n",[60,1690,1691,1693,1695,1697],{"class":62,"line":117},[60,1692,264],{"class":110},[60,1694,151],{"class":70},[60,1696,269],{"class":110},[60,1698,166],{"class":70},[60,1700,1701,1703,1705,1707],{"class":62,"line":128},[60,1702,277],{"class":110},[60,1704,151],{"class":70},[60,1706,282],{"class":100},[60,1708,166],{"class":70},[60,1710,1711,1713,1715],{"class":62,"line":133},[60,1712,290],{"class":110},[60,1714,151],{"class":70},[60,1716,1420],{"class":110},[60,1718,1719],{"class":62,"line":145},[60,1720,314],{"class":70},[60,1722,1723],{"class":62,"line":169},[60,1724,320],{"class":70},[15,1726,1727,1728,43],{},"See ",[1729,1730,1732],"a",{"href":1731},"/docs/fast-models","Fast Models",[19,1734,1736],{"id":1735},"webhooks-instead-of-polling","Webhooks Instead of Polling",[24,1738,1740],{"className":55,"code":1739,"language":51,"meta":33,"style":33},"response = requests.post(\n    f\"{BASE_URL}/v1/videos/generations\",\n    headers=headers,\n    json={\n        \"model\": \"seedance-2.0-text-to-video\",\n        \"prompt\": \"A cat playing piano\",\n        \"duration\": 5,\n        \"callback_url\": \"https://yourapp.com/api/video-callback\"\n    }\n)\n# Your webhook endpoint receives a POST with the same body shape as the task query endpoint\n",[31,1741,1742,1750,1762,1770,1778,1788,1799,1809,1819,1823,1827],{"__ignoreMap":33},[60,1743,1744,1746,1748],{"class":62,"line":63},[60,1745,201],{"class":70},[60,1747,139],{"class":66},[60,1749,206],{"class":70},[60,1751,1752,1754,1756,1758,1760],{"class":62,"line":74},[60,1753,212],{"class":66},[60,1755,163],{"class":110},[60,1757,217],{"class":100},[60,1759,220],{"class":110},[60,1761,166],{"class":70},[60,1763,1764,1766,1768],{"class":62,"line":82},[60,1765,229],{"class":228},[60,1767,139],{"class":66},[60,1769,234],{"class":70},[60,1771,1772,1774,1776],{"class":62,"line":90},[60,1773,240],{"class":228},[60,1775,139],{"class":66},[60,1777,245],{"class":70},[60,1779,1780,1782,1784,1786],{"class":62,"line":97},[60,1781,251],{"class":110},[60,1783,151],{"class":70},[60,1785,256],{"class":110},[60,1787,166],{"class":70},[60,1789,1790,1792,1794,1797],{"class":62,"line":117},[60,1791,264],{"class":110},[60,1793,151],{"class":70},[60,1795,1796],{"class":110},"\"A cat playing piano\"",[60,1798,166],{"class":70},[60,1800,1801,1803,1805,1807],{"class":62,"line":128},[60,1802,277],{"class":110},[60,1804,151],{"class":70},[60,1806,282],{"class":100},[60,1808,166],{"class":70},[60,1810,1811,1814,1816],{"class":62,"line":133},[60,1812,1813],{"class":110},"        \"callback_url\"",[60,1815,151],{"class":70},[60,1817,1818],{"class":110},"\"https://yourapp.com/api/video-callback\"\n",[60,1820,1821],{"class":62,"line":145},[60,1822,314],{"class":70},[60,1824,1825],{"class":62,"line":169},[60,1826,320],{"class":70},[60,1828,1829],{"class":62,"line":180},[60,1830,1831],{"class":194},"# Your webhook endpoint receives a POST with the same body shape as the task query endpoint\n",[15,1833,1727,1834,43],{},[1729,1835,1837],{"href":1836},"/docs/webhooks","Webhooks",[19,1839,1841],{"id":1840},"openai-style-conventions","OpenAI-Style Conventions",[15,1843,1844],{},"The API follows OpenAI-style REST conventions (Bearer token, JSON body, unified response schema). Use any HTTP client library — no dedicated SDK required.",[19,1846,1848],{"id":1847},"related","Related",[1850,1851,1852,1859,1865,1877],"ul",{},[1853,1854,1855],"li",{},[1729,1856,1858],{"href":1857},"/docs/getting-started","Quick Start",[1853,1860,1861],{},[1729,1862,1864],{"href":1863},"/docs/models-overview","Models Overview",[1853,1866,1867,1870,1871,1870,1874],{},[1729,1868,47],{"href":1869},"/docs/text-to-video"," / ",[1729,1872,1192],{"href":1873},"/docs/image-to-video",[1729,1875,1432],{"href":1876},"/docs/reference-to-video",[1853,1878,1879,1870,1883],{},[1729,1880,1882],{"href":1881},"/docs/async-tasks","Async Tasks",[1729,1884,1837],{"href":1836},[1886,1887,1888],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}",{"title":33,"searchDepth":74,"depth":74,"links":1890},[1891,1892,1897,1901,1902,1903,1904,1905],{"id":21,"depth":74,"text":22},{"id":46,"depth":74,"text":47,"children":1893},[1894,1895,1896],{"id":51,"depth":82,"text":52},{"id":577,"depth":82,"text":578},{"id":1065,"depth":82,"text":1066},{"id":1191,"depth":74,"text":1192,"children":1898},[1899,1900],{"id":1195,"depth":82,"text":1196},{"id":1313,"depth":82,"text":1314},{"id":1431,"depth":74,"text":1432},{"id":1616,"depth":74,"text":1617},{"id":1735,"depth":74,"text":1736},{"id":1840,"depth":74,"text":1841},{"id":1847,"depth":74,"text":1848},"Complete Python, Node.js, and cURL examples for all three Seedance 2.0 modes: text-to-video, image-to-video, and reference-to-video.","md",{},"/en/docs/sdks",{"title":5,"description":1906},"en/docs/sdks","2GR3WNRSww6VeyBo7seAxfIjCKThhFdZFZGUqKwB4cE",1776086321259]