# Messlo — WhatsApp Business API (REST) > The easiest way to implement the WhatsApp Business API. Official REST endpoints to send messages, manage contacts, templates, and broadcast campaigns. Copy-paste cURL examples, authentication guide, and full API reference for developers. ## Canonical documentation - HTML (human + crawlers): https://messlo.com/developers - API base URL: https://api.messlo.com ## Summary Messlo provides a developer-friendly REST API on top of the official WhatsApp Business Platform (Cloud API). Integrate WhatsApp messaging into your product, CRM, or automation stack without building Meta infrastructure from scratch. Use this page as your complete WhatsApp API reference: authentication, endpoint list, request examples, and copy-ready cURL commands. Sign up free to generate an API key and test endpoints from the browser. ## Authentication - Header: `X-API-Key: ` - Alternative: `Authorization: ApiKey ` - Obtain a key: sign up at Messlo → Integration Tools → API Credentials ## Login with WhatsApp - Full integration guide: https://messlo.com/developers/login-with-whatsapp - API reference: https://messlo.com/developers#whatsapp-auth - Official packages: - `@getmesslo/messlo-node-sdk` — https://www.npmjs.com/package/@getmesslo/messlo-node-sdk (backend, Next/Express adapters) - `@getmesslo/messlo-whatsapp-login` — https://www.npmjs.com/package/@getmesslo/messlo-whatsapp-login (React/Next.js client) - Example app: https://github.com/GetMesslo/nextjs-whatsapp-login-demo - Create a Login app in Messlo → choose your WABA or Messlo shared number - Proxy start/status/SSE on your server (never expose API key to the browser) - POST `/v1/auth/whatsapp/start` → `{ sessionId, waLink, subscribeToken }` - User sends pre-filled LOGIN message on WhatsApp - GET `/v1/auth/whatsapp/events/:sessionId?token=` (SSE) or poll `/status` every 2s - POST `/v1/auth/verify-token` on your backend with `{ token }` ## WhatsApp OTP API for business (product page) - Overview: https://messlo.com/product/login_with_whatsapp - Summary: Messlo Login with WhatsApp is a WhatsApp authentication API for business apps: verify users by phone on the official WhatsApp Business API using a user-initiated LOGIN message instead of outbound Authentication OTP templates (lower cost than typical WhatsApp OTP API per verification). Includes REST API, Node SDK (@getmesslo/messlo-node-sdk), React/Next client (@getmesslo/messlo-whatsapp-login), webhooks, and SSE. - Integration guide: https://messlo.com/developers/login-with-whatsapp ### What is a WhatsApp OTP API for business? A WhatsApp OTP API for business sends one-time passwords through WhatsApp Authentication templates on the WhatsApp Business API—Meta bills per verification. Messlo also offers Login with WhatsApp: users send a LOGIN message (user-initiated) so you verify the phone without an outbound OTP template on every login. ### Is Login with WhatsApp cheaper than a WhatsApp OTP API? Often yes on Meta fees: outbound Authentication OTP templates incur per-verification charges (e.g. ~₹0.115 benchmark in India). Login with WhatsApp avoids that template; Messlo platform sessions are included in plans with 0% markup on Meta API rates. ### How do I integrate WhatsApp phone verification in my app? Create a Login app in Messlo, use POST /v1/auth/whatsapp/start with your API key, open waLink for the user, then verify the token on your server. Use @getmesslo/messlo-node-sdk and @getmesslo/messlo-whatsapp-login for Next.js. ## Cursor / IDE (MCP) - Package: `@getmesslo/messlo-mcp` — https://www.npmjs.com/package/@getmesslo/messlo-mcp - Add to Cursor MCP settings (stdio): `npx -y @getmesslo/messlo-mcp` with env `MESSLO_API_KEY` only (API host is fixed at api.messlo.com) - Setup guide: https://messlo.com/developers (Integration Tools → Cursor MCP) - Start with: messlo_get_started, messlo_plan_integration (goals: whatsapp_setup, inbound_automation, ecommerce_checkout, …), messlo_list_mcp_tools - Automations: messlo_compose_automation_flow, messlo_create_automation_flow, messlo://automation/guide - Checkout PDF: messlo_create_template (header_url) → messlo_send_template (mediaUrl) or messlo_create_ecommerce_webhook + map-template - Resources: messlo://checkout/guide, messlo://crm/field-guide, messlo://automation/examples/{preset} ## Quick start (cURL) ```bash curl -s -X GET "https://api.messlo.com/api/whatsapp/connections" \ -H "X-API-Key: YOUR_API_KEY" ``` ```bash curl -s -X POST "https://api.messlo.com/api/whatsapp/send" \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{"contact_no":"919876543210","whatsapp_phone_number":"911234567890","messageType":"text","message":"Hello from API"}' ``` ```bash curl -s -X POST "https://api.messlo.com/v1/auth/whatsapp/start" \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d "{}" ``` ## API sections ### WhatsApp Configuration Handle WhatsApp account connections and numbers. Call these endpoints first to obtain waba_id and phone numbers. - **GET** `/api/whatsapp/connections` — Fetch WABA Connections - **GET** `/api/whatsapp/phone-numbers` — Fetch All Phone Numbers - **GET** `/api/whatsapp/:wabaId/phone-numbers` — Fetch WABA-Specific Phone Numbers - **POST** `/api/whatsapp/:wabaId/webhooks/setup` — Setup WABA webhooks (Meta) - **POST** `/api/whatsapp/workspace/sync` — Sync workspace from Meta ### Login with WhatsApp Verify users via WhatsApp without OTP: create a Login app in Messlo, then integrate with @getmesslo/messlo-node-sdk and @getmesslo/messlo-whatsapp-login (recommended) or call the REST endpoints below. Example app: github.com/GetMesslo/nextjs-whatsapp-login-demo. Each Login app stores whether users message your WABA or Messlo's shared number; Messlo returns a verification JWT — validate it on your server and issue your own session. - **POST** `/v1/auth/whatsapp/start` — Start auth session - **GET** `/v1/auth/whatsapp/events/:sessionId?token={subscribeToken}` — Listen for verification (SSE) - **GET** `/v1/auth/whatsapp/status/:sessionId` — Get verification token (optional poll) - **POST** `/v1/auth/verify-token` — Verify token (server-side) ### Contact Management System Organize contacts and their associations. - **GET** `/api/contacts` — List Contacts - **POST** `/api/contacts` — Create Contact ### Interactive Messaging API Deliver engaging messages to your contacts - **POST** `/api/whatsapp/send` — Send Text Message - **POST** `/api/whatsapp/send` — Upload Image (URL) - **POST** `/api/whatsapp/send` — Upload Document (URL) - **POST** `/api/whatsapp/send` — Send Video via URL - **POST** `/api/whatsapp/send` — Share Location Info - **POST** `/api/whatsapp/send` — Send Multiple Media via URLs - **POST** `/api/whatsapp/send` — Send approved template - **POST** `/api/whatsapp/send` — Send Media from Local Device - **GET** `/api/whatsapp/chats` — List recent chats - **GET** `/api/whatsapp/messages` — List messages in thread - **POST** `/api/whatsapp/assign-chat` — Assign chat to agent - **POST** `/api/whatsapp/send` — Send Audio via URL ### Messaging Templates API Manage and send predefined WhatsApp message templates. - **POST** `/api/template/create` — Simple Template - **POST** `/api/template/create` — Template with Variables - **POST** `/api/template/create` — Template with Quick Reply Buttons - **POST** `/api/template/create` — Template with CTA Buttons - **POST** `/api/template/create` — Template with Coupon Code - **POST** `/api/template/create` — OTP / Authentication Template - **POST** `/api/template/create` — Limited Time Offer Template - **POST** `/api/template/create` — Template with Catalog Button - **POST** `/api/template/create` — Template with Call Permission - **POST** `/api/template/create` — Carousel Template - **POST** `/api/template/create` — Template with document header (URL) - **POST** `/api/template/validate-media-url` — Validate template media URL - **POST** `/api/template/sync-status` — Sync template approval status ### Broadcast API Launch and control bulk messaging campaigns. - **GET** `/api/campaigns` — Campaign List - **POST** `/api/campaigns` — Setup Campaign (All Contacts) - **POST** `/api/campaigns` — Setup Campaign (Specific Contacts) - **POST** `/api/campaigns` — Setup Scheduled Campaign (By Tags) - **POST** `/api/campaigns` — Setup Campaign with Media - **POST** `/api/campaigns` — Setup Campaign with Dynamic Coupon - **POST** `/api/campaigns` — Setup Campaign for Limited Time Offer - **POST** `/api/campaigns` — Setup Campaign with Product Carousel - **POST** `/api/campaigns` — Setup Campaign with Media Carousel - **POST** `/api/campaigns` — Setup Campaign with Media Carousel (Local Files) ### Automation flows WhatsApp bot flows as JSON (nodes, connections, triggers). Build in the dashboard or use @getmesslo/messlo-mcp (messlo_compose_automation_flow, industry packs). - **GET** `/api/automation` — List automation flows - **GET** `/api/automation/node-types` — Node types catalog - **POST** `/api/automation` — Create automation flow - **PATCH** `/api/automation/:flowId/toggle` — Toggle flow active - **POST** `/api/automation/:flowId/test` — Test flow - **GET** `/api/automation/:flowId/executions` — List executions ### CRM: segments, tags & custom fields Organize contacts for automations (add_to_segment, add_tag, update_contact nodes) and broadcast campaigns. - **GET** `/api/segments` — List segments - **POST** `/api/segments` — Create segment - **GET** `/api/tags` — List tags - **POST** `/api/tags` — Create tag - **GET** `/api/custom-fields` — List custom fields - **PUT** `/api/contacts/:id` — Update contact ### AI chatbots & keyword bots AI assistants (assign_chatbot nodes) and keyword auto-replies (message bots). Quick replies are agent inbox shortcuts. - **GET** `/api/chatbots` — List chatbots - **POST** `/api/chatbots` — Create chatbot - **POST** `/api/chatbots/:id/train` — Train chatbot (Q&A) - **GET** `/api/message-bots` — List message bots - **POST** `/api/message-bots` — Create message bot - **GET** `/api/quick-replies` — List quick replies ### WhatsApp Flow forms Meta Flow lead forms. In automations, form_flow nodes use flow.flow_id from GET form (not the MongoDB form _id). - **GET** `/api/forms` — List forms - **POST** `/api/forms` — Create form - **PATCH** `/api/forms/:id/publish` — Publish form ### Industry packs One-shot vertical onboarding: CRM fields, tags, segments, automation flows, and chatbot presets per industry. - **GET** `/api/industry-packs/public` — List public packs - **GET** `/api/industry-packs/public/:slug/preview` — Preview pack - **POST** `/api/industry-packs/apply` — Apply pack ### Ops & integrations Agents, drip sequences, Google Sheets/Calendar, plan usage, kanban pipelines, and bulk imports. - **GET** `/api/subscriptions/usage` — Subscription usage - **GET** `/api/agent/all` — List agents - **POST** `/api/whatsapp/assign-chat` — Assign chat to agent - **GET** `/api/google/connect` — Google OAuth connect - **GET** `/api/sequences` — List sequences - **GET** `/api/kanban-funnels` — List kanban funnels ### Commerce & checkout Meta catalogs, order webhooks (Shopify/WooCommerce), and template sends with dynamic header media (e.g. per-order PDF via mediaUrl). - **POST** `/api/ecommerce-catalog/waba/:waba_id/sync-catalogs` — Sync WABA catalogs - **GET** `/api/ecommerce-catalog/catalog/:catalog_id/products` — List catalog products - **POST** `/api/ecommerce-webhook/create` — Create order webhook - **POST** `/api/ecommerce-webhook/:id/map-template` — Map template to webhook - **POST** `/api/whatsapp/send` — Send template with dynamic PDF header ## Full endpoint index - GET /api/whatsapp/connections (WhatsApp Configuration) — Fetch WABA Connections: Handle WhatsApp account connections and numbers. Call these endpoints first to obtain waba_id and phone numbers. - GET /api/whatsapp/phone-numbers (WhatsApp Configuration) — Fetch All Phone Numbers: Handle WhatsApp account connections and numbers. Call these endpoints first to obtain waba_id and phone numbers. - GET /api/whatsapp/:wabaId/phone-numbers (WhatsApp Configuration) — Fetch WABA-Specific Phone Numbers: Replace :wabaId with your WABA document ID or Meta business account ID. - POST /api/whatsapp/:wabaId/webhooks/setup (WhatsApp Configuration) — Setup WABA webhooks (Meta): Subscribe Meta webhooks for inbound messages and delivery events. Business API (Cloud API) only — run after connecting WABA. - POST /api/whatsapp/workspace/sync (WhatsApp Configuration) — Sync workspace from Meta: Handle WhatsApp account connections and numbers. Call these endpoints first to obtain waba_id and phone numbers. - POST /v1/auth/whatsapp/start (Login with WhatsApp) — Start auth session: Creates a pending session and returns a wa.me deep link. The user must send the pre-filled LOGIN message from their WhatsApp app. Optional phone_number_id selects which connected number receives the login message (defaults to primary active Cloud API phone). Set use_messlo_phone to true to use Messlo's shared number instead — mutually exclusive with phone_number_id. - GET /v1/auth/whatsapp/events/:sessionId?token={subscribeToken} (Login with WhatsApp) — Listen for verification (SSE): Open a Server-Sent Events stream using subscribeToken from /start. Messlo pushes verified when Meta webhook receives the user's LOGIN message — preferred over polling at scale. - GET /v1/auth/whatsapp/status/:sessionId (Login with WhatsApp) — Get verification token (optional poll): One-shot or fallback poll after SSE verified (or if you cannot use SSE). Returns verificationToken when the session is success. - POST /v1/auth/verify-token (Login with WhatsApp) — Verify token (server-side): Your backend validates the Messlo-signed JWT and receives the verified phone and profile name. Token is single-use. Issue your own app JWT/session after this call. - GET /api/contacts (Contact Management System) — List Contacts: Organize contacts and their associations. - POST /api/contacts (Contact Management System) — Create Contact: Organize contacts and their associations. - POST /api/whatsapp/send (Interactive Messaging API) — Send Text Message: Note: `contact_no` is the receiver's phone number, and `whatsapp_phone_number` is the sender's registered phone number. Ensure that a WABA is connected with this sender number for the request to work. - POST /api/whatsapp/send (Interactive Messaging API) — Upload Image (URL): Deliver engaging messages to your contacts - POST /api/whatsapp/send (Interactive Messaging API) — Upload Document (URL): Deliver engaging messages to your contacts - POST /api/whatsapp/send (Interactive Messaging API) — Send Video via URL: Deliver engaging messages to your contacts - POST /api/whatsapp/send (Interactive Messaging API) — Share Location Info: Deliver engaging messages to your contacts - POST /api/whatsapp/send (Interactive Messaging API) — Send Multiple Media via URLs: Sends multiple media files in sequence using public URLs. - POST /api/whatsapp/send (Interactive Messaging API) — Send approved template: Send a Meta-approved template. Use mediaUrl for a dynamic document/image header per message (e.g. invoice PDF URL at checkout). - POST /api/whatsapp/send (Interactive Messaging API) — Send Media from Local Device: Deliver engaging messages to your contacts - GET /api/whatsapp/chats (Interactive Messaging API) — List recent chats: Inbox threads for debugging automations. - GET /api/whatsapp/messages (Interactive Messaging API) — List messages in thread: Query: contact_id (from chats or contacts). - POST /api/whatsapp/assign-chat (Interactive Messaging API) — Assign chat to agent: Deliver engaging messages to your contacts - POST /api/whatsapp/send (Interactive Messaging API) — Send Audio via URL: Deliver engaging messages to your contacts - POST /api/template/create (Messaging Templates API) — Simple Template: Start here — basic MARKETING template with body and optional footer. - POST /api/template/create (Messaging Templates API) — Template with Variables: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — Template with Quick Reply Buttons: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — Template with CTA Buttons: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — Template with Coupon Code: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — OTP / Authentication Template: category must be AUTHENTICATION — enables OTP-specific fields and buttons. - POST /api/template/create (Messaging Templates API) — Limited Time Offer Template: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — Template with Catalog Button: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — Template with Call Permission: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — Carousel Template: Manage and send predefined WhatsApp message templates. - POST /api/template/create (Messaging Templates API) — Template with document header (URL): Use a public HTTPS URL for the sample PDF/image/video header. Meta requires the URL to be reachable at create time. - POST /api/template/validate-media-url (Messaging Templates API) — Validate template media URL: Manage and send predefined WhatsApp message templates. - POST /api/template/sync-status (Messaging Templates API) — Sync template approval status: Manage and send predefined WhatsApp message templates. - GET /api/campaigns (Broadcast API) — Campaign List: List existing campaigns and statuses before creating a new send. - POST /api/campaigns (Broadcast API) — Setup Campaign (All Contacts): Simplest broadcast — sends an approved template to every contact. - POST /api/campaigns (Broadcast API) — Setup Campaign (Specific Contacts): Launch and control bulk messaging campaigns. - POST /api/campaigns (Broadcast API) — Setup Scheduled Campaign (By Tags): Launch and control bulk messaging campaigns. - POST /api/campaigns (Broadcast API) — Setup Campaign with Media: Launch and control bulk messaging campaigns. - POST /api/campaigns (Broadcast API) — Setup Campaign with Dynamic Coupon: Launch and control bulk messaging campaigns. - POST /api/campaigns (Broadcast API) — Setup Campaign for Limited Time Offer: Launch and control bulk messaging campaigns. - POST /api/campaigns (Broadcast API) — Setup Campaign with Product Carousel: Launch and control bulk messaging campaigns. - POST /api/campaigns (Broadcast API) — Setup Campaign with Media Carousel: Launch and control bulk messaging campaigns. - POST /api/campaigns (Broadcast API) — Setup Campaign with Media Carousel (Local Files): Launch and control bulk messaging campaigns. - GET /api/automation (Automation flows) — List automation flows: WhatsApp bot flows as JSON (nodes, connections, triggers). Build in the dashboard or use @getmesslo/messlo-mcp (messlo_compose_automation_flow, industry packs). - GET /api/automation/node-types (Automation flows) — Node types catalog: All valid node types and parameters for flow JSON. - POST /api/automation (Automation flows) — Create automation flow: WhatsApp bot flows as JSON (nodes, connections, triggers). Build in the dashboard or use @getmesslo/messlo-mcp (messlo_compose_automation_flow, industry packs). - PATCH /api/automation/:flowId/toggle (Automation flows) — Toggle flow active: WhatsApp bot flows as JSON (nodes, connections, triggers). Build in the dashboard or use @getmesslo/messlo-mcp (messlo_compose_automation_flow, industry packs). - POST /api/automation/:flowId/test (Automation flows) — Test flow: WhatsApp bot flows as JSON (nodes, connections, triggers). Build in the dashboard or use @getmesslo/messlo-mcp (messlo_compose_automation_flow, industry packs). - GET /api/automation/:flowId/executions (Automation flows) — List executions: WhatsApp bot flows as JSON (nodes, connections, triggers). Build in the dashboard or use @getmesslo/messlo-mcp (messlo_compose_automation_flow, industry packs). - GET /api/segments (CRM: segments, tags & custom fields) — List segments: Organize contacts for automations (add_to_segment, add_tag, update_contact nodes) and broadcast campaigns. - POST /api/segments (CRM: segments, tags & custom fields) — Create segment: Organize contacts for automations (add_to_segment, add_tag, update_contact nodes) and broadcast campaigns. - GET /api/tags (CRM: segments, tags & custom fields) — List tags: Organize contacts for automations (add_to_segment, add_tag, update_contact nodes) and broadcast campaigns. - POST /api/tags (CRM: segments, tags & custom fields) — Create tag: Organize contacts for automations (add_to_segment, add_tag, update_contact nodes) and broadcast campaigns. - GET /api/custom-fields (CRM: segments, tags & custom fields) — List custom fields: Organize contacts for automations (add_to_segment, add_tag, update_contact nodes) and broadcast campaigns. - PUT /api/contacts/:id (CRM: segments, tags & custom fields) — Update contact: Organize contacts for automations (add_to_segment, add_tag, update_contact nodes) and broadcast campaigns. - GET /api/chatbots (AI chatbots & keyword bots) — List chatbots: Query: waba_id (required). - POST /api/chatbots (AI chatbots & keyword bots) — Create chatbot: AI assistants (assign_chatbot nodes) and keyword auto-replies (message bots). Quick replies are agent inbox shortcuts. - POST /api/chatbots/:id/train (AI chatbots & keyword bots) — Train chatbot (Q&A): AI assistants (assign_chatbot nodes) and keyword auto-replies (message bots). Quick replies are agent inbox shortcuts. - GET /api/message-bots (AI chatbots & keyword bots) — List message bots: Query: waba_id (required). - POST /api/message-bots (AI chatbots & keyword bots) — Create message bot: AI assistants (assign_chatbot nodes) and keyword auto-replies (message bots). Quick replies are agent inbox shortcuts. - GET /api/quick-replies (AI chatbots & keyword bots) — List quick replies: AI assistants (assign_chatbot nodes) and keyword auto-replies (message bots). Quick replies are agent inbox shortcuts. - GET /api/forms (WhatsApp Flow forms) — List forms: Query: waba_id (required). - POST /api/forms (WhatsApp Flow forms) — Create form: Meta Flow lead forms. In automations, form_flow nodes use flow.flow_id from GET form (not the MongoDB form _id). - PATCH /api/forms/:id/publish (WhatsApp Flow forms) — Publish form: Meta Flow lead forms. In automations, form_flow nodes use flow.flow_id from GET form (not the MongoDB form _id). - GET /api/industry-packs/public (Industry packs) — List public packs: One-shot vertical onboarding: CRM fields, tags, segments, automation flows, and chatbot presets per industry. - GET /api/industry-packs/public/:slug/preview (Industry packs) — Preview pack: Optional query: company_name, city, etc. - POST /api/industry-packs/apply (Industry packs) — Apply pack: One-shot vertical onboarding: CRM fields, tags, segments, automation flows, and chatbot presets per industry. - GET /api/subscriptions/usage (Ops & integrations) — Subscription usage: Agents, drip sequences, Google Sheets/Calendar, plan usage, kanban pipelines, and bulk imports. - GET /api/agent/all (Ops & integrations) — List agents: Agents, drip sequences, Google Sheets/Calendar, plan usage, kanban pipelines, and bulk imports. - POST /api/whatsapp/assign-chat (Ops & integrations) — Assign chat to agent: Agents, drip sequences, Google Sheets/Calendar, plan usage, kanban pipelines, and bulk imports. - GET /api/google/connect (Ops & integrations) — Google OAuth connect: Returns URL to connect Google account. - GET /api/sequences (Ops & integrations) — List sequences: Query: waba_id (required). - GET /api/kanban-funnels (Ops & integrations) — List kanban funnels: Agents, drip sequences, Google Sheets/Calendar, plan usage, kanban pipelines, and bulk imports. - POST /api/ecommerce-catalog/waba/:waba_id/sync-catalogs (Commerce & checkout) — Sync WABA catalogs: Meta catalogs, order webhooks (Shopify/WooCommerce), and template sends with dynamic header media (e.g. per-order PDF via mediaUrl). - GET /api/ecommerce-catalog/catalog/:catalog_id/products (Commerce & checkout) — List catalog products: Meta catalogs, order webhooks (Shopify/WooCommerce), and template sends with dynamic header media (e.g. per-order PDF via mediaUrl). - POST /api/ecommerce-webhook/create (Commerce & checkout) — Create order webhook: Meta catalogs, order webhooks (Shopify/WooCommerce), and template sends with dynamic header media (e.g. per-order PDF via mediaUrl). - POST /api/ecommerce-webhook/:id/map-template (Commerce & checkout) — Map template to webhook: Meta catalogs, order webhooks (Shopify/WooCommerce), and template sends with dynamic header media (e.g. per-order PDF via mediaUrl). - POST /api/whatsapp/send (Commerce & checkout) — Send template with dynamic PDF header: Meta catalogs, order webhooks (Shopify/WooCommerce), and template sends with dynamic header media (e.g. per-order PDF via mediaUrl). ## FAQ (API & developers) ### What is the easiest way to implement the WhatsApp Business API? Use Messlo’s REST API: connect your WABA once in the dashboard, generate an API key, and call documented endpoints with standard HTTP tools (cURL, Postman, or any SDK). You avoid direct Meta app review complexity for common messaging, contacts, templates, and campaigns. ### How do I send a WhatsApp message via API? Authenticate with X-API-Key, obtain your phone_number_id from GET /api/whatsapp/phone-numbers, then POST to /api/whatsapp/send (session messages) or use template endpoints for marketing and notifications. ### Is this the official WhatsApp Business API? Yes. Messlo integrates with the WhatsApp Business Platform (Cloud API). Your messages are sent through your connected WABA and comply with Meta’s messaging policies and template rules. ### How does API authentication work? Include your API key in the X-API-Key header or as Authorization: ApiKey . JWT Bearer tokens are used for dashboard sessions; server-to-server integrations should use API keys. ### Can I send bulk WhatsApp messages or campaigns via API? Yes. Use the Broadcast API to create campaigns, attach an approved template, and send to contact lists or segments. List campaigns with GET /api/campaigns before creating new sends. ### How does Login with WhatsApp work? Create a Login app in the Messlo dashboard (choose your WhatsApp Business number or Messlo's shared number). Use @getmesslo/messlo-node-sdk and @getmesslo/messlo-whatsapp-login for production integrations, or call POST /v1/auth/whatsapp/start with your app API key to get a waLink. The user sends the pre-filled LOGIN message on WhatsApp. Listen via SSE on GET /v1/auth/whatsapp/events/:sessionId or poll GET /status until you receive verificationToken, then POST /v1/auth/verify-token on your backend. Full guide: /developers/login-with-whatsapp. Example repo: github.com/GetMesslo/nextjs-whatsapp-login-demo. ### Are there official SDKs for Login with WhatsApp? Yes. @getmesslo/messlo-node-sdk provides backend helpers and Next.js/Express route adapters. @getmesslo/messlo-whatsapp-login provides a React hook and UI components for your frontend (via your proxy routes). See npmjs.com/package/@getmesslo/messlo-node-sdk and npmjs.com/package/@getmesslo/messlo-whatsapp-login. ### Where can LLMs and tools find a summary of this API? A machine-readable summary is available at /llms.txt on this site, alongside this HTML documentation page. Install @getmesslo/messlo-mcp in Cursor for natural-language setup (messlo_plan_integration goals: inbound_automation, ecommerce_checkout, industry_pack_onboarding, and more). ### How do I build WhatsApp automation flows via API? POST /api/automation with nodes, connections, and triggers (typically message_received). GET /api/automation/node-types for the full node catalog. Use PATCH /api/automation/:flowId/toggle to activate. Cursor users can use messlo_compose_automation_flow or apply an industry pack via POST /api/industry-packs/apply. ### How do I send order confirmations with a dynamic PDF header? Create a template with a public header_url sample (document type) via POST /api/template/create, wait for Meta approval, then POST /api/whatsapp/send with messageType template and mediaUrl set to the per-order PDF URL. Alternatively, use POST /api/ecommerce-webhook/create and map-template for Shopify or WooCommerce order webhooks. --- # Messlo — Startup program (WhatsApp for early-stage companies) > Messlo is a Meta Tech Provider offering a startup program: qualifying early-stage companies receive the Vyapar plan free for one year (12 months) on the official WhatsApp Business API. This is free platform software—not free Meta WhatsApp conversation credits. Messlo charges 0% markup on Meta conversation fees; customers pay Meta directly at official rates. ## Canonical page - Program & application: https://messlo.com/for-startups - Apply form anchor: https://messlo.com/for-startups#apply ## Program facts - Program page: canonical URL path /for-startups (apply at /for-startups#apply). - Grant: Vyapar plan subscription at zero platform cost for 12 months after approval. - Includes: shared team inbox, broadcast campaigns, automation builder, AI agent, templates, forms, catalogs, webhooks, REST API, pipeline, segments, integrations. - WhatsApp messaging: billed per conversation by Meta (marketing, utility, authentication, service)—not included in the free platform grant. - Eligibility: early-stage product companies, company work email on matching domain, verified WhatsApp number, official WABA onboarding—not agencies/resellers. - Differentiator vs many BSPs (AiSensy, WATI, Interakt, etc.): 0% markup on Meta API rates plus full product suite. ## FAQ (startup program) ### Is Messlo free for startups? Yes for the platform: qualifying startups get the Vyapar plan at zero subscription cost for one year. WhatsApp conversation fees are paid to Meta at official rates; Messlo adds 0% markup on those API rates. ### Is there free WhatsApp credit for startups? Meta does not provide unlimited free WhatsApp conversation credit via BSPs. Messlo offers one year of free Vyapar platform access, not free Meta messaging credits. ### Which websites provide free WhatsApp service to startups? Few offer sustained free tiers on the official WhatsApp Cloud API. Messlo's startup program gives Vyapar free for one year with Meta Tech Provider onboarding and 0% markup on WhatsApp conversation fees. ### What is included in the Messlo startup program? One year of the Vyapar plan: team inbox, broadcasts, automations, AI agent, templates, catalogs, API, webhooks, and related modules. Meta bills WhatsApp traffic separately. ### How do startups apply? Visit /for-startups, complete the application with company website, work email (domain must match website), and WhatsApp verification. Approved applicants receive a coupon for checkout. ## Keywords WhatsApp Business API, WhatsApp REST API, WhatsApp Cloud API, send WhatsApp message API, WhatsApp bulk messaging, WhatsApp template API, WABA API WhatsApp OTP API for business, WhatsApp OTP API, WhatsApp authentication API, WhatsApp login API, WhatsApp phone verification API, WhatsApp verify phone number API, WhatsApp Business API authentication, WhatsApp OTP verification API, send WhatsApp OTP API alternative, WhatsApp OTP alternative India, Login with WhatsApp API, WhatsApp sign in API, Messlo WhatsApp auth, official WhatsApp Cloud API login free WhatsApp for startups, WhatsApp credit for startup, free WhatsApp credit startup, WhatsApp Business API startup, free WhatsApp platform startup, Meta Tech Provider WhatsApp, Messlo Vyapar startup program, WhatsApp CRM startup, WhatsApp automation startup, WhatsApp BSP no markup