{"componentChunkName":"component---src-templates-docs-js","path":"/whatsapp/direct_send","result":{"data":{"site":{"siteMetadata":{"title":"broadcaster","docsLocation":"https://github.com","docsLocationType":"github","editable":false}},"mdx":{"fields":{"id":"382cfaa6-7fa5-542d-b9ba-81a013d03da0","title":"Direct Send","slug":"/whatsapp/direct_send"},"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Direct Send\",\n  \"order\": 10\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Warning = makeShortcode(\"Warning\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Direct Send API lets you send business-to-user WhatsApp messages (utility category) without manually creating and approving templates. Instead of referencing a template by name, you send the content directly (text or interactive) by adding the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"category\"), \" field to the request. Meta matches the content against your existing templates or automatically creates a new one, asynchronously.\"), mdx(Warning, {\n    mdxType: \"Warning\"\n  }, mdx(\"p\", null, \"Commercial portfolios with a messaging limit of 100,000 or unlimited usually meet the requirements to send Direct Send utility messages.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Integration summary\")), mdx(\"ul\", {\n    parentName: \"blockquote\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Endpoint:\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"POST https://{{url}}/whatsapp-bsp-api-endpoint-ws/services/v1/messaging\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Token:\"), \" messaging token, in the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Authorization: Bearer {{wa-msg-api-token}}\"), \" header (\", mdx(\"a\", {\n    href: \"/whatsapp/authentication_token\"\n  }, \"how to generate it\"), \")\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Common fields:\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"from\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"to\"), \" (phone number or BSUID) and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"type\"), \" (\", mdx(\"a\", {\n    href: \"/whatsapp/messaging/http#h-commonfields\"\n  }, \"details\"), \")\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Activation field:\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"category\"), \" with the value \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"\\\"utility\\\"\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Response:\"), \" the same for every message (\", mdx(\"a\", {\n    href: \"/whatsapp/messaging/http#h-response\"\n  }, \"see response\"), \")\"))), mdx(\"p\", null, \"Direct Send is sent with \", mdx(\"a\", {\n    href: \"/whatsapp/messaging/http\"\n  }, \"POST /v1/messaging\"), \", with the same authentication as the rest of messaging: to get the token see \", mdx(\"a\", {\n    href: \"/whatsapp/authentication_token\"\n  }, \"Generate authentication token\"), \". Direct Send must be enabled for your WhatsApp Business Account (WABA). If it isn't, the message fails and you receive an error notification in your webhook (see \", mdx(\"a\", {\n    href: \"/whatsapp/direct_send/messages#h-accountwithoutdirectsendenabled\"\n  }, \"Account without Direct Send enabled\"), \").\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Considerations:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"If the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"category\"), \" field is omitted, the message behaves as a normal send (see \", mdx(\"a\", {\n    href: \"/whatsapp/messaging/without_template\"\n  }, \"Non-template messages\"), \").\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The send can take longer than usual, because Meta performs the matching and, when needed, the template creation.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"If Meta creates a new template, it assigns an automatic name (for example, \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"auto_generated_1234567890\"), \"), and it can then be used normally. To set your own name, see \", mdx(\"a\", {\n    href: \"/whatsapp/direct_send/messages#h-templateattribution\"\n  }, \"Template attribution\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Sending \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"service\"), \" in \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"category\"), \" is considered outside Direct Send and follows the existing send behavior.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Meta monitors how messages are categorized; see \", mdx(\"a\", {\n    href: \"/whatsapp/direct_send/misuse\"\n  }, \"API misuse\"), \".\")), mdx(\"p\", null, \"Templates created by Direct Send can be queried in the template list (\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"GET /v1/template/{{waba_id}}\"), \", see \", mdx(\"a\", {\n    href: \"/whatsapp/administration/template_management\"\n  }, \"Template management\"), \") and can be used for normal sending as soon as they reach the APPROVED status.\"), mdx(\"p\", null, \"This section is organized as follows:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    href: \"/whatsapp/direct_send/messages\"\n  }, \"Messages\"), \": the messages you can send with Direct Send (text, template attribution, combined buttons and voice call), with their fields and examples.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    href: \"/whatsapp/direct_send/misuse\"\n  }, \"API misuse\"), \": how Meta monitors categorization and the restrictions applied for misuse.\")));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{},"timeToRead":1,"parent":{"__typename":"File","relativePath":"whatsapp/direct_send.md","fields":null},"frontmatter":{"metaTitle":null,"showMetadata":null,"editable":null,"showPreviousNext":null,"showToc":null}},"gitBranch":{"name":"20211019-2FACTOR_AUTH"},"gitCommit":{"hash":"9713e1925aeb8cad930f91b6bf05d0b5937b2bb5","date":"2026-11-13 06:39"}},"pageContext":{"id":"382cfaa6-7fa5-542d-b9ba-81a013d03da0"}},"staticQueryHashes":["12478684","12478684","2882937274","2882937274","353167761","353167761"]}