{"componentChunkName":"component---src-templates-simple-markdown-js","path":"/docs/get-connected/rate-limits/","matchPath":"","result":{"data":{"markdownRemark":{"html":"<h1 style=\"position:relative;\"><a href=\"#rate-limits\" aria-label=\"rate limits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"rate-limits\"></div>Rate Limits</h1>\n<p>To keep the Shipwell API fast and reliable for every customer, the API limits how many requests a company can send <strong>per minute</strong> to each area of the API. Most integrations never come close to these limits. This page explains how they work, what your integration sees when it reaches one, and how to stay well within them.</p>\n<h2 style=\"position:relative;\"><a href=\"#how-rate-limits-work\" aria-label=\"how rate limits work permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"how-rate-limits-work\"></div>How rate limits work</h2>\n<ul>\n<li>\n<strong>Limits apply per API area.</strong>\n Each area of the API, such as Shipments or Rating, has its own allowance. Using one area never reduces what is available in another.\n</li>\n<li>\n<strong>Counted per minute.</strong>\n Each allowance starts fresh at the top of every clock minute (:00 seconds). If you reach a per-minute limit, you wait at most until the next minute starts. Companies on a \n<a href=\"#plans\">plan</a>\n also have an hourly limit, which starts fresh at the top of every hour.\n</li>\n<li>\n<strong>Shared across your company.</strong>\n The allowance belongs to your company, not to a user or token. All users, tokens and integrations of your company share it.\n</li>\n<li>\n<strong>Sandbox and production are separate.</strong>\n Traffic in \n<code class=\"language-text\">sandbox</code>\n never counts against your \n<code class=\"language-text\">production</code>\n allowance.\n</li>\n<li>\n<strong>Authentication isn't counted.</strong>\n Requests to authenticate, such as \n<code class=\"language-text\">/v2/auth/token/</code>\n, do not count against any limit.\n</li>\n</ul>\n<h2 style=\"position:relative;\"><a href=\"#plans\" aria-label=\"plans permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"plans\"></div>Plans</h2>\n<p>Every company starts on the <strong>standard limits</strong>, which differ by API area. Until your company is on a plan or has a raised limit, the <code class=\"language-text\">X-RateLimit-Limit</code> header on any response from an area shows its standard limit (see <a href=\"#what-your-integration-sees\">What your integration sees</a>). A plan raises the limits on <strong>every</strong> API area at once, as a multiple of the standard limits:</p>\n<table>\n<thead>\n<tr>\n<th>Plan</th>\n<th>Per-minute limits</th>\n<th>Hourly limits</th>\n<th>Included API calls per month</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Bronze</td>\n<td>2 × the standard limits</td>\n<td>30 × the per-minute limit</td>\n<td>2 million</td>\n</tr>\n<tr>\n<td>Silver</td>\n<td>4 × the standard limits</td>\n<td>30 × the per-minute limit</td>\n<td>6 million</td>\n</tr>\n<tr>\n<td>Gold</td>\n<td>6 × the standard limits</td>\n<td>30 × the per-minute limit</td>\n<td>20 million</td>\n</tr>\n<tr>\n<td>Enterprise</td>\n<td>Set per API area for your company</td>\n<td>Set for your company</td>\n<td>Agreed with your company</td>\n</tr>\n</tbody>\n</table>\n<ul>\n<li>\n<strong>The monthly allowance never blocks a request.</strong>\n If your company goes past it, your Shipwell representative will talk with you about the plan that fits.\n</li>\n<li>\n<strong>Your limits are always in the headers.</strong>\n \n<code class=\"language-text\">X-RateLimit-Limit</code>\n shows your company's current limit for each API area, whatever your plan.\n</li>\n<li>\n<strong>One busy area doesn't need a bigger plan.</strong>\n Shipwell can raise a single API area on any plan. See \n<a href=\"#need-a-higher-limit\">Need a higher limit?</a>\n</li>\n</ul>\n<p>To change plans, contact your Shipwell representative.</p>\n<h2 style=\"position:relative;\"><a href=\"#what-your-integration-sees\" aria-label=\"what your integration sees permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"what-your-integration-sees\"></div>What your integration sees</h2>\n<p>Every response from a rate-limited area tells you where you stand:</p>\n<table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">X-RateLimit-Limit</code></td>\n<td>Your company's limit for this API area</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">X-RateLimit-Remaining</code></td>\n<td>Requests you have left before that limit</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">X-RateLimit-Reset</code></td>\n<td>Seconds until the allowance starts fresh</td>\n</tr>\n</tbody>\n</table>\n<p>With both a per-minute and an hourly limit, the headers describe whichever one you're closer to.</p>\n<p>When an area's limit is reached, further requests to that area receive <code class=\"language-text\">429 Too Many Requests</code> until the allowance starts fresh. A <code class=\"language-text\">429</code> request was <strong>not processed</strong>, so it is always safe to send the same request again.</p>\n<details open>\n  <summary>Example responses</summary>\n\n      <div class=\"code-snippets-tabs\" >\n    <div class=\"snippets-tabs-headers\">\n      <span class=\"tab-header active\" data-lang=\"http\" data-snippet-id=\"http\">http</span><span class=\"tab-header \" data-lang=\"http\" data-snippet-id=\"http-1\">http</span>\n    </div>\n    <div class=\"snippets-tabs-contents\">\n      <div class=\"tab-content active\" data-lang=\"http\" data-snippet-id=\"http\"><div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"46623984580036380000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`HTTP/1.1 200 OK\nX-RateLimit-Limit: 1000\nX-RateLimit-Remaining: 842\nX-RateLimit-Reset: 23`, `46623984580036380000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-46623984580036380000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\"><span class=\"token response-status\"><span class=\"token http-version property\">HTTP/1.1</span> <span class=\"token status-code number\">200</span> <span class=\"token reason-phrase string\">OK</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">X-RateLimit-Limit</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">1000</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">X-RateLimit-Remaining</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">842</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">X-RateLimit-Reset</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">23</span></span></code></pre></div>\n      </div></div><div class=\"tab-content \" data-lang=\"http\" data-snippet-id=\"http-1\"><div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"89234835796361360000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`HTTP/1.1 429 Too Many Requests\nContent-Type: application/json\nRetry-After: 23\nX-RateLimit-Limit: 1000\nX-RateLimit-Remaining: 0\nX-RateLimit-Reset: 23\n\n{&quot;error&quot;: &quot;rate_limit_exceeded&quot;}`, `89234835796361360000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-89234835796361360000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\"><span class=\"token response-status\"><span class=\"token http-version property\">HTTP/1.1</span> <span class=\"token status-code number\">429</span> <span class=\"token reason-phrase string\">Too Many Requests</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">Content-Type</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">application/json</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">Retry-After</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">23</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">X-RateLimit-Limit</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">1000</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">X-RateLimit-Remaining</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">0</span></span>\n<span class=\"token header\"><span class=\"token header-name keyword\">X-RateLimit-Reset</span><span class=\"token punctuation\">:</span> <span class=\"token header-value\">23</span></span>\n<span class=\"token application-json\">\n<span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"error\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"rate_limit_exceeded\"</span><span class=\"token punctuation\">}</span></span></code></pre></div>\n      </div></div>\n    </div></div>\n    \n</details>\n<h2 style=\"position:relative;\"><a href=\"#what-your-team-should-do\" aria-label=\"what your team should do permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"what-your-team-should-do\"></div>What your team should do</h2>\n<ul>\n<li>\n<strong>Handle <code class=\"language-text\">429</code> responses.</strong>\n Wait the number of seconds in the \n<code class=\"language-text\">Retry-After</code>\n header, then send the same request again. Don't retry immediately in a loop: every retry before the minute resets gets another \n<code class=\"language-text\">429</code>\n.\n</li>\n<li>\n<strong>Add a little randomness to retries.</strong>\n If several workers run in parallel, add a short random delay (for example 0–2 seconds) so they don't all retry at the same instant.\n</li>\n<li>\n<strong>Pace bulk jobs.</strong>\n For backfills, syncs and scheduled jobs, watch \n<code class=\"language-text\">X-RateLimit-Remaining</code>\n and slow down as it approaches 0.\n</li>\n</ul>\n<details open>\n  <summary>Example: retry after a 429</summary>\n\n      <div class=\"code-snippets-tabs\" >\n    <div class=\"snippets-tabs-headers\">\n      <span class=\"tab-header active\" data-lang=\"python\" data-snippet-id=\"python\">python</span><span class=\"tab-header \" data-lang=\"javascript\" data-snippet-id=\"javascript\">javascript</span>\n    </div>\n    <div class=\"snippets-tabs-contents\">\n      <div class=\"tab-content active\" data-lang=\"python\" data-snippet-id=\"python\"><div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"68195786967234830000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`import random\nimport time\n\nimport requests\n\n\ndef send(method, url, **kwargs):\n    while True:\n        response = requests.request(method, url, **kwargs)\n        if response.status_code != 429:\n            return response\n        wait = int(response.headers.get(&quot;Retry-After&quot;, &quot;1&quot;))\n        time.sleep(wait + random.uniform(0, 2))`, `68195786967234830000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-68195786967234830000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> random\n<span class=\"token keyword\">import</span> time\n\n<span class=\"token keyword\">import</span> requests\n\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">send</span><span class=\"token punctuation\">(</span>method<span class=\"token punctuation\">,</span> url<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kwargs<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">while</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">:</span>\n        response <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>request<span class=\"token punctuation\">(</span>method<span class=\"token punctuation\">,</span> url<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kwargs<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">if</span> response<span class=\"token punctuation\">.</span>status_code <span class=\"token operator\">!=</span> <span class=\"token number\">429</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">return</span> response\n        wait <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span>headers<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token string\">\"Retry-After\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"1\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        time<span class=\"token punctuation\">.</span>sleep<span class=\"token punctuation\">(</span>wait <span class=\"token operator\">+</span> random<span class=\"token punctuation\">.</span>uniform<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n      </div></div><div class=\"tab-content \" data-lang=\"javascript\" data-snippet-id=\"javascript\"><div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"32652868025522385000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`async function send(url, options = {}) {\n  while (true) {\n    const response = await fetch(url, options);\n    if (response.status !== 429) {\n      return response;\n    }\n    const wait = Number(response.headers.get(&quot;Retry-After&quot;) ?? 1);\n    await new Promise((resolve) => setTimeout(resolve, (wait + Math.random() * 2) * 1000));\n  }\n}`, `32652868025522385000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-32652868025522385000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">async</span> <span class=\"token keyword\">function</span> <span class=\"token function\">send</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">url<span class=\"token punctuation\">,</span> options <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> response <span class=\"token operator\">=</span> <span class=\"token keyword\">await</span> <span class=\"token function\">fetch</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">,</span> options<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span>status <span class=\"token operator\">!==</span> <span class=\"token number\">429</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">return</span> response<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">const</span> wait <span class=\"token operator\">=</span> <span class=\"token function\">Number</span><span class=\"token punctuation\">(</span>response<span class=\"token punctuation\">.</span>headers<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Retry-After\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">??</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">await</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Promise</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">resolve</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span>resolve<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>wait <span class=\"token operator\">+</span> Math<span class=\"token punctuation\">.</span><span class=\"token function\">random</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n      </div></div>\n    </div></div>\n    \n</details>\n<div class=\"admonition admonition-info\"><div class=\"admonition-heading\"><h5><span class=\"admonition-icon\"><i></i></span>File uploads</h5></div><div class=\"admonition-content\"><p>These examples send the same request again. For JSON bodies that just works. When uploading a file, open the file again (or rewind it) before each retry, otherwise the retry can send an empty file.</p></div></div>\n<h2 style=\"position:relative;\"><a href=\"#need-a-higher-limit\" aria-label=\"need a higher limit permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"need-a-higher-limit\"></div>Need a higher limit?</h2>\n<p>If your integration legitimately needs more than its current limit, contact your Shipwell representative or support@shipwell.com. Tell us which API area, what volume you expect per minute, and what the traffic is for. Shipwell reviews the request and can raise the limit for your company. A raised limit applies to that API area only.</p>","headings":[{"value":"Rate Limits","depth":1},{"value":"How rate limits work","depth":2},{"value":"Plans","depth":2},{"value":"What your integration sees","depth":2},{"value":"What your team should do","depth":2},{"value":"Need a higher limit?","depth":2}]},"contentItem":{"data":{"lastModified":"2026-10-20T13:49:49.000Z","enableToc":null,"disableLastModified":null,"tocMaxDepth":null,"requestLogin":false}},"siteConfig":{"enableToc":true,"disableLastModified":false,"tocMaxDepth":4}},"pageContext":{"matchPath":"","id":"a036947c-42b1-5342-bae2-092c84d774da__redocly content/docs/get-connected/rate-limits/","seo":{"title":"Rate Limits","description":null,"image":"","keywords":null,"jsonLd":null,"lang":null,"siteUrl":null},"pageId":"docs/get-connected/rate-limits.md","pageBaseUrl":"/docs/get-connected/rate-limits","type":"markdown","toc":{"enable":true,"maxDepth":4,"headings":[{"depth":1,"value":"Rate Limits","id":"rate-limits"},{"depth":2,"value":"How rate limits work","id":"how-rate-limits-work"},{"depth":2,"value":"Plans","id":"plans"},{"depth":2,"value":"What your integration sees","id":"what-your-integration-sees"},{"depth":2,"value":"What your team should do","id":"what-your-team-should-do"},{"depth":2,"value":"Need a higher limit?","id":"need-a-higher-limit"}]},"data":{"title":"Rate Limits"},"catalogInfo":null,"link":"/docs/get-connected/rate-limits/","sidebarName":"developerPortal","isLanding":false,"showPrevButton":null,"showNextButton":null,"apiVersions":null,"apiVersionId":null,"isDefaultApiVersion":null}},"staticQueryHashes":["1123603147","1302185487","1344209882","1398840060","1520077861","1975142765","2667623876","2950305614","3240152602","3743992808","561138138"]}