[{"data":1,"prerenderedAt":439},["ShallowReactive",2],{"docs-/docs/rate-limits":3},{"id":4,"title":5,"body":6,"description":432,"extension":433,"meta":434,"navigation":164,"path":435,"seo":436,"stem":437,"__hash__":438},"content/en/docs/rate-limits.md","Rate Limits - Seedance 2.0 API",{"type":7,"value":8,"toc":425},"minimark",[9,14,18,23,35,127,131,137,354,358,388,392,399,403,421],[10,11,13],"h1",{"id":12},"rate-limits","Rate Limits",[15,16,17],"p",{},"Rate limits protect the API and ensure fair usage across all users.",[19,20,22],"h2",{"id":21},"handling-rate-limits","Handling Rate Limits",[15,24,25,26,30,31,34],{},"When you exceed the rate limit, the API returns a ",[27,28,29],"code",{},"429"," status code with a ",[27,32,33],{},"rate_limit_error",":",[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-json shiki shiki-themes github-dark","{\n    \"error\": {\n        \"code\": 429,\n        \"message\": \"Rate limit exceeded\",\n        \"type\": \"rate_limit_error\",\n        \"fallback_suggestion\": \"retry after 60 seconds\"\n    }\n}\n","json","",[27,43,44,53,63,77,91,104,115,121],{"__ignoreMap":41},[45,46,49],"span",{"class":47,"line":48},"line",1,[45,50,52],{"class":51},"s95oV","{\n",[45,54,56,60],{"class":47,"line":55},2,[45,57,59],{"class":58},"sDLfK","    \"error\"",[45,61,62],{"class":51},": {\n",[45,64,66,69,72,74],{"class":47,"line":65},3,[45,67,68],{"class":58},"        \"code\"",[45,70,71],{"class":51},": ",[45,73,29],{"class":58},[45,75,76],{"class":51},",\n",[45,78,80,83,85,89],{"class":47,"line":79},4,[45,81,82],{"class":58},"        \"message\"",[45,84,71],{"class":51},[45,86,88],{"class":87},"sU2Wk","\"Rate limit exceeded\"",[45,90,76],{"class":51},[45,92,94,97,99,102],{"class":47,"line":93},5,[45,95,96],{"class":58},"        \"type\"",[45,98,71],{"class":51},[45,100,101],{"class":87},"\"rate_limit_error\"",[45,103,76],{"class":51},[45,105,107,110,112],{"class":47,"line":106},6,[45,108,109],{"class":58},"        \"fallback_suggestion\"",[45,111,71],{"class":51},[45,113,114],{"class":87},"\"retry after 60 seconds\"\n",[45,116,118],{"class":47,"line":117},7,[45,119,120],{"class":51},"    }\n",[45,122,124],{"class":47,"line":123},8,[45,125,126],{"class":51},"}\n",[19,128,130],{"id":129},"recommended-retry-strategy","Recommended Retry Strategy",[15,132,133,134,136],{},"Implement exponential backoff when you receive a ",[27,135,29],{}," response:",[36,138,142],{"className":139,"code":140,"language":141,"meta":41,"style":41},"language-python shiki shiki-themes github-dark","import time\nimport requests\n\ndef make_request_with_retry(url, headers, payload, max_retries=3):\n    for attempt in range(max_retries):\n        response = requests.post(url, headers=headers, json=payload)\n\n        if response.status_code == 429:\n            wait_time = 2 ** attempt * 30  # 30s, 60s, 120s\n            print(f\"Rate limited. Retrying in {wait_time}s...\")\n            time.sleep(wait_time)\n            continue\n\n        return response\n\n    raise Exception(\"Max retries exceeded\")\n","python",[27,143,144,153,160,166,187,204,230,234,251,277,307,313,319,324,333,338],{"__ignoreMap":41},[45,145,146,150],{"class":47,"line":48},[45,147,149],{"class":148},"snl16","import",[45,151,152],{"class":51}," time\n",[45,154,155,157],{"class":47,"line":55},[45,156,149],{"class":148},[45,158,159],{"class":51}," requests\n",[45,161,162],{"class":47,"line":65},[45,163,165],{"emptyLinePlaceholder":164},true,"\n",[45,167,168,171,175,178,181,184],{"class":47,"line":79},[45,169,170],{"class":148},"def",[45,172,174],{"class":173},"svObZ"," make_request_with_retry",[45,176,177],{"class":51},"(url, headers, payload, max_retries",[45,179,180],{"class":148},"=",[45,182,183],{"class":58},"3",[45,185,186],{"class":51},"):\n",[45,188,189,192,195,198,201],{"class":47,"line":93},[45,190,191],{"class":148},"    for",[45,193,194],{"class":51}," attempt ",[45,196,197],{"class":148},"in",[45,199,200],{"class":58}," range",[45,202,203],{"class":51},"(max_retries):\n",[45,205,206,209,211,214,218,220,223,225,227],{"class":47,"line":106},[45,207,208],{"class":51},"        response ",[45,210,180],{"class":148},[45,212,213],{"class":51}," requests.post(url, ",[45,215,217],{"class":216},"s9osk","headers",[45,219,180],{"class":148},[45,221,222],{"class":51},"headers, ",[45,224,40],{"class":216},[45,226,180],{"class":148},[45,228,229],{"class":51},"payload)\n",[45,231,232],{"class":47,"line":117},[45,233,165],{"emptyLinePlaceholder":164},[45,235,236,239,242,245,248],{"class":47,"line":123},[45,237,238],{"class":148},"        if",[45,240,241],{"class":51}," response.status_code ",[45,243,244],{"class":148},"==",[45,246,247],{"class":58}," 429",[45,249,250],{"class":51},":\n",[45,252,254,257,259,262,265,267,270,273],{"class":47,"line":253},9,[45,255,256],{"class":51},"            wait_time ",[45,258,180],{"class":148},[45,260,261],{"class":58}," 2",[45,263,264],{"class":148}," **",[45,266,194],{"class":51},[45,268,269],{"class":148},"*",[45,271,272],{"class":58}," 30",[45,274,276],{"class":275},"sAwPA","  # 30s, 60s, 120s\n",[45,278,280,283,286,289,292,295,298,301,304],{"class":47,"line":279},10,[45,281,282],{"class":58},"            print",[45,284,285],{"class":51},"(",[45,287,288],{"class":148},"f",[45,290,291],{"class":87},"\"Rate limited. Retrying in ",[45,293,294],{"class":58},"{",[45,296,297],{"class":51},"wait_time",[45,299,300],{"class":58},"}",[45,302,303],{"class":87},"s...\"",[45,305,306],{"class":51},")\n",[45,308,310],{"class":47,"line":309},11,[45,311,312],{"class":51},"            time.sleep(wait_time)\n",[45,314,316],{"class":47,"line":315},12,[45,317,318],{"class":148},"            continue\n",[45,320,322],{"class":47,"line":321},13,[45,323,165],{"emptyLinePlaceholder":164},[45,325,327,330],{"class":47,"line":326},14,[45,328,329],{"class":148},"        return",[45,331,332],{"class":51}," response\n",[45,334,336],{"class":47,"line":335},15,[45,337,165],{"emptyLinePlaceholder":164},[45,339,341,344,347,349,352],{"class":47,"line":340},16,[45,342,343],{"class":148},"    raise",[45,345,346],{"class":58}," Exception",[45,348,285],{"class":51},[45,350,351],{"class":87},"\"Max retries exceeded\"",[45,353,306],{"class":51},[19,355,357],{"id":356},"best-practices","Best Practices",[359,360,361,368,375,378],"ul",{},[362,363,364,365,367],"li",{},"Implement exponential backoff for ",[27,366,29],{}," responses",[362,369,370,371,374],{},"Use ",[27,372,373],{},"callback_url"," (webhooks) instead of frequent polling to reduce request volume",[362,376,377],{},"Space out generation requests rather than sending bursts",[362,379,380,381],{},"Monitor your credit usage via the ",[382,383,387],"a",{"href":384,"rel":385},"https://evolink.ai/dashboard/billing",[386],"nofollow","EvoLink dashboard",[19,389,391],{"id":390},"need-higher-limits","Need Higher Limits?",[15,393,394,398],{},[382,395,397],{"href":396},"/enterprise","Contact our sales team"," for custom rate limits and dedicated infrastructure.",[19,400,402],{"id":401},"related","Related",[359,404,405,412],{},[362,406,407,411],{},[382,408,410],{"href":409},"/docs/error-codes","Error Codes"," — Handle all error types",[362,413,414,418,419],{},[382,415,417],{"href":416},"/docs/webhooks","Webhooks"," — Reduce polling with ",[27,420,373],{},[422,423,424],"style",{},"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 .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 .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":41,"searchDepth":55,"depth":55,"links":426},[427,428,429,430,431],{"id":21,"depth":55,"text":22},{"id":129,"depth":55,"text":130},{"id":356,"depth":55,"text":357},{"id":390,"depth":55,"text":391},{"id":401,"depth":55,"text":402},"Understand rate limits for Seedance 2.0 API and how to handle rate limiting gracefully.","md",{},"/en/docs/rate-limits",{"title":5,"description":432},"en/docs/rate-limits","6VVzr6q3zlobhF-bBRK6SRh9FG91axBJy0NjvdLRT4g",1775067575535]