OTP over WhatsApp — Meta writes the message, you choose how it behaves.
One-Time Codes in the sidebar is where you set up the template a login code
goes out on. It is deliberately not part of Templates, because almost nothing on
that page applies here.
An authentication template is the one kind whose words are not yours. Meta
writes them:
394812 is your verification code. For your security, do not share this code.Expires in 10 minutes.
You cannot change that wording, add your brand to it, or explain anything in it.
That is a mercy rather than a restriction — OTP is the one message where wording
is a liability, and Meta has already argued with every phishing pattern there
is.What you choose is three things, and the preview beside them updates as you do.
Ten by default: long enough to find your phone, short enough that a screenshot
in a group chat is worthless by the time it matters. WhatsApp says this line
in the customer’s own language, so it costs you no words.
Copy code — they tap, then paste. Works everywhere, needs no
integration, and is the right answer for almost everyone.
One-tap autofill — hands the code straight to your Android app. Needs
your app’s package name and signing hash, which the form asks for. Meta
refuses the template without them, so you would otherwise find out at review
rather than at login.
There is no “no button” option, and that is Meta’s rule rather than ours: a
code template must carry exactly one button, of one of these two kinds.
On the new-template page, press Save & submit for review to save it and send
it to Meta in one step. Or press Save as draft — a draft is ours, not
Meta’s, and it cannot send anything — then open it later and press Submit for
review. Authentication templates are usually approved within minutes, because
Meta wrote the content and has little to argue with.
Submit needs a connected number. Meta reviews a template against your
WhatsApp Business Account, so until one is connected there is nothing to
submit it to — the button says so on hover.
Once submitted, the settings lock. Meta reviewed a specific configuration and
the API offers no way to change it underneath them. To use different settings,
delete it and make another.
From your own website’s server, through the API. On any code template, press
View embed code — on the template’s page, or in the ⋯ menu of its row in
the list. A window opens with the four steps (get an API key, make the code on
your server, send it, check it when the customer types it in) and code you can
copy in cURL, Node.js, Python and PHP, with your template’s name already filled
in. See also Send a one-time code. The short
version:
POST /api/v1/codes{ "to": "919876543210", "code": "394812" }
We do not generate, store, expire or check the code. That stays yours.
Authentication is priced separately from marketing and utility, and a code sent
to another country costs many times a domestic one — on Meta’s Indian card, more
than twentyfold. Your own figures are on the usage page,
split by category and country, which is the only way anyone notices a login flow
that has quietly gone international.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ThinnestAI","description":"One AI agent that answers on your website, WhatsApp and Telegram — and remembers the same customer across all of them.","colors":{"primary":"#ff4e01","light":"#ff7a3d","dark":"#e64600"},"logo":{"light":"https://mintcdn.com/thinnestai/v8t9Y30dpMuNl6ae/logo/light.svg?fit=max\u0026auto=format\u0026n=v8t9Y30dpMuNl6ae\u0026q=85\u0026s=b9c83749f4bae8ed15285bc7d2b3dec4","dark":"https://mintcdn.com/thinnestai/v8t9Y30dpMuNl6ae/logo/dark.svg?fit=max\u0026auto=format\u0026n=v8t9Y30dpMuNl6ae\u0026q=85\u0026s=e25aa9f9221cebcb813fa71c39f72037"},"favicon":"https://mintcdn.com/thinnestai/v8t9Y30dpMuNl6ae/favicon.png?fit=max\u0026auto=format\u0026n=v8t9Y30dpMuNl6ae\u0026q=85\u0026s=71b74c45d3942ee0cf5d5fec76b24991","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"]}},"navbar":{"primary":{"type":"button","label":"Open the console","href":"https://thinnest.ai/app"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"thinnestai","hasAudioNarration":false,"actualSubdomain":"thinnestai","customDomains":["docs.thinnest.ai"],"gitSource":{"type":"github","owner":"ashutoshkaremore","repo":"thin-agents-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad9b2af180212ced3d75ad5","collectionId":"6953d0a8-861a-4fd5-a3a1-82fccccb6e16","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad9b2af180212ced3d75ad5"},"entitlements":{},"buildId":"6ad9db35ea294acc113759e8","clientVersion":"0.0.3926","searchFilterCounts":[{"language":"default","tag":"API reference","count":208},{"language":"default","tag":"Documentation","count":53},{"language":"default","tag":"Guides","count":15},{"language":"default","tag":"Tools","count":15},{"language":"default","tag":"Phone numbers","count":13},{"language":"default","tag":"Channels","count":12},{"language":"default","tag":"Reaching out","count":10},{"language":"default","tag":"Agents","count":10},{"language":"default","tag":"Your agent","count":9},{"language":"default","tag":"Customers","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"vite-origin","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":"editor-agent-model-picker","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"whatsapp/one-time-codes","slug":"/whatsapp/one-time-codes","pageMetadata":{"title":"One-time codes","description":"OTP over WhatsApp — Meta writes the message, you choose how it behaves.","href":"/whatsapp/one-time-codes"},"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: \"OTP over WhatsApp — Meta writes the message, you choose how it behaves.\"\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`,blockquote:`blockquote`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,ParamField,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`One-Time Codes`}),` in the sidebar is where you set up the template a login code\ngoes out on. It is deliberately not part of Templates, because almost nothing on\nthat page applies here.`]}),`\n`,_jsx(Heading,{level:`2`,id:`you-do-not-write-this-one`,children:`You do not write this one`}),`\n`,_jsx(_components.p,{children:`An authentication template is the one kind whose words are not yours. Meta\nwrites them:`}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`394812`}),` is your verification code. For your security, do not share this code.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Expires in 10 minutes.`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`You cannot change that wording, add your brand to it, or explain anything in it.\nThat is a mercy rather than a restriction — OTP is the one message where wording\nis a liability, and Meta has already argued with every phishing pattern there\nis.`}),`\n`,_jsx(_components.p,{children:`What you choose is three things, and the preview beside them updates as you do.`}),`\n`,_jsx(ParamField,{path:`Expires after`,type:`1–90 minutes`,id:`param-expires-after`,children:_jsx(_components.p,{children:`Ten by default: long enough to find your phone, short enough that a screenshot\nin a group chat is worthless by the time it matters. WhatsApp says this line\nin the customer’s own language, so it costs you no words.`})}),`\n`,_jsx(ParamField,{path:`Warn against sharing it`,type:`on / off`,id:`param-warn-against-sharing-it`,children:_jsxs(_components.p,{children:[`Appends `,_jsx(_components.em,{children:`“For your security, do not share this code.”`}),` On by default.`]})}),`\n`,_jsxs(ParamField,{path:`How they get it into your app`,type:`Copy code / One-tap`,id:`param-how-they-get-it-into-your-app`,children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Copy code`}),` — they tap, then paste. Works everywhere, needs no\nintegration, and is the right answer for almost everyone.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`One-tap autofill`}),` — hands the code straight to your Android app. Needs\nyour app’s `,_jsx(_components.strong,{children:`package name and signing hash`}),`, which the form asks for. Meta\nrefuses the template without them, so you would otherwise find out at review\nrather than at login.`]}),`\n`]}),_jsx(_components.p,{children:`There is no “no button” option, and that is Meta’s rule rather than ours: a\ncode template must carry exactly one button, of one of these two kinds.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`getting-it-approved`,children:`Getting it approved`}),`\n`,_jsxs(_components.p,{children:[`On the new-template page, press `,_jsx(_components.strong,{children:`Save \u0026 submit for review`}),` to save it and send\nit to Meta in one step. Or press `,_jsx(_components.strong,{children:`Save as draft`}),` — a draft is ours, not\nMeta’s, and it cannot send anything — then open it later and press `,_jsx(_components.strong,{children:`Submit for\nreview`}),`. Authentication templates are usually approved within minutes, because\nMeta wrote the content and has little to argue with.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Submit needs a connected number.`}),` Meta reviews a template against your\nWhatsApp Business Account, so until one is connected there is nothing to\nsubmit it to — the button says so on hover.`]})}),`\n`,_jsx(_components.p,{children:`Once submitted, the settings lock. Meta reviewed a specific configuration and\nthe API offers no way to change it underneath them. To use different settings,\ndelete it and make another.`}),`\n`,_jsx(Heading,{level:`2`,id:`sending-a-code`,children:`Sending a code`}),`\n`,_jsxs(_components.p,{children:[`From your own website’s server, through the API. On any code template, press\n`,_jsx(_components.strong,{children:`View embed code`}),` — on the template’s page, or in the `,_jsx(_components.strong,{children:`⋯`}),` menu of its row in\nthe list. A window opens with the four steps (get an API key, make the code on\nyour server, send it, check it when the customer types it in) and code you can\ncopy in cURL, Node.js, Python and PHP, with your template’s name already filled\nin. See also `,_jsx(_components.a,{href:`/api-reference/one-time-codes/send-one-time-code`,children:`Send a one-time code`}),`. The short\nversion:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,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:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`POST /api/v`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/codes`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"919876543210\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},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:`\"394812\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`We do not generate, store, expire or check the code. That stays yours.`}),`\n`,_jsx(Heading,{level:`2`,id:`deleting-one`,children:`Deleting one`}),`\n`,_jsxs(_components.p,{children:[`Either from the row’s `,_jsx(_components.strong,{children:`⋯`}),` menu in the list, or from `,_jsx(_components.strong,{children:`Delete`}),` on the\ntemplate’s own page.`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`This removes it from Meta as well as from here`}),`, and there are two\nconsequences worth knowing before you click:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Anything calling the API with that template’s name `,_jsx(_components.strong,{children:`stops working`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Meta will `,_jsx(_components.strong,{children:`not let the name be used again for 30 days`}),`. If you are\nreplacing a template, give the new one a different name.`]}),`\n`]})]}),`\n`,_jsx(_components.p,{children:`A draft that never reached Meta has neither consequence — nothing is using it,\nand the name stays free.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-this-costs`,children:`What this costs`}),`\n`,_jsxs(_components.p,{children:[`Authentication is priced separately from marketing and utility, and a code sent\nto another country costs many times a domestic one — on Meta’s Indian card, more\nthan twentyfold. Your own figures are on the `,_jsx(_components.a,{href:`/workspace/usage`,children:`usage page`}),`,\nsplit by category and country, which is the only way anyone notices a login flow\nthat has quietly gone international.`]})]})}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":"One-time codes","description":"OTP over WhatsApp — Meta writes the message, you choose how it behaves.","href":"/whatsapp/one-time-codes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"You do not write this one","slug":"you-do-not-write-this-one","depth":2,"children":[]},{"title":"Getting it approved","slug":"getting-it-approved","depth":2,"children":[]},{"title":"Sending a code","slug":"sending-a-code","depth":2,"children":[]},{"title":"Deleting one","slug":"deleting-one","depth":2,"children":[]},{"title":"What this costs","slug":"what-this-costs","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"thinnestai","siteName":"ThinnestAI","title":"One-time codes - ThinnestAI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-07T04:23:38.751Z","originalFileLocation":"whatsapp/one-time-codes.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=\"OTP over WhatsApp — Meta writes the message, you choose how it behaves.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ThinnestAI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/thinnestai/5DqVrbKlNMbN0dXk/_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/thinnestai/5DqVrbKlNMbN0dXk/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/thinnestai/5DqVrbKlNMbN0dXk/_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/thinnestai/5DqVrbKlNMbN0dXk/_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/thinnestai/5DqVrbKlNMbN0dXk/_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/thinnestai/5DqVrbKlNMbN0dXk/_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/thinnestai/5DqVrbKlNMbN0dXk/_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/thinnestai/5DqVrbKlNMbN0dXk/_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/thinnestai/5DqVrbKlNMbN0dXk/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"One-time codes - ThinnestAI\">\u003cmeta data-mint-head property=\"og:description\" content=\"OTP over WhatsApp — Meta writes the message, you choose how it behaves.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ThinnestAI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.thinnest.ai/whatsapp/one-time-codes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://thinnestai.mintlify.app/_mintlify/api/og/v2?division=Reaching+out\u0026amp;title=One-time+codes\u0026amp;description=OTP+over+WhatsApp+%E2%80%94+Meta+writes+the+message%2C+you+choose+how+it+behaves.\u0026amp;theme=4a7b69d59c8f36e85b2be2f3\u0026amp;signature=c8e7c68a580a5970db7b20ecf8b3c3aacb77ceecab4b1315b69a65219b78653b\">\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=\"One-time codes - ThinnestAI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"OTP over WhatsApp — Meta writes the message, you choose how it behaves.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://thinnestai.mintlify.app/_mintlify/api/og/v2?division=Reaching+out\u0026amp;title=One-time+codes\u0026amp;description=OTP+over+WhatsApp+%E2%80%94+Meta+writes+the+message%2C+you+choose+how+it+behaves.\u0026amp;theme=4a7b69d59c8f36e85b2be2f3\u0026amp;signature=c8e7c68a580a5970db7b20ecf8b3c3aacb77ceecab4b1315b69a65219b78653b\">\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/thinnestai/5DqVrbKlNMbN0dXk/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ThinnestAI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff4e01\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.thinnest.ai/whatsapp/one-time-codes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/whatsapp/one-time-codes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.thinnest.ai/#organization\",\"name\":\"ThinnestAI\",\"url\":\"https://docs.thinnest.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/thinnestai/v8t9Y30dpMuNl6ae/logo/light.svg?fit=max\u0026auto=format\u0026n=v8t9Y30dpMuNl6ae\u0026q=85\u0026s=b9c83749f4bae8ed15285bc7d2b3dec4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.thinnest.ai#website\",\"name\":\"ThinnestAI\",\"url\":\"https://docs.thinnest.ai\",\"publisher\":{\"@id\":\"https://docs.thinnest.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.thinnest.ai/whatsapp/one-time-codes#webpage\",\"url\":\"https://docs.thinnest.ai/whatsapp/one-time-codes\",\"name\":\"One-time codes\",\"description\":\"OTP over WhatsApp — Meta writes the message, you choose how it behaves.\",\"dateModified\":\"2026-10-07T04:23:38.751Z\",\"isPartOf\":{\"@id\":\"https://docs.thinnest.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.thinnest.ai/whatsapp/one-time-codes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.thinnest.ai/whatsapp/one-time-codes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Reaching out\",\"item\":\"https://docs.thinnest.ai/agent/find-leads\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"One-time codes\",\"item\":\"https://docs.thinnest.ai/whatsapp/one-time-codes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.thinnest.ai/whatsapp/one-time-codes#article\",\"headline\":\"One-time codes\",\"name\":\"One-time codes\",\"description\":\"OTP over WhatsApp — Meta writes the message, you choose how it behaves.\",\"url\":\"https://docs.thinnest.ai/whatsapp/one-time-codes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.thinnest.ai/whatsapp/one-time-codes#webpage\"},\"dateModified\":\"2026-10-07T04:23:38.751Z\",\"publisher\":{\"@id\":\"https://docs.thinnest.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.thinnest.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ThinnestAI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ThinnestAI","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"},{"title":"How the pieces fit","href":"/concepts"}]},{"group":"Your agent","pages":[{"title":"Knowledge","href":"/agent/knowledge"},{"title":"Behaviour","href":"/agent/behaviour"},{"title":"Leads and contacts","href":"/agent/leads"},{"title":"Actions","href":"/agent/actions"},{"title":"After the call","href":"/agent/after-the-call"},{"title":"Calendar","href":"/agent/calendar"},{"title":"Spreadsheet","href":"/agent/spreadsheet"},{"title":"Call your own API","href":"/agent/custom-api"},{"title":"Escalation","href":"/agent/escalation"}]},{"group":"Channels","pages":[{"title":"Channels overview","href":"/channels/overview"},{"title":"Website widget","href":"/channels/website"},{"group":"WhatsApp","root":{"title":"WhatsApp","href":"/channels/whatsapp"},"pages":[{"title":"Connect External Agent/CRM","href":"/whatsapp/external-agents"}]},{"title":"SMS","href":"/channels/sms"},{"title":"Telegram","href":"/channels/telegram"},{"title":"Voice","href":"/channels/voice"},{"title":"Voice Clone","href":"/channels/voice-clone"},{"title":"Calling campaigns","href":"/channels/voice-campaigns"},{"title":"Phone numbers","href":"/channels/phone-numbers"}]},{"group":"Put it on your site","pages":[{"title":"Shopify","href":"/install/shopify"},{"title":"WordPress and WooCommerce","href":"/install/wordpress"},{"title":"PrestaShop","href":"/install/prestashop"},{"title":"Wix, Squarespace, Webflow and anything else","href":"/install/other-platforms"},{"title":"Recognise signed-in customers","href":"/install/signed-in-customers"},{"title":"Website \u0026 app agent","href":"/agent/website-and-app-agent"}]},{"group":"Reaching out","pages":[{"title":"Find leads","href":"/agent/find-leads"},{"title":"Templates","description":"The only thing that reaches a customer outside the 24-hour window.","href":"/whatsapp/templates"},{"title":"One-time codes","href":"/whatsapp/one-time-codes"},{"title":"Send a message","description":"One approved template, to a handful of numbers, without building a campaign.","href":"/whatsapp/send"},{"title":"Broadcasts","href":"/whatsapp/broadcasts"},{"title":"Sequences","href":"/whatsapp/sequences"},{"title":"Your products in the chat","href":"/whatsapp/products"},{"title":"When a message isn't delivered","href":"/whatsapp/not-delivered"},{"title":"Adding a payment method in Meta","href":"/whatsapp/payment-method"},{"title":"WhatsApp calls","href":"/whatsapp/calls"}]},{"group":"Meta's rules","pages":[{"title":"Meta's rules, in one place","href":"/meta/overview"},{"title":"Windows and what gets charged","href":"/meta/windows-and-pricing"},{"title":"Template review and approval","href":"/meta/template-review"},{"title":"Quality ratings and messaging limits","href":"/meta/quality-and-limits"},{"title":"Business verification","href":"/meta/verification"}]},{"group":"Working the conversations","pages":[{"title":"Inbox","href":"/workspace/inbox"},{"title":"Helpdesk","href":"/workspace/helpdesk"},{"title":"Analytics","href":"/workspace/analytics"},{"title":"Usage","href":"/workspace/usage"},{"title":"Your data: erasure and training","href":"/workspace/data-and-erasure"},{"title":"Notifications","href":"/workspace/notifications"}]},{"group":"White label","pages":[{"title":"White label","href":"/white-label/overview"},{"title":"Clients","href":"/white-label/clients"},{"title":"Brand and domains","href":"/white-label/brand-and-domains"},{"title":"Your prices","href":"/white-label/prices"}]},{"group":"Partners","pages":[{"title":"Partner referrals","href":"/partners/referrals"}]}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"tab":"What's New","pages":[{"title":"What's New","href":"/whats-new"}]}]},"title":"One-time codes - ThinnestAI","buildId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","deploymentId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","dynamics":[],"chunks":[]}