[{"data":1,"prerenderedAt":884},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-rate-limits-quotas":134,"-getting-started-rate-limits-quotas-surround":879},[4,36,61,87,113],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":35},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-sparkles",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-zap",{"title":21,"path":22,"stem":23,"icon":24},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F3.authentication","i-lucide-key",{"title":26,"path":27,"stem":28,"icon":29},"Rate Limits & Quotas","\u002Fgetting-started\u002Frate-limits-quotas","1.getting-started\u002F4.rate-limits-quotas","i-lucide-gauge",{"title":31,"path":32,"stem":33,"icon":34},"SDKs & Tools","\u002Fgetting-started\u002Fsdks-tools","1.getting-started\u002F5.sdks-tools","i-lucide-box",false,{"title":37,"icon":38,"path":39,"stem":40,"children":41,"page":35},"Cloud Infrastructure","i-lucide-server","\u002Finfrastructure","2.infrastructure",[42,46,51,56],{"title":43,"path":44,"stem":45,"icon":38},"Cloud VPS Compute","\u002Finfrastructure\u002Fvps-compute","2.infrastructure\u002F1.vps-compute",{"title":47,"path":48,"stem":49,"icon":50},"Managed Databases","\u002Finfrastructure\u002Fmanaged-databases","2.infrastructure\u002F2.managed-databases","i-lucide-database",{"title":52,"path":53,"stem":54,"icon":55},"Networking & Cloud Firewall","\u002Finfrastructure\u002Fnetworking-firewall","2.infrastructure\u002F3.networking-firewall","i-lucide-shield",{"title":57,"path":58,"stem":59,"icon":60},"Block Storage & Volumes","\u002Finfrastructure\u002Fblock-storage","2.infrastructure\u002F4.block-storage","i-lucide-hard-drive",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":35},"Services & APIs","i-lucide-cpu","\u002Fservices-api","3.services-api",[67,72,77,82],{"title":68,"path":69,"stem":70,"icon":71},"REST API Reference","\u002Fservices-api\u002Fapi-reference","3.services-api\u002F1.api-reference","i-lucide-terminal",{"title":73,"path":74,"stem":75,"icon":76},"URL Shortener API","\u002Fservices-api\u002Furl-shortener","3.services-api\u002F2.url-shortener","i-lucide-link",{"title":78,"path":79,"stem":80,"icon":81},"Temp Mail API","\u002Fservices-api\u002Ftemp-mail","3.services-api\u002F3.temp-mail","i-lucide-mail",{"title":83,"path":84,"stem":85,"icon":86},"Developer Utility APIs","\u002Fservices-api\u002Fdeveloper-utilities","3.services-api\u002F4.developer-utilities","i-lucide-wrench",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":35},"Guides & Tutorials","i-lucide-book-open","\u002Fguides","4.guides",[93,98,103,108],{"title":94,"path":95,"stem":96,"icon":97},"Deploy a Full-Stack App with VPS & PostgreSQL","\u002Fguides\u002Fdeploy-fullstack-app","4.guides\u002F1.deploy-fullstack-app","i-lucide-layers",{"title":99,"path":100,"stem":101,"icon":102},"Automated Backups & Webhook Alerts","\u002Fguides\u002Fautomated-backups-webhook","4.guides\u002F2.automated-backups-webhook","i-lucide-bell",{"title":104,"path":105,"stem":106,"icon":107},"E2E Auth Testing with Temp Mail in CI\u002FCD","\u002Fguides\u002Fci-cd-temp-mail-testing","4.guides\u002F3.ci-cd-temp-mail-testing","i-lucide-check-circle-2",{"title":109,"path":110,"stem":111,"icon":112},"Custom Domain & SSL Configuration","\u002Fguides\u002Fcustom-domain-setup","4.guides\u002F4.custom-domain-setup","i-lucide-globe",{"title":114,"icon":115,"path":116,"stem":117,"children":118,"page":35},"Account & Billing","i-lucide-credit-card","\u002Faccount-billing","5.account-billing",[119,124,129],{"title":120,"path":121,"stem":122,"icon":123},"Pricing & Hourly Billing","\u002Faccount-billing\u002Fpricing-billing","5.account-billing\u002F1.pricing-billing","i-lucide-receipt",{"title":125,"path":126,"stem":127,"icon":128},"Team Management & RBAC","\u002Faccount-billing\u002Fteam-rbac","5.account-billing\u002F2.team-rbac","i-lucide-users",{"title":130,"path":131,"stem":132,"icon":133},"Resource Quotas & Service Limits","\u002Faccount-billing\u002Fservice-limits","5.account-billing\u002F3.service-limits","i-lucide-sliders",{"id":135,"title":26,"body":136,"description":870,"extension":871,"links":872,"meta":873,"navigation":874,"path":27,"seo":875,"stem":28,"__hash__":878},"docs\u002F1.getting-started\u002F4.rate-limits-quotas.md",{"type":137,"value":138,"toc":860},"minimark",[139,143,152,155,160,168,219,224,265,267,271,337,339,346,357,417,421,424,856],[140,141,26],"h1",{"id":142},"rate-limits-quotas",[144,145,146,147,151],"p",{},"To ensure high availability and prevent abuse, all endpoints in the ",[148,149,150],"strong",{},"1st Services API"," enforce rate limits based on your account tier and API key scopes.",[153,154],"hr",{},[156,157,159],"h2",{"id":158},"rate-limit-headers","Rate Limit Headers",[144,161,162,163,167],{},"Every HTTP response from ",[164,165,166],"code",{},"api.1st-services.com"," includes standard rate limit headers:",[169,170,171,185],"table",{},[172,173,174],"thead",{},[175,176,177,182],"tr",{},[178,179,181],"th",{"align":180},"left","Header",[178,183,184],{"align":180},"Description",[186,187,188,199,209],"tbody",{},[175,189,190,196],{},[191,192,193],"td",{"align":180},[164,194,195],{},"X-RateLimit-Limit",[191,197,198],{"align":180},"The maximum number of allowed requests in the current 60-second window.",[175,200,201,206],{},[191,202,203],{"align":180},[164,204,205],{},"X-RateLimit-Remaining",[191,207,208],{"align":180},"The remaining number of requests available before hitting the rate limit.",[175,210,211,216],{},[191,212,213],{"align":180},[164,214,215],{},"X-RateLimit-Reset",[191,217,218],{"align":180},"Unix epoch timestamp (in seconds) when the current rate limit window resets.",[220,221,223],"h3",{"id":222},"example-response-headers","Example Response Headers",[225,226,231],"pre",{"className":227,"code":228,"language":229,"meta":230,"style":230},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","HTTP\u002F1.1 200 OK\nContent-Type: application\u002Fjson\nX-RateLimit-Limit: 1200\nX-RateLimit-Remaining: 1184\nX-RateLimit-Reset: 1771849200\n","http","",[164,232,233,241,247,253,259],{"__ignoreMap":230},[234,235,238],"span",{"class":236,"line":237},"line",1,[234,239,240],{},"HTTP\u002F1.1 200 OK\n",[234,242,244],{"class":236,"line":243},2,[234,245,246],{},"Content-Type: application\u002Fjson\n",[234,248,250],{"class":236,"line":249},3,[234,251,252],{},"X-RateLimit-Limit: 1200\n",[234,254,256],{"class":236,"line":255},4,[234,257,258],{},"X-RateLimit-Remaining: 1184\n",[234,260,262],{"class":236,"line":261},5,[234,263,264],{},"X-RateLimit-Reset: 1771849200\n",[153,266],{},[156,268,270],{"id":269},"tier-rate-limits","Tier Rate Limits",[169,272,273,287],{},[172,274,275],{},[175,276,277,280,283,285],{},[178,278,279],{"align":180},"Tier",[178,281,282],{"align":180},"General API Limits",[178,284,78],{"align":180},[178,286,73],{"align":180},[186,288,289,305,321],{},[175,290,291,296,299,302],{},[191,292,293],{"align":180},[148,294,295],{},"Free Developer",[191,297,298],{"align":180},"60 req \u002F min",[191,300,301],{"align":180},"120 req \u002F min",[191,303,304],{"align":180},"300 req \u002F min",[175,306,307,312,315,318],{},[191,308,309],{"align":180},[148,310,311],{},"Pro Plan",[191,313,314],{"align":180},"1,200 req \u002F min",[191,316,317],{"align":180},"3,000 req \u002F min",[191,319,320],{"align":180},"10,000 req \u002F min",[175,322,323,328,331,334],{},[191,324,325],{"align":180},[148,326,327],{},"Enterprise",[191,329,330],{"align":180},"Custom (10,000+ req\u002Fmin)",[191,332,333],{"align":180},"Custom",[191,335,336],{"align":180},"Custom (Dedicated Anycast)",[153,338],{},[156,340,342,343],{"id":341},"handling-429-too-many-requests","Handling ",[164,344,345],{},"429 Too Many Requests",[144,347,348,349,352,353,356],{},"If you exceed the rate limit, the API returns an HTTP ",[164,350,351],{},"429"," status code with a JSON payload and a ",[164,354,355],{},"Retry-After"," header:",[225,358,360],{"className":227,"code":359,"language":229,"meta":230,"style":230},"HTTP\u002F1.1 429 Too Many Requests\nRetry-After: 12\nContent-Type: application\u002Fjson\n\n{\n  \"status\": \"error\",\n  \"code\": \"RATE_LIMIT_EXCEEDED\",\n  \"message\": \"You have exceeded your request quota. Please wait before retrying.\",\n  \"retry_after_seconds\": 12\n}\n",[164,361,362,367,372,376,382,387,393,399,405,411],{"__ignoreMap":230},[234,363,364],{"class":236,"line":237},[234,365,366],{},"HTTP\u002F1.1 429 Too Many Requests\n",[234,368,369],{"class":236,"line":243},[234,370,371],{},"Retry-After: 12\n",[234,373,374],{"class":236,"line":249},[234,375,246],{},[234,377,378],{"class":236,"line":255},[234,379,381],{"emptyLinePlaceholder":380},true,"\n",[234,383,384],{"class":236,"line":261},[234,385,386],{},"{\n",[234,388,390],{"class":236,"line":389},6,[234,391,392],{},"  \"status\": \"error\",\n",[234,394,396],{"class":236,"line":395},7,[234,397,398],{},"  \"code\": \"RATE_LIMIT_EXCEEDED\",\n",[234,400,402],{"class":236,"line":401},8,[234,403,404],{},"  \"message\": \"You have exceeded your request quota. Please wait before retrying.\",\n",[234,406,408],{"class":236,"line":407},9,[234,409,410],{},"  \"retry_after_seconds\": 12\n",[234,412,414],{"class":236,"line":413},10,[234,415,416],{},"}\n",[220,418,420],{"id":419},"implementing-exponential-backoff","Implementing Exponential Backoff",[144,422,423],{},"When writing automated integrations, implement exponential backoff with jitter:",[225,425,430],{"className":426,"code":427,"filename":428,"language":429,"meta":230,"style":230},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","async function fetchWithRetry(url: string, options: RequestInit, retries = 3): Promise\u003CResponse> {\n  try {\n    const res = await fetch(url, options)\n    if (res.status === 429 && retries > 0) {\n      const retryAfter = parseInt(res.headers.get('Retry-After') || '2', 10)\n      const jitter = Math.random() * 500\n      await new Promise(resolve => setTimeout(resolve, retryAfter * 1000 + jitter))\n      return fetchWithRetry(url, options, retries - 1)\n    }\n    return res\n  } catch (err) {\n    if (retries > 0) {\n      await new Promise(resolve => setTimeout(resolve, 1000))\n      return fetchWithRetry(url, options, retries - 1)\n    }\n    throw err\n  }\n}\n","TypeScript","ts",[164,431,432,501,509,538,577,634,660,703,730,735,743,761,779,806,831,836,845,851],{"__ignoreMap":230},[234,433,434,438,441,445,449,453,456,460,463,466,468,471,473,476,479,483,486,489,492,495,498],{"class":236,"line":237},[234,435,437],{"class":436},"spNyl","async",[234,439,440],{"class":436}," function",[234,442,444],{"class":443},"s2Zo4"," fetchWithRetry",[234,446,448],{"class":447},"sMK4o","(",[234,450,452],{"class":451},"sHdIc","url",[234,454,455],{"class":447},":",[234,457,459],{"class":458},"sBMFI"," string",[234,461,462],{"class":447},",",[234,464,465],{"class":451}," options",[234,467,455],{"class":447},[234,469,470],{"class":458}," RequestInit",[234,472,462],{"class":447},[234,474,475],{"class":451}," retries",[234,477,478],{"class":447}," =",[234,480,482],{"class":481},"sbssI"," 3",[234,484,485],{"class":447},"):",[234,487,488],{"class":458}," Promise",[234,490,491],{"class":447},"\u003C",[234,493,494],{"class":458},"Response",[234,496,497],{"class":447},">",[234,499,500],{"class":447}," {\n",[234,502,503,507],{"class":236,"line":243},[234,504,506],{"class":505},"s7zQu","  try",[234,508,500],{"class":447},[234,510,511,514,518,520,523,526,529,531,533,535],{"class":236,"line":249},[234,512,513],{"class":436},"    const",[234,515,517],{"class":516},"sTEyZ"," res",[234,519,478],{"class":447},[234,521,522],{"class":505}," await",[234,524,525],{"class":443}," fetch",[234,527,448],{"class":528},"swJcz",[234,530,452],{"class":516},[234,532,462],{"class":447},[234,534,465],{"class":516},[234,536,537],{"class":528},")\n",[234,539,540,543,546,549,552,555,558,561,564,566,569,572,575],{"class":236,"line":255},[234,541,542],{"class":505},"    if",[234,544,545],{"class":528}," (",[234,547,548],{"class":516},"res",[234,550,551],{"class":447},".",[234,553,554],{"class":516},"status",[234,556,557],{"class":447}," ===",[234,559,560],{"class":481}," 429",[234,562,563],{"class":447}," &&",[234,565,475],{"class":516},[234,567,568],{"class":447}," >",[234,570,571],{"class":481}," 0",[234,573,574],{"class":528},") ",[234,576,386],{"class":447},[234,578,579,582,585,587,590,592,594,596,599,601,604,606,609,612,614,616,619,622,625,627,629,632],{"class":236,"line":261},[234,580,581],{"class":436},"      const",[234,583,584],{"class":516}," retryAfter",[234,586,478],{"class":447},[234,588,589],{"class":443}," parseInt",[234,591,448],{"class":528},[234,593,548],{"class":516},[234,595,551],{"class":447},[234,597,598],{"class":516},"headers",[234,600,551],{"class":447},[234,602,603],{"class":443},"get",[234,605,448],{"class":528},[234,607,608],{"class":447},"'",[234,610,355],{"class":611},"sfazB",[234,613,608],{"class":447},[234,615,574],{"class":528},[234,617,618],{"class":447},"||",[234,620,621],{"class":447}," '",[234,623,624],{"class":611},"2",[234,626,608],{"class":447},[234,628,462],{"class":447},[234,630,631],{"class":481}," 10",[234,633,537],{"class":528},[234,635,636,638,641,643,646,648,651,654,657],{"class":236,"line":389},[234,637,581],{"class":436},[234,639,640],{"class":516}," jitter",[234,642,478],{"class":447},[234,644,645],{"class":516}," Math",[234,647,551],{"class":447},[234,649,650],{"class":443},"random",[234,652,653],{"class":528},"() ",[234,655,656],{"class":447},"*",[234,658,659],{"class":481}," 500\n",[234,661,662,665,668,670,672,675,678,681,683,685,687,689,692,695,698,700],{"class":236,"line":395},[234,663,664],{"class":505},"      await",[234,666,667],{"class":447}," new",[234,669,488],{"class":458},[234,671,448],{"class":528},[234,673,674],{"class":451},"resolve",[234,676,677],{"class":436}," =>",[234,679,680],{"class":443}," setTimeout",[234,682,448],{"class":528},[234,684,674],{"class":516},[234,686,462],{"class":447},[234,688,584],{"class":516},[234,690,691],{"class":447}," *",[234,693,694],{"class":481}," 1000",[234,696,697],{"class":447}," +",[234,699,640],{"class":516},[234,701,702],{"class":528},"))\n",[234,704,705,708,710,712,714,716,718,720,722,725,728],{"class":236,"line":401},[234,706,707],{"class":505},"      return",[234,709,444],{"class":443},[234,711,448],{"class":528},[234,713,452],{"class":516},[234,715,462],{"class":447},[234,717,465],{"class":516},[234,719,462],{"class":447},[234,721,475],{"class":516},[234,723,724],{"class":447}," -",[234,726,727],{"class":481}," 1",[234,729,537],{"class":528},[234,731,732],{"class":236,"line":407},[234,733,734],{"class":447},"    }\n",[234,736,737,740],{"class":236,"line":413},[234,738,739],{"class":505},"    return",[234,741,742],{"class":516}," res\n",[234,744,746,749,752,754,757,759],{"class":236,"line":745},11,[234,747,748],{"class":447},"  }",[234,750,751],{"class":505}," catch",[234,753,545],{"class":528},[234,755,756],{"class":516},"err",[234,758,574],{"class":528},[234,760,386],{"class":447},[234,762,764,766,768,771,773,775,777],{"class":236,"line":763},12,[234,765,542],{"class":505},[234,767,545],{"class":528},[234,769,770],{"class":516},"retries",[234,772,568],{"class":447},[234,774,571],{"class":481},[234,776,574],{"class":528},[234,778,386],{"class":447},[234,780,782,784,786,788,790,792,794,796,798,800,802,804],{"class":236,"line":781},13,[234,783,664],{"class":505},[234,785,667],{"class":447},[234,787,488],{"class":458},[234,789,448],{"class":528},[234,791,674],{"class":451},[234,793,677],{"class":436},[234,795,680],{"class":443},[234,797,448],{"class":528},[234,799,674],{"class":516},[234,801,462],{"class":447},[234,803,694],{"class":481},[234,805,702],{"class":528},[234,807,809,811,813,815,817,819,821,823,825,827,829],{"class":236,"line":808},14,[234,810,707],{"class":505},[234,812,444],{"class":443},[234,814,448],{"class":528},[234,816,452],{"class":516},[234,818,462],{"class":447},[234,820,465],{"class":516},[234,822,462],{"class":447},[234,824,475],{"class":516},[234,826,724],{"class":447},[234,828,727],{"class":481},[234,830,537],{"class":528},[234,832,834],{"class":236,"line":833},15,[234,835,734],{"class":447},[234,837,839,842],{"class":236,"line":838},16,[234,840,841],{"class":505},"    throw",[234,843,844],{"class":516}," err\n",[234,846,848],{"class":236,"line":847},17,[234,849,850],{"class":447},"  }\n",[234,852,854],{"class":236,"line":853},18,[234,855,416],{"class":447},[857,858,859],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":230,"searchDepth":243,"depth":243,"links":861},[862,865,866],{"id":158,"depth":243,"text":159,"children":863},[864],{"id":222,"depth":249,"text":223},{"id":269,"depth":243,"text":270},{"id":341,"depth":243,"text":867,"children":868},"Handling 429 Too Many Requests",[869],{"id":419,"depth":249,"text":420},"Understand rate limits, throttling behaviors, and response headers across the 1st Services API.","md",null,{},{"icon":29},{"title":876,"description":877},"Rate Limits & Quotas - 1st Services","API throttling rules, sliding window rate limits, and quota management for 1st Services.","4-Q8y-rP8yPhYMLEfgoHkaVsP1y2UPmfPI6ZLHQead4",[880,882],{"title":21,"path":22,"stem":23,"description":881,"icon":24,"children":-1},"Learn how to authenticate API requests and manage access tokens securely on 1st Services.",{"title":31,"path":32,"stem":33,"description":883,"icon":34,"children":-1},"Official and community SDKs, CLI tools, and libraries for 1st Services.",1787579790560]