GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.
GOWA has no rate limiter. It does not count requests, return 429 for request volume, or send X-RateLimit-* headers. Every request you make is passed to WhatsApp immediately. Pacing is your responsibility.
WhatsApp does not publish its limits for linked devices, and they change. Accounts that send too much, too fast, or to people who never wrote to them are restricted or banned. GOWA cannot detect or prevent this in advance.The one signal GOWA surfaces is WA_REACHOUT_TIMELOCK (HTTP 429):
WhatsApp returns this (server error 463) when the account is temporarily blocked from starting new chats. It cannot be bypassed or retried away. Until it lifts:
Only message people who have messaged you first, or reply in existing chats.
Sending one message from the phone itself sometimes clears it sooner.
If GOWA is reachable from the internet, add request limits at your reverse proxy, especially for failed Basic Auth logins and, with MCP OAuth, /oauth/authorize. For example, with nginx:
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"WhatsApp API MultiDevice","description":"GOWA official documentation","colors":{"primary":"#277C99","light":"#6FAFC8","dark":"#277C99"},"logo":{"light":"https://mintcdn.com/gowa-docs/tsQezhQWWuaGa128/images/gowa-logo.webp?fit=max\u0026auto=format\u0026n=tsQezhQWWuaGa128\u0026q=85\u0026s=b3f74808868781b289bf1c2d21b7b2a1","dark":"https://mintcdn.com/gowa-docs/tsQezhQWWuaGa128/images/gowa-logo.webp?fit=max\u0026auto=format\u0026n=tsQezhQWWuaGa128\u0026q=85\u0026s=b3f74808868781b289bf1c2d21b7b2a1"},"favicon":"https://mintcdn.com/gowa-docs/p-lrQtRqy58EOj6i/favicon.svg?fit=max\u0026auto=format\u0026n=p-lrQtRqy58EOj6i\u0026q=85\u0026s=6e94914d9664b06bf56051ff087e77a4","api":{},"background":{"color":{"light":"#EFF4F6","dark":"#0B1318"}},"navbar":{"links":[{"href":"https://github.com/aldinokemal/go-whatsapp-web-multidevice/issues","label":"Support"}],"primary":{"type":"button","label":"Try GOWA","href":"https://github.com/aldinokemal/go-whatsapp-web-multidevice/releases/latest"}},"footer":{"socials":{"github":"https://github.com/aldinokemal/go-whatsapp-web-multidevice"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/aldinokemal/go-whatsapp-web-multidevice"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"gowa-docs","hasAudioNarration":false,"actualSubdomain":"gowa-docs","customDomains":[],"gitSource":{"type":"github","owner":"aldinokemal","repo":"gowa-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":"","_id":"6ae20edac192c2fa84eb7c2d"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae2183760416b77ca6bc6c5","collectionId":"359fadb0-ef6b-49e6-8c47-1e3188e6d44e","liveDeploymentHistoryId":"6ae2183760416b77ca6bc6c5","schemaVersion":"v3"},"entitlements":{},"buildId":"6ae2183760416b77ca6bc6c5","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":63},{"language":"default","tag":"WhatsApp API","count":55},{"language":"default","tag":"Guide","count":18},{"language":"default","tag":"group","count":17},{"language":"default","tag":"send","count":11},{"language":"default","tag":"user","count":10},{"language":"default","tag":"message","count":7},{"language":"default","tag":"Getting Started","count":5},{"language":"default","tag":"Usage Examples","count":5},{"language":"default","tag":"app","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"advanced/rate-limiting","slug":"/advanced/rate-limiting","pageMetadata":{"title":"Sending Limits","sidebarTitle":"Sending Limits","description":"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.","href":"/advanced/rate-limiting"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`GOWA has no rate limiter.`}),` It does not count requests, return `,_jsx(_components.code,{children:`429`}),` for request volume, or send `,_jsx(_components.code,{children:`X-RateLimit-*`}),` headers. Every request you make is passed to WhatsApp immediately. Pacing is your responsibility.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`limits-gowa-does-enforce`,children:`Limits GOWA does enforce`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Limit`}),_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`Result when exceeded`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Request timeout`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`45 s`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`504 GATEWAY_TIMEOUT`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Request body`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`100 MB`}),_jsxs(_components.td,{children:[`Request rejected (`,_jsx(_components.code,{children:`413`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Image / document / video upload`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`20 / 50 / 100 MB`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`400`}),` validation error`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Webhook delivery`}),_jsx(_components.td,{children:`10 s per attempt, 5 attempts`}),_jsx(_components.td,{children:`Event dropped`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`limits-whatsapp-enforces`,children:`Limits WhatsApp enforces`}),`\n`,_jsx(_components.p,{children:`WhatsApp does not publish its limits for linked devices, and they change. Accounts that send too much, too fast, or to people who never wrote to them are restricted or banned. GOWA cannot detect or prevent this in advance.`}),`\n`,_jsxs(_components.p,{children:[`The one signal GOWA surfaces is `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`WA_REACHOUT_TIMELOCK`})}),` (HTTP `,_jsx(_components.code,{children:`429`}),`):`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"WA_REACHOUT_TIMELOCK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"...\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`WhatsApp returns this (server error 463) when the account is temporarily blocked from starting `,_jsx(_components.strong,{children:`new`}),` chats. It cannot be bypassed or retried away. Until it lifts:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Only message people who have messaged you first, or reply in existing chats.`}),`\n`,_jsx(_components.li,{children:`Sending one message from the phone itself sometimes clears it sooner.`}),`\n`,_jsx(_components.li,{children:`Stop bulk or cold outreach and slow down.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`pacing-guidelines`,children:`Pacing guidelines`}),`\n`,_jsx(_components.p,{children:`These are conservative starting points, not guarantees:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Send sequentially per device; do not fire hundreds of concurrent requests.`}),`\n`,_jsx(_components.li,{children:`Add a delay between messages (several seconds, with random jitter) and longer pauses between batches.`}),`\n`,_jsx(_components.li,{children:`Prefer contacts who opted in or wrote first. Unsolicited messages get reported, and reports lead to bans.`}),`\n`,_jsx(_components.li,{children:`Warm up new numbers slowly over days.`}),`\n`,_jsx(_components.li,{children:`Personalize content; identical text to many recipients looks like spam.`}),`\n`,_jsxs(_components.li,{children:[`Stop on `,_jsx(_components.code,{children:`WA_REACHOUT_TIMELOCK`}),` and alert a human.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` random, time, requests`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` requests.Session()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.auth `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"admin\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"changeme\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.headers[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"X-Device-Id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"my-device\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` phone, text `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` recipients:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` r `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` session.post(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"http://localhost:3000/send/message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` json`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"phone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: phone, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: text}, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`timeout`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`60`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` body `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` r.json()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` body.get(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"WA_REACHOUT_TIMELOCK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Reach-out blocked; stopping\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` break`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` r.raise_for_status()`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` time.sleep(random.uniform(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`12`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For sends spread over time, use `,_jsx(_components.a,{href:`/examples/scheduled-sends`,children:`scheduled sends`}),` instead of a long-running loop.`]}),`\n`,_jsx(Heading,{level:`2`,id:`protecting-gowa-itself`,children:`Protecting GOWA itself`}),`\n`,_jsxs(_components.p,{children:[`If GOWA is reachable from the internet, add request limits at your reverse proxy, especially for failed Basic Auth logins and, with MCP OAuth, `,_jsx(_components.code,{children:`/oauth/authorize`}),`. For example, with nginx:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`nginx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`nginx`,children:_jsxs(_components.code,{language:`nginx`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`limit_req_zone `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`$`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`binary_remote_addr`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` zone=gowa:10m rate=10r/s;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`server`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` location`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:` / `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` limit_req `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`zone=gowa burst=20 nodelay;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` proxy_pass `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`http://127.0.0.1:3000;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Sending Limits","sidebarTitle":"Sending Limits","description":"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.","href":"/advanced/rate-limiting"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Limits GOWA does enforce","slug":"limits-gowa-does-enforce","depth":2,"children":[]},{"title":"Limits WhatsApp enforces","slug":"limits-whatsapp-enforces","depth":2,"children":[]},{"title":"Pacing guidelines","slug":"pacing-guidelines","depth":2,"children":[]},{"title":"Protecting GOWA itself","slug":"protecting-gowa-itself","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"gowa-docs","siteName":"WhatsApp API MultiDevice","title":"Sending Limits - WhatsApp API MultiDevice","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T15:08:14.283Z","originalFileLocation":"advanced/rate-limiting.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.\">\u003cmeta data-mint-head name=\"application-name\" content=\"WhatsApp API MultiDevice\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Sending Limits - WhatsApp API MultiDevice\">\u003cmeta data-mint-head property=\"og:description\" content=\"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"WhatsApp API MultiDevice\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://gowa-docs.mintlify.app/advanced/rate-limiting\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://gowa-docs.mintlify.app/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Sending+Limits\u0026amp;description=GOWA+does+not+rate-limit+requests.+What+limits+do+exist%2C+how+WhatsApp+restricts+senders%2C+and+how+to+pace+your+traffic.\u0026amp;theme=292b32ce1445ed69af6338be\u0026amp;signature=4f9c326fe56aa69e2067294055c0a019f73c07596aa79d5d99e487fe70b36b8c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Sending Limits - WhatsApp API MultiDevice\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://gowa-docs.mintlify.app/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Sending+Limits\u0026amp;description=GOWA+does+not+rate-limit+requests.+What+limits+do+exist%2C+how+WhatsApp+restricts+senders%2C+and+how+to+pace+your+traffic.\u0026amp;theme=292b32ce1445ed69af6338be\u0026amp;signature=4f9c326fe56aa69e2067294055c0a019f73c07596aa79d5d99e487fe70b36b8c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/gowa-docs/StMmKswtRj-bmXTX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"WhatsApp API MultiDevice\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#277C99\">\u003clink data-mint-head rel=\"canonical\" href=\"https://gowa-docs.mintlify.app/advanced/rate-limiting\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/advanced/rate-limiting.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://gowa-docs.mintlify.app/#organization\",\"name\":\"WhatsApp API MultiDevice\",\"url\":\"https://gowa-docs.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/gowa-docs/tsQezhQWWuaGa128/images/gowa-logo.webp?fit=max\u0026auto=format\u0026n=tsQezhQWWuaGa128\u0026q=85\u0026s=b3f74808868781b289bf1c2d21b7b2a1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://gowa-docs.mintlify.app#website\",\"name\":\"WhatsApp API MultiDevice\",\"url\":\"https://gowa-docs.mintlify.app\",\"publisher\":{\"@id\":\"https://gowa-docs.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting#webpage\",\"url\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting\",\"name\":\"Sending Limits\",\"description\":\"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.\",\"dateModified\":\"2026-10-28T15:08:14.283Z\",\"isPartOf\":{\"@id\":\"https://gowa-docs.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"WhatsApp API MultiDevice\",\"item\":\"https://gowa-docs.mintlify.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sending Limits\",\"item\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting#article\",\"headline\":\"Sending Limits\",\"name\":\"Sending Limits\",\"description\":\"GOWA does not rate-limit requests. What limits do exist, how WhatsApp restricts senders, and how to pace your traffic.\",\"url\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting\",\"mainEntityOfPage\":{\"@id\":\"https://gowa-docs.mintlify.app/advanced/rate-limiting#webpage\"},\"dateModified\":\"2026-10-28T15:08:14.283Z\",\"publisher\":{\"@id\":\"https://gowa-docs.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://gowa-docs.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"WhatsApp API MultiDevice\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"WhatsApp API MultiDevice","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/aldinokemal/go-whatsapp-web-multidevice"}]},"tabs":[{"tab":"Guide","groups":[{"group":"Getting Started","pages":[{"title":"GOWA: WhatsApp REST API","sidebarTitle":"Introduction","href":""},{"title":"Quickstart","href":"/quickstart"},{"title":"Installation","href":"/installation"},{"title":"Authentication","href":"/authentication"},{"title":"Configuration Reference","sidebarTitle":"Configuration","icon":"sliders","href":"/configuration"}]},{"group":"Core Concepts","pages":[{"title":"Multi-Device \u0026 Device Selection","sidebarTitle":"Multi-Device","href":"/concepts/multidevice"},{"title":"Sessions \u0026 Connection Lifecycle","sidebarTitle":"Sessions","href":"/concepts/sessions"},{"title":"Webhooks","href":"/concepts/webhooks"}]},{"group":"Usage Examples","pages":[{"title":"Sending Messages","href":"/examples/sending-messages"},{"title":"Receiving Messages","href":"/examples/receiving-messages"},{"title":"Media Handling","href":"/examples/media-handling"},{"title":"Group Management","href":"/examples/group-management"},{"title":"Scheduled Sends","sidebarTitle":"Scheduled Sends","icon":"clock","href":"/examples/scheduled-sends"}]},{"group":"Integrations","pages":[{"title":"MCP Server","sidebarTitle":"MCP Server","icon":"robot","href":"/integrations/mcp"},{"title":"Chatwoot Integration","description":"Mirror WhatsApp conversations into a Chatwoot inbox and let agents reply from Chatwoot.","sidebarTitle":"Chatwoot","icon":"headset","href":"/integrations/chatwoot"}]},{"group":"Advanced","pages":[{"title":"Sending Limits","sidebarTitle":"Sending Limits","href":"/advanced/rate-limiting"},{"title":"Error Handling","description":"GOWA's response envelope, error codes and HTTP statuses, and how to handle them.","href":"/advanced/error-handling"},{"title":"Production Best Practices","sidebarTitle":"Best Practices","href":"/advanced/best-practices"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/app/login-to-whatsapp-server"}]}]},"title":"Sending Limits - WhatsApp API MultiDevice","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":[],"chunks":[]}