Sends a WhatsApp message to a phone number. You pass a number, not an
internal id: the endpoint finds or creates the contact and the WhatsApp
conversation, then sends.
A free-form message (text or media) only reaches a customer inside the
24-hour customer service window. Outside it, send type: "template"
with an approved template.
Templates are looked up by name and language among the
workspace’s synced templates. Send body values as a plain array, or as
an object when the template also needs a header, button values or
carousel cards. Every value the template needs is checked before
anything is sent: a missing or blank one is refused with 502meta_error and a message naming it. On the Templates screen, the
code button on a template shows the exact request for that template.
One-time codes. For an approved template in the Authentication
category, send the code as the only value: params: ["482913"], up
to 15 characters. WhatsApp puts it in the message and on the
template’s copy-code or autofill button. Your system generates the
code and checks it when the user types it back; Watx only delivers
it.
Sending happens on WhatsApp only.
Requires the messages:send scope.
POST
/
messages
curl --request POST \ --url https://api.watx.in/v1/messages \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "to": "+919876543210", "type": "text", "text": "Your order has been packed."}'
Your workspace API key, created in Settings → Developer → API keys, sent as
Authorization: Bearer <key>. New keys start with watx_live_; keys
issued before the rename start with converse360_live_ and still work.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Watx","description":"Documentation for Watx: one inbox for WhatsApp, Instagram and website chat, with a CRM, automations, flows, forms, AI agents, integrations and a public API.","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/watx/RbII_Y84cOqYh7_M/logo/light.svg?fit=max\u0026auto=format\u0026n=RbII_Y84cOqYh7_M\u0026q=85\u0026s=9f016a244568da620d7a646c56e7889f","dark":"https://mintcdn.com/watx/RbII_Y84cOqYh7_M/logo/dark.svg?fit=max\u0026auto=format\u0026n=RbII_Y84cOqYh7_M\u0026q=85\u0026s=0bb6c63111efdfd7ef7a399e6887ab21","href":"https://app.watx.in"},"favicon":{"light":"https://mintcdn.com/watx/BcZx4nq4blikJB48/images/watx-mark-light.png?fit=max\u0026auto=format\u0026n=BcZx4nq4blikJB48\u0026q=85\u0026s=5cb4a28aa55834fb3a854e26ba4b8b50","dark":"https://mintcdn.com/watx/BcZx4nq4blikJB48/images/watx-mark-dark.png?fit=max\u0026auto=format\u0026n=BcZx4nq4blikJB48\u0026q=85\u0026s=9d042920d09f1124ec9cced5a27f3486"},"navbar":{"links":[{"icon":"paper-plane","href":"/api/postman","label":"Postman collection"},{"href":"mailto:support@watx.in","label":"Support"}],"primary":{"type":"button","label":"Open Watx","href":"https://app.watx.in"}},"footer":{"links":[{"header":"Product","items":[{"label":"Open Watx","href":"https://app.watx.in"},{"label":"Pricing","href":"https://app.watx.in/pricing"}]},{"header":"Help","items":[{"label":"Support","href":"mailto:support@watx.in"}]}]},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"watx","hasAudioNarration":false,"actualSubdomain":"watx","customDomains":["docs.watx.in"],"gitSource":{"type":"github","owner":"sivakrishnacode","repo":"watx-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad4bb0a5ec9dc5442eb45c9","collectionId":"915b525b-9f30-403d-be81-db443151af68","liveDeploymentHistoryId":"6ad4bb0a5ec9dc5442eb45c9","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad4bb0a5ec9dc5442eb45c9","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Guides","count":80},{"language":"default","tag":"API reference","count":29},{"language":"default","tag":"Channels","count":28},{"language":"default","tag":"Integrations","count":17},{"language":"default","tag":"WhatsApp","count":15},{"language":"default","tag":"AI agents","count":10},{"language":"default","tag":"Automations","count":10},{"language":"default","tag":"Forms","count":8},{"language":"default","tag":"Instagram","count":8},{"language":"default","tag":"Segments","count":8}]},"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":"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":"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":"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":"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":"api-reference/messages/send-a-message","slug":"/api-reference/messages/send-a-message","pageMetadata":{"title":"Send a message","description":"Sends a WhatsApp message to a phone number. You pass a number, not an\ninternal id: the endpoint finds or creates the contact and the WhatsApp\nconversation, then sends.\n\nA free-form message (text or media) only reaches a customer inside the\n24-hour customer service window. Outside it, send `type: \"template\"`\nwith an approved template.\n\n**Templates** are looked up by `name` and `language` among the\nworkspace's synced templates. Send body values as a plain array, or as\nan object when the template also needs a header, button values or\ncarousel cards. Every value the template needs is checked before\nanything is sent: a missing or blank one is refused with `502`\n`meta_error` and a message naming it. On the Templates screen, the\ncode button on a template shows the exact request for that template.\n\n**One-time codes.** For an approved template in the Authentication\ncategory, send the code as the only value: `params: [\"482913\"]`, up\nto 15 characters. WhatsApp puts it in the message and on the\ntemplate's copy-code or autofill button. Your system generates the\ncode and checks it when the user types it back; Watx only delivers\nit.\n\nSending happens on WhatsApp only.\n\nRequires the `messages:send` scope.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /messages","href":"/api-reference/messages/send-a-message","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Sends a WhatsApp message to a phone number. You pass a number, not an\\ninternal id: the endpoint finds or creates the contact and the WhatsApp\\nconversation, then sends.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A free-form message (text or media) only reaches a customer inside the\\n24-hour customer service window. Outside it, send \", _jsx(_components.code, {\n children: \"type: \\\"template\\\"\"\n }), \"\\nwith an approved template.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Templates\"\n }), \" are looked up by \", _jsx(_components.code, {\n children: \"name\"\n }), \" and \", _jsx(_components.code, {\n children: \"language\"\n }), \" among the\\nworkspace’s synced templates. Send body values as a plain array, or as\\nan object when the template also needs a header, button values or\\ncarousel cards. Every value the template needs is checked before\\nanything is sent: a missing or blank one is refused with \", _jsx(_components.code, {\n children: \"502\"\n }), \"\\n\", _jsx(_components.code, {\n children: \"meta_error\"\n }), \" and a message naming it. On the Templates screen, the\\ncode button on a template shows the exact request for that template.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"One-time codes.\"\n }), \" For an approved template in the Authentication\\ncategory, send the code as the only value: \", _jsx(_components.code, {\n children: \"params: [\\\"482913\\\"]\"\n }), \", up\\nto 15 characters. WhatsApp puts it in the message and on the\\ntemplate’s copy-code or autofill button. Your system generates the\\ncode and checks it when the user types it back; Watx only delivers\\nit.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Sending happens on WhatsApp only.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Requires the \", _jsx(_components.code, {\n children: \"messages:send\"\n }), \" scope.\"]\n })]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Send a message","description":"Sends a WhatsApp message to a phone number. You pass a number, not an\ninternal id: the endpoint finds or creates the contact and the WhatsApp\nconversation, then sends.\n\nA free-form message (text or media) only reaches a customer inside the\n24-hour customer service window. Outside it, send `type: \"template\"`\nwith an approved template.\n\n**Templates** are looked up by `name` and `language` among the\nworkspace's synced templates. Send body values as a plain array, or as\nan object when the template also needs a header, button values or\ncarousel cards. Every value the template needs is checked before\nanything is sent: a missing or blank one is refused with `502`\n`meta_error` and a message naming it. On the Templates screen, the\ncode button on a template shows the exact request for that template.\n\n**One-time codes.** For an approved template in the Authentication\ncategory, send the code as the only value: `params: [\"482913\"]`, up\nto 15 characters. WhatsApp puts it in the message and on the\ntemplate's copy-code or autofill button. Your system generates the\ncode and checks it when the user types it back; Watx only delivers\nit.\n\nSending happens on WhatsApp only.\n\nRequires the `messages:send` scope.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /messages","href":"/api-reference/messages/send-a-message","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"sendMessage","tags":["Messages"],"summary":"Send a message","description":"Sends a WhatsApp message to a phone number. You pass a number, not an\ninternal id: the endpoint finds or creates the contact and the WhatsApp\nconversation, then sends.\n\nA free-form message (text or media) only reaches a customer inside the\n24-hour customer service window. Outside it, send `type: \"template\"`\nwith an approved template.\n\n**Templates** are looked up by `name` and `language` among the\nworkspace's synced templates. Send body values as a plain array, or as\nan object when the template also needs a header, button values or\ncarousel cards. Every value the template needs is checked before\nanything is sent: a missing or blank one is refused with `502`\n`meta_error` and a message naming it. On the Templates screen, the\ncode button on a template shows the exact request for that template.\n\n**One-time codes.** For an approved template in the Authentication\ncategory, send the code as the only value: `params: [\"482913\"]`, up\nto 15 characters. WhatsApp puts it in the message and on the\ntemplate's copy-code or autofill button. Your system generates the\ncode and checks it when the user types it back; Watx only delivers\nit.\n\nSending happens on WhatsApp only.\n\nRequires the `messages:send` scope.\n","x-required-scope":"messages:send","requestBody":"7a3ea793-55b7-47be-8df4-3443bfac0880","responses":{"201":"2a4f5779-2a30-4150-864a-887c26daad90","400":"45734c56-cb45-4a94-9c39-299dd77410f1","401":"29f11f4c-952c-4af9-9c7f-87db7ff8727e","402":"59925faf-f8fc-4d79-89b2-3ad3dd503fce","403":"4676111f-7f49-4902-9bbc-e7fe36f8ebb4","429":"52300a1e-1926-4250-ba64-4532b8935e3b","502":"dcd10895-194f-4631-a336-9142612a7b58"},"method":"post","type":"path","servers":["aad385d4-3f88-431f-bb44-1cd2895693b4"],"security":["c3ff3544-094c-4808-a459-57f829ae83c9"],"path":"/messages","baseUrlOptions":["https://api.watx.in/v1"],"title":"Send a message","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["to"],"properties":{"to":{"type":"string","description":"The recipient's phone number in E.164 form, for example\n`+919876543210`. A number without a country code is read using the\nworkspace's default country.\n","example":"+919876543210","isRequired":true,"uniqueKey":"to","typeLabel":"string"},"type":{"type":"string","enum":["text","template","image","video","document","audio"],"default":"text","description":"What kind of message to send.","uniqueKey":"type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The message body for `type: \"text\"`, or the caption for an image,\nvideo or document. A caption is capped at 1024 characters.\n","uniqueKey":"text","typeLabel":"string"},"media_url":{"type":"string","format":"uri","description":"Public URL of the file. Required for `image`, `video`, `document`\nand `audio`.\n","uniqueKey":"media_url","typeLabel":"string\u003curi>"},"filename":{"type":"string","description":"The file name shown in the chat for a document.","uniqueKey":"filename","typeLabel":"string"},"name":{"type":"string","description":"A name for the contact. Used when this number is new, and updates\nthe name if it differs from the one on file.\n","uniqueKey":"name","typeLabel":"string"},"template":{"type":"object","description":"Required for `type: \"template\"`.","required":["name"],"properties":{"name":{"type":"string","description":"The approved template's name.","isRequired":true,"uniqueKey":"template.name","typeLabel":"string"},"language":{"type":"string","default":"en_US","description":"The template's language code.","uniqueKey":"template.language","typeLabel":"string"},"params":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"template.params.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Either an array of strings — the body values, in placeholder\norder — or an object for templates that also need a header,\nbuttons or carousel cards. Every value must be non-empty.\n\nFor an Authentication template, send the one-time code as the\nonly array entry, for example `[\"482913\"]` (at most 15\ncharacters).\n","uniqueKey":"template.params.oneOf.0","typeLabel":"string[]"},{"type":"object","description":"Either an array of strings — the body values, in placeholder\norder — or an object for templates that also need a header,\nbuttons or carousel cards. Every value must be non-empty.\n\nFor an Authentication template, send the one-time code as the\nonly array entry, for example `[\"482913\"]` (at most 15\ncharacters).\n","properties":{"body":{"type":"array","description":"Body values in placeholder order.","items":{"type":"string","uniqueKey":"template.params.oneOf.1.body.items.[INDEX]","typeLabel":"string"},"uniqueKey":"template.params.oneOf.1.body","typeLabel":"string[]"},"bodyNamed":{"type":"object","description":"Body values keyed by parameter name, for a template that uses named\nparameters. Takes precedence over `body` for a name it carries.\n","additionalProperties":{"type":"string","uniqueKey":"template.params.oneOf.1.bodyNamed.additionalProperties","typeLabel":"string"},"uniqueKey":"template.params.oneOf.1.bodyNamed","typeLabel":"object"},"headerText":{"type":"string","description":"The value for a text header that carries a variable.","uniqueKey":"template.params.oneOf.1.headerText","typeLabel":"string"},"headerMediaUrl":{"type":"string","description":"Public URL for an image, video or document header.","uniqueKey":"template.params.oneOf.1.headerMediaUrl","typeLabel":"string"},"headerMediaId":{"type":"string","description":"A media id already uploaded to WhatsApp, instead of a URL.","uniqueKey":"template.params.oneOf.1.headerMediaId","typeLabel":"string"},"headerFilename":{"type":"string","description":"The file name shown in the chat for a document header. Without it\nWhatsApp shows the attachment as \"Untitled\".\n","uniqueKey":"template.params.oneOf.1.headerFilename","typeLabel":"string"},"headerLocation":{"type":"object","description":"The map pin for a template with a location header.","required":["latitude","longitude"],"properties":{"latitude":{"type":"string","isRequired":true,"uniqueKey":"template.params.oneOf.1.headerLocation.latitude","typeLabel":"string"},"longitude":{"type":"string","isRequired":true,"uniqueKey":"template.params.oneOf.1.headerLocation.longitude","typeLabel":"string"},"name":{"type":"string","uniqueKey":"template.params.oneOf.1.headerLocation.name","typeLabel":"string"},"address":{"type":"string","uniqueKey":"template.params.oneOf.1.headerLocation.address","typeLabel":"string"}},"uniqueKey":"template.params.oneOf.1.headerLocation","typeLabel":"object"},"buttonParams":{"type":"object","description":"Values for dynamic buttons, keyed by button index (`\"0\"`, `\"1\"`) —\nthe URL suffix for a dynamic URL button, the code for a copy-code\nbutton.\n","additionalProperties":{"type":"string","uniqueKey":"template.params.oneOf.1.buttonParams.additionalProperties","typeLabel":"string"},"uniqueKey":"template.params.oneOf.1.buttonParams","typeLabel":"object"},"cards":{"type":"array","description":"One entry per card of a carousel template, in card order.","items":{"type":"object","description":"Send-time values for one card of a carousel template, in card order.\nKeep empty entries in place — position decides which card a value\nbelongs to.\n","properties":{"headerMediaUrl":{"type":"string","description":"Public URL of this card's image or video.","uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].headerMediaUrl","typeLabel":"string"},"headerMediaId":{"type":"string","description":"A media id already uploaded to WhatsApp.","uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].headerMediaId","typeLabel":"string"},"body":{"type":"array","items":{"type":"string","uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].body.items.[INDEX]","typeLabel":"string"},"uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].body","typeLabel":"string[]"},"bodyNamed":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].bodyNamed.additionalProperties","typeLabel":"string"},"uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].bodyNamed","typeLabel":"object"},"buttonParams":{"type":"object","description":"Values for this card's buttons, keyed by button index (`\"0\"`, `\"1\"`).","additionalProperties":{"type":"string","uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].buttonParams.additionalProperties","typeLabel":"string"},"uniqueKey":"template.params.oneOf.1.cards.items.[INDEX].buttonParams","typeLabel":"object"}},"uniqueKey":"template.params.oneOf.1.cards.items.[INDEX]","typeLabel":"object"},"uniqueKey":"template.params.oneOf.1.cards","typeLabel":"object[]"}},"uniqueKey":"template.params.oneOf.1","typeLabel":"object"}],"uniqueKey":"template.params","typeLabel":"string[] | object"}},"uniqueKey":"template","typeLabel":"object"},"reply_to_message_id":{"type":"string","format":"uuid","description":"Quote an earlier message. It must belong to the same conversation.\n","uniqueKey":"reply_to_message_id","typeLabel":"string\u003cuuid>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"text":{"title":"text","value":{"to":"+919876543210","type":"text","text":"Your order has been packed."}},"template":{"title":"template","value":{"to":"+919876543210","type":"template","template":{"name":"order_update","language":"en_US","params":["Priya","A-1042"]}}},"template_header":{"title":"template_header","value":{"to":"+919876543210","type":"template","template":{"name":"invoice_ready","language":"en_US","params":{"body":["Priya","INV/2026-27/0042"],"headerMediaUrl":"https://files.example.com/inv-0042.pdf","headerFilename":"INV-2026-27-0042.pdf","buttonParams":{"0":"inv-0042"}}}}},"authentication":{"title":"authentication","value":{"to":"+919876543210","type":"template","template":{"name":"login_code","language":"en_US","params":["482913"]}}},"media":{"title":"media","value":{"to":"+919876543210","type":"document","media_url":"https://files.example.com/invoice-1042.pdf","filename":"invoice-1042.pdf","text":"Your invoice."}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"2a4f5779-2a30-4150-864a-887c26daad90":{"description":"The message was accepted by WhatsApp and stored.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"message_id":{"type":"string","format":"uuid","description":"The Watx message id.","uniqueKey":"data.message_id","typeLabel":"string\u003cuuid>"},"whatsapp_message_id":{"type":"string","description":"WhatsApp's own message id, which delivery events refer to.","uniqueKey":"data.whatsapp_message_id","typeLabel":"string"},"conversation_id":{"type":"string","format":"uuid","uniqueKey":"data.conversation_id","typeLabel":"string\u003cuuid>"},"contact_id":{"type":"string","format":"uuid","uniqueKey":"data.contact_id","typeLabel":"string\u003cuuid>"},"contact_created":{"type":"boolean","description":"True when this call created the contact.","uniqueKey":"data.contact_created","typeLabel":"boolean"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":{"message_id":"9d1f4b2a-6c3e-4a51-bf2d-0a7c9e114b3f","whatsapp_message_id":"wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgS","conversation_id":"3c5b1e77-90aa-4c0e-8f71-1d2a3b4c5d6e","contact_id":"7e2d9c01-55b4-4a3d-9c8e-0f1a2b3c4d5e","contact_created":false}},"examples":{"Example":{"title":"Example","value":{"data":{"message_id":"9d1f4b2a-6c3e-4a51-bf2d-0a7c9e114b3f","whatsapp_message_id":"wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgS","conversation_id":"3c5b1e77-90aa-4c0e-8f71-1d2a3b4c5d6e","contact_id":"7e2d9c01-55b4-4a3d-9c8e-0f1a2b3c4d5e","contact_created":false}}}},"exampleType":"examples"}},"exampleType":"examples"},"45734c56-cb45-4a94-9c39-299dd77410f1":{"description":"The request was malformed or a value was unusable.","content":{"application/json":{"schema":{"type":"object","description":"Every failure uses this shape. Branch on `error.code`, which is stable;\n`error.message` is written for people and may be reworded.\n","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `bad_request`, `invalid_request`, `unauthorized`,\n`forbidden`, `not_found`, `rate_limited`, `internal`, or a\ndomain code such as `whatsapp_not_configured`, `meta_error`,\n`template_malformed`, `plan_limit_reached`,\n`subscription_lapsed`.\n","example":"bad_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"'phone' is required","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"bad_request","message":"'to' must be a valid phone number in E.164 format (e.g. +14155550123)"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"bad_request","message":"'to' must be a valid phone number in E.164 format (e.g. +14155550123)"}}}},"exampleType":"examples"}},"exampleType":"examples"},"29f11f4c-952c-4af9-9c7f-87db7ff8727e":{"description":"The key is missing, malformed, unknown, revoked or expired. All four\nanswer the same way.\n","content":{"application/json":{"schema":{"type":"object","description":"Every failure uses this shape. Branch on `error.code`, which is stable;\n`error.message` is written for people and may be reworded.\n","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `bad_request`, `invalid_request`, `unauthorized`,\n`forbidden`, `not_found`, `rate_limited`, `internal`, or a\ndomain code such as `whatsapp_not_configured`, `meta_error`,\n`template_malformed`, `plan_limit_reached`,\n`subscription_lapsed`.\n","example":"bad_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"'phone' is required","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"unauthorized","message":"Missing or invalid API key"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthorized","message":"Missing or invalid API key"}}}},"exampleType":"examples"}},"exampleType":"examples"},"59925faf-f8fc-4d79-89b2-3ad3dd503fce":{"description":"The workspace has used up this plan limit, or its subscription has\nlapsed. Reads keep working; the things that spend do not.\n\nBranch on the `402` status, not on `code`. The plan check that runs\nbefore the request currently answers with `code: bad_request` and a\ngeneric message; only the message-budget check inside\n`POST /broadcasts` answers `plan_limit_reached` or\n`subscription_lapsed`.\n","content":{"application/json":{"schema":{"type":"object","description":"Every failure uses this shape. Branch on `error.code`, which is stable;\n`error.message` is written for people and may be reworded.\n","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `bad_request`, `invalid_request`, `unauthorized`,\n`forbidden`, `not_found`, `rate_limited`, `internal`, or a\ndomain code such as `whatsapp_not_configured`, `meta_error`,\n`template_malformed`, `plan_limit_reached`,\n`subscription_lapsed`.\n","example":"bad_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"'phone' is required","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"bad_request","message":"'phone' is required"}}}},"exampleType":"generated"}},"exampleType":"generated"},"4676111f-7f49-4902-9bbc-e7fe36f8ebb4":{"description":"The key is valid but was not granted the scope this operation requires.","content":{"application/json":{"schema":{"type":"object","description":"Every failure uses this shape. Branch on `error.code`, which is stable;\n`error.message` is written for people and may be reworded.\n","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `bad_request`, `invalid_request`, `unauthorized`,\n`forbidden`, `not_found`, `rate_limited`, `internal`, or a\ndomain code such as `whatsapp_not_configured`, `meta_error`,\n`template_malformed`, `plan_limit_reached`,\n`subscription_lapsed`.\n","example":"bad_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"'phone' is required","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"forbidden","message":"This API key is missing the 'messages:send' scope"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"forbidden","message":"This API key is missing the 'messages:send' scope"}}}},"exampleType":"examples"}},"exampleType":"examples"},"52300a1e-1926-4250-ba64-4532b8935e3b":{"description":"More than 120 requests in a minute for this key. `Retry-After` says how\nmany seconds to wait.\n","headers":{"Retry-After":{"description":"Seconds until the window resets.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Requests allowed per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in this window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix time in seconds when the window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","description":"Every failure uses this shape. Branch on `error.code`, which is stable;\n`error.message` is written for people and may be reworded.\n","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `bad_request`, `invalid_request`, `unauthorized`,\n`forbidden`, `not_found`, `rate_limited`, `internal`, or a\ndomain code such as `whatsapp_not_configured`, `meta_error`,\n`template_malformed`, `plan_limit_reached`,\n`subscription_lapsed`.\n","example":"bad_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"'phone' is required","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"Rate limit exceeded for this API key"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"Rate limit exceeded for this API key"}}}},"exampleType":"examples"}},"exampleType":"examples"},"dcd10895-194f-4631-a336-9142612a7b58":{"description":"WhatsApp rejected the send, or a template was missing a value it\nneeds. `code` is `meta_error` and `message` quotes the reason. A\nmissing value is caught before anything is sent.\n","content":{"application/json":{"schema":{"type":"object","description":"Every failure uses this shape. Branch on `error.code`, which is stable;\n`error.message` is written for people and may be reworded.\n","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"One of `bad_request`, `invalid_request`, `unauthorized`,\n`forbidden`, `not_found`, `rate_limited`, `internal`, or a\ndomain code such as `whatsapp_not_configured`, `meta_error`,\n`template_malformed`, `plan_limit_reached`,\n`subscription_lapsed`.\n","example":"bad_request","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"'phone' is required","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rejected":{"title":"rejected","value":{"error":{"code":"meta_error","message":"Meta API error: (#132000) Number of parameters does not match the expected number of params"}}},"missing_value":{"title":"missing_value","value":{"error":{"code":"meta_error","message":"Meta API error: Header text variable {{1}} requires a value — pass headerText."}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"c3ff3544-094c-4808-a459-57f829ae83c9":{"apiKey":{"type":"http","scheme":"bearer","description":"Your workspace API key, created in **Settings → Developer → API keys**, sent as\n`Authorization: Bearer \u003ckey>`. New keys start with `watx_live_`; keys\nissued before the rename start with `converse360_live_` and still work.\n","scopes":[],"schemeName":"apiKey"}}},"servers":{"aad385d4-3f88-431f-bb44-1cd2895693b4":{"url":"https://api.watx.in/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Your workspace API key, created in **Settings → Developer → API keys**, sent as\n`Authorization: Bearer \u003ckey>`. New keys start with `watx_live_`; keys\nissued before the rename start with `converse360_live_` and still work.\n","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Your workspace API key, created in **Settings → Developer → API keys**, sent as\n`Authorization: Bearer \u003ckey>`. New keys start with `watx_live_`; keys\nissued before the rename start with `converse360_live_` and still work.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"watx","siteName":"Watx","title":"Send a message - Watx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-18T10:39:27.795Z","originalFileLocation":"api-reference/messages/send-a-message.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=\"Sends a WhatsApp message to a phone number. You pass a number, not an internal id: the endpoint finds or creates the contact and the WhatsApp conversation, then sends. A free-form message (text or media) only reaches a customer inside the 24-hour customer service window. Outside it, send type: \u0026quot;template\u0026quot; with an approved template. Templates are looked up by name and language among the workspace\u0026#x27;s synced templates. Send body values as a plain array, or as an object when the template also needs a header, button values or carousel cards. Every value the template needs is checked before anything is sent: a missing or blank one is refused with 502 meta_error and a message naming it. On the Templates screen, the code button on a template shows the exact request for that template. One-time codes. For an approved template in the Authentication category, send the code as the only value: params: [\u0026quot;482913\u0026quot;], up to 15 characters. WhatsApp puts it in the message and on the template\u0026#x27;s copy-code or autofill button. Your system generates the code and checks it when the user types it back; Watx only delivers it. Sending happens on WhatsApp only. Requires the messages:send scope.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Watx\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/watx/o5UY8HKtkGMmwyEK/_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/watx/o5UY8HKtkGMmwyEK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/watx/o5UY8HKtkGMmwyEK/_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/watx/o5UY8HKtkGMmwyEK/_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/watx/o5UY8HKtkGMmwyEK/_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/watx/o5UY8HKtkGMmwyEK/_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/watx/o5UY8HKtkGMmwyEK/_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/watx/o5UY8HKtkGMmwyEK/_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/watx/o5UY8HKtkGMmwyEK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Send a message - Watx\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sends a WhatsApp message to a phone number. You pass a number, not an internal id: the endpoint finds or creates the contact and the WhatsApp conversation, then sends. A free-form message (text or media) only reaches a customer inside the 24-hour customer service window. Outside it, send type: \u0026quot;template\u0026quot; with an approved template. Templates are looked up by name and language among the workspace\u0026#x27;s synced templates. Send body values as a plain array, or as an object when the template also needs a header, button values or carousel cards. Every value the template needs is checked before anything is sent: a missing or blank one is refused with 502 meta_error and a message naming it. On the Templates screen, the code button on a template shows the exact request for that template. One-time codes. For an approved template in the Authentication category, send the code as the only value: params: [\u0026quot;482913\u0026quot;], up to 15 characters. WhatsApp puts it in the message and on the template\u0026#x27;s copy-code or autofill button. Your system generates the code and checks it when the user types it back; Watx only delivers it. Sending happens on WhatsApp only. Requires the messages:send scope.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Watx\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.watx.in/api-reference/messages/send-a-message\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://watx.mintlify.app/_mintlify/api/og/v2?division=Messages\u0026amp;title=Send+a+message\u0026amp;description=Sends+a+WhatsApp+message+to+a+phone+number.+You+pass+a+number%2C+not+an%0Ainternal+id%3A+the+endpoint+finds+or+creates+the+contact+and+the+WhatsApp%0Aconversation%2C+then\u0026amp;theme=4702c6122007e2df47c96f3b\u0026amp;signature=94eeb4fc5f368c6220a6b97f15bce05483960716fe5ed477ddfc624dd05cebc2\">\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=\"Send a message - Watx\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sends a WhatsApp message to a phone number. You pass a number, not an internal id: the endpoint finds or creates the contact and the WhatsApp conversation, then sends. A free-form message (text or media) only reaches a customer inside the 24-hour customer service window. Outside it, send type: \u0026quot;template\u0026quot; with an approved template. Templates are looked up by name and language among the workspace\u0026#x27;s synced templates. Send body values as a plain array, or as an object when the template also needs a header, button values or carousel cards. Every value the template needs is checked before anything is sent: a missing or blank one is refused with 502 meta_error and a message naming it. On the Templates screen, the code button on a template shows the exact request for that template. One-time codes. For an approved template in the Authentication category, send the code as the only value: params: [\u0026quot;482913\u0026quot;], up to 15 characters. WhatsApp puts it in the message and on the template\u0026#x27;s copy-code or autofill button. Your system generates the code and checks it when the user types it back; Watx only delivers it. Sending happens on WhatsApp only. Requires the messages:send scope.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://watx.mintlify.app/_mintlify/api/og/v2?division=Messages\u0026amp;title=Send+a+message\u0026amp;description=Sends+a+WhatsApp+message+to+a+phone+number.+You+pass+a+number%2C+not+an%0Ainternal+id%3A+the+endpoint+finds+or+creates+the+contact+and+the+WhatsApp%0Aconversation%2C+then\u0026amp;theme=4702c6122007e2df47c96f3b\u0026amp;signature=94eeb4fc5f368c6220a6b97f15bce05483960716fe5ed477ddfc624dd05cebc2\">\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/watx/o5UY8HKtkGMmwyEK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Watx\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.watx.in/api-reference/messages/send-a-message\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/messages/send-a-message.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.watx.in/#organization\",\"name\":\"Watx\",\"url\":\"https://docs.watx.in\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/watx/RbII_Y84cOqYh7_M/logo/light.svg?fit=max\u0026auto=format\u0026n=RbII_Y84cOqYh7_M\u0026q=85\u0026s=9f016a244568da620d7a646c56e7889f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.watx.in#website\",\"name\":\"Watx\",\"url\":\"https://docs.watx.in\",\"publisher\":{\"@id\":\"https://docs.watx.in/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.watx.in/api-reference/messages/send-a-message#webpage\",\"url\":\"https://docs.watx.in/api-reference/messages/send-a-message\",\"name\":\"Send a message\",\"description\":\"Sends a WhatsApp message to a phone number. You pass a number, not an internal id: the endpoint finds or creates the contact and the WhatsApp conversation, then sends. A free-form message (text or media) only reaches a customer inside the 24-hour customer service window. Outside it, send type: \\\"template\\\" with an approved template. Templates are looked up by name and language among the workspace's synced templates. Send body values as a plain array, or as an object when the template also needs a header, button values or carousel cards. Every value the template needs is checked before anything is sent: a missing or blank one is refused with 502 meta_error and a message naming it. On the Templates screen, the code button on a template shows the exact request for that template. One-time codes. For an approved template in the Authentication category, send the code as the only value: params: [\\\"482913\\\"], up to 15 characters. WhatsApp puts it in the message and on the template's copy-code or autofill button. Your system generates the code and checks it when the user types it back; Watx only delivers it. Sending happens on WhatsApp only. Requires the messages:send scope.\",\"dateModified\":\"2026-10-18T10:39:27.795Z\",\"isPartOf\":{\"@id\":\"https://docs.watx.in#website\"},\"breadcrumb\":{\"@id\":\"https://docs.watx.in/api-reference/messages/send-a-message#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.watx.in/api-reference/messages/send-a-message#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Watx\",\"item\":\"https://docs.watx.in\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Send a message\",\"item\":\"https://docs.watx.in/api-reference/messages/send-a-message\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.watx.in/api-reference/messages/send-a-message#apireference\",\"headline\":\"Send a message\",\"name\":\"Send a message\",\"description\":\"Sends a WhatsApp message to a phone number. You pass a number, not an internal id: the endpoint finds or creates the contact and the WhatsApp conversation, then sends. A free-form message (text or media) only reaches a customer inside the 24-hour customer service window. Outside it, send type: \\\"template\\\" with an approved template. Templates are looked up by name and language among the workspace's synced templates. Send body values as a plain array, or as an object when the template also needs a header, button values or carousel cards. Every value the template needs is checked before anything is sent: a missing or blank one is refused with 502 meta_error and a message naming it. On the Templates screen, the code button on a template shows the exact request for that template. One-time codes. For an approved template in the Authentication category, send the code as the only value: params: [\\\"482913\\\"], up to 15 characters. WhatsApp puts it in the message and on the template's copy-code or autofill button. Your system generates the code and checks it when the user types it back; Watx only delivers it. Sending happens on WhatsApp only. Requires the messages:send scope.\",\"url\":\"https://docs.watx.in/api-reference/messages/send-a-message\",\"mainEntityOfPage\":{\"@id\":\"https://docs.watx.in/api-reference/messages/send-a-message#webpage\"},\"dateModified\":\"2026-10-18T10:39:27.795Z\",\"publisher\":{\"@id\":\"https://docs.watx.in/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.watx.in#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Watx\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Watx","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"Channels","pages":[{"title":"Channels","href":"/whatsapp/overview"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API introduction","icon":"plug","href":"/api/introduction"},{"title":"Authentication","icon":"key","href":"/api/authentication"},{"title":"Requests and responses","icon":"code","href":"/api/requests-and-responses"},{"title":"Webhooks","icon":"bell","href":"/api/webhooks"},{"title":"Postman collection","icon":"paper-plane","href":"/api/postman"}]},{"group":"Account","pages":[{"title":"Who am I","description":"Returns the workspace the API key belongs to and the scopes it carries.\n\nRequires a valid key and **no scope at all**, so a key created with no\nscopes can still call this. Use it to check that a key works and to\ndiscover what it is allowed to do.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /me","href":"/api-reference/account/who-am-i"}]},{"group":"Messages","pages":[{"title":"Send a message","deprecated":null,"version":null,"openapi":"/openapi.yaml post /messages","href":"/api-reference/messages/send-a-message"}]},{"group":"Contacts","pages":[{"title":"List contacts","description":"Lists contacts, newest first, with cursor pagination.\n\nRequires the `contacts:read` scope.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /contacts","href":"/api-reference/contacts/list-contacts"},{"title":"Create a contact","deprecated":null,"version":null,"openapi":"/openapi.yaml post /contacts","href":"/api-reference/contacts/create-a-contact"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/openapi.yaml get /contacts/{id}","href":"/api-reference/contacts/get-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /contacts/{id}","href":"/api-reference/contacts/update-a-contact"}]},{"group":"Segments","pages":[{"title":"List segments","deprecated":null,"version":null,"openapi":"/openapi.yaml get /segments","href":"/api-reference/segments/list-segments"},{"title":"Create a segment","deprecated":null,"version":null,"openapi":"/openapi.yaml post /segments","href":"/api-reference/segments/create-a-segment"},{"title":"Get a segment","deprecated":null,"version":null,"openapi":"/openapi.yaml get /segments/{id}","href":"/api-reference/segments/get-a-segment"},{"title":"Update a segment","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /segments/{id}","href":"/api-reference/segments/update-a-segment"},{"title":"Delete a segment","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /segments/{id}","href":"/api-reference/segments/delete-a-segment"},{"title":"List a segment's contacts","deprecated":null,"version":null,"openapi":"/openapi.yaml get /segments/{id}/contacts","href":"/api-reference/segments/list-a-segments-contacts"},{"title":"Add contacts to a segment","deprecated":null,"version":null,"openapi":"/openapi.yaml post /segments/{id}/contacts","href":"/api-reference/segments/add-contacts-to-a-segment"},{"title":"Remove contacts from a segment","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /segments/{id}/contacts","href":"/api-reference/segments/remove-contacts-from-a-segment"}]},{"group":"Conversations","pages":[{"title":"List conversations","deprecated":null,"version":null,"openapi":"/openapi.yaml get /conversations","href":"/api-reference/conversations/list-conversations"},{"title":"Get a conversation","deprecated":null,"version":null,"openapi":"/openapi.yaml get /conversations/{id}","href":"/api-reference/conversations/get-a-conversation"},{"title":"List a conversation's messages","deprecated":null,"version":null,"openapi":"/openapi.yaml get /conversations/{id}/messages","href":"/api-reference/conversations/list-a-conversations-messages"}]},{"group":"Broadcasts","pages":[{"title":"Launch a broadcast","deprecated":null,"version":null,"openapi":"/openapi.yaml post /broadcasts","href":"/api-reference/broadcasts/launch-a-broadcast"},{"title":"Get a broadcast","deprecated":null,"version":null,"openapi":"/openapi.yaml get /broadcasts/{id}","href":"/api-reference/broadcasts/get-a-broadcast"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/openapi.yaml get /webhooks","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Register a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml post /webhooks","href":"/api-reference/webhooks/register-a-webhook-endpoint"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml get /webhooks/{id}","href":"/api-reference/webhooks/get-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /webhooks/{id}","href":"/api-reference/webhooks/update-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"}]}]}]},"title":"Send a message - Watx","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-26-lDe7V.js","utils-CWQmgYtH.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-4-Aw3rSD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C2zjXYA5.js","snippetPresets-DFmpFA7C.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-FJpQavWq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D_GvPF7k.js","shallow-Bs2ZB0NO.js","getApiPlaygroundDisplay-DCcqJJk-.js","CodeSnippet-DzDxawVe.js","CodeSnippets-aUr7fU-7.js","Page-CT9uE8Ip.js","getPastedJson-Y1fKsj_I.js","icon-DI4zTsDr.js","MethodPill-C0nDlmSQ.js","DuplicateIcon-NUXbx2nQ.js","createIcon-BdTHrPAi.js","DynamicMarkdown-CtpgKJwj.js","SectionHeading-B3x35tOt.js","axios-vUo_bRtp.js","Markdown-3OmurJMP.js","clsx-DMKzROTp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-1ms6tsT-.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Ke9xIMFx.js"]}