Skip to main content

For SaaS builders · indie hackers · vibe coders

Add WhatsApp, email and SMS to your SaaS
in 5 minutes, for free.

One API call sends from your own WhatsApp number, your own mailbox and your own Android phone. Free and unlimited while you build and grow; pay only if you want to, once you have traction. Works with Lovable, Bolt.new, v0, Cursor, Claude Code, Replit and Windsurf.

The short answer

Is there a free email, SMS and WhatsApp API for a SaaS?

Yes. Unlimited Messaging sends WhatsApp, email and SMS through one REST endpoint, POST /message, from accounts you already own: your WhatsApp number, your mailbox (Gmail or your own domain) and your Android phone's SIM. The Free plan has no message cap and needs no credit card; free messages end with a short "Sent with UnlimitedMessaging.app" line.

5 minutes, really

How do you get from zero to a first message in 5 minutes?

Three steps. No Meta verification, no DNS records to add, no carrier registration.

  1. Create a free account and an API key

    Sign in with Google, GitHub or your email, then create a key in the dashboard. About a minute, no credit card.

  2. Link your channels

    Scan a QR code from WhatsApp (Linked devices), connect a mailbox with an app password, or install the free Android app for SMS. A minute or two each.

  3. Paste the prompt in your AI tool

    Your coding agent installs the SDK, reads UM_API_KEY from the environment and sends a test message. Or write the ten lines below yourself.

Build it yourself?

Why not code email, SMS and WhatsApp yourself?

You can, and for a large product you might. For a SaaS that has to ship this week, here is what each channel asks for when you wire it by hand.

Coding each channel yourself compared with Unlimited Messaging
Coding it yourselfEmail service, Meta Cloud API, SMS providerUnlimited MessagingOne API key
EmailPick a sending service, set up SPF and DKIM (plus DMARC above 5,000 emails a day to Gmail), warm up the domain, handle bounces.Sends through your own mailbox over SMTP (Gmail, Google Workspace or your domain). On your own domain, SPF, DKIM and DMARC are still yours to set up, as for any mail you send; Gmail and Workspace handle them for their addresses. Hard bounces are detected for you.
WhatsAppMeta Business verification, the Cloud API, a pre-approved template for any message outside the 24-hour window, a fee per template message.Link your number by QR code in about 30 seconds. Free text, no template to approve, no per-message fee.
SMSRent numbers, pay per segment and, in the US, register a brand and a campaign (A2P 10DLC) before sending.Sends from the SIM of your Android phone with the free app, on your own carrier plan.
Queue and statusesBuild a queue, retry on failure, store a status per message and per channel.Queued on our side; each message has its own status: pending, sent, delivered, read or failed.
Incoming messagesOne webhook format per provider, signature checks, parsing.One webhook format for all three channels (Medium and Max), or replies in the web app and through GET /message.
Time to first messageDays to weeks, depending on Meta and carrier reviews.About 5 minutes.

When coding it yourself is the better call

If you need the official WhatsApp Business API (verified business, templates at scale), high-volume marketing email from a dedicated domain, or thousands of SMS an hour, a provider such as Twilio, Meta's Cloud API or a dedicated email service is the right tool. Unlimited Messaging is built for transactional and conversational messages from accounts you own.

What you get

What do you get for your SaaS?

The same building blocks on every plan, Free included, except webhooks, media and voice messages.

  1. One REST call, three channels

    POST /message with to: { phone, email } and up to three channels. One message per channel, each with its own status, grouped by a shared dispatchId.

  2. TypeScript and Python SDKs

    npm i @unlimited-messaging/sdk or pip install unlimited-messaging. Typed clients generated from the OpenAPI spec, for Node.js, Next.js and any Python backend.

  3. An MCP server for your coding agent

    Add https://mcp.unlimitedmessaging.app to Claude Code, Cursor or ChatGPT. Signed in through OAuth, the agent links your WhatsApp by QR code, connects a mailbox, lists messages and sends test messages from the chat.

  4. An n8n node

    Prefer no code for a flow? The n8n community node sends on every channel from any workflow.

  5. Webhooks on paid plans

    Delivery, read and reply events posted to your endpoint on Medium and Max, so your app reacts to answers. On Free, replies show in the web app and through the API.

  6. Your own identity

    Users see your WhatsApp number and your email address, and their replies come back to you. No shared sender, no number to rent.

The code

What does the code look like?

A welcome message on signup, by WhatsApp, email and SMS in one call. TypeScript with the SDK, or plain curl from any language.

npm i @unlimited-messaging/sdkTypeScript
import { UnlimitedMessagingApiClient } from '@unlimited-messaging/sdk'

const um = new UnlimitedMessagingApiClient({ token: process.env.UM_API_KEY! })

export async function onSignup(user: { phone: string; email: string; name: string }) {
  await um.messages.messageSend({
    to: { phone: user.phone, email: user.email },
    subject: 'Welcome aboard',
    text: `Hi ${user.name}, your account is ready.`,
    channels: [{ channel: 'WHATSAPP' }, { channel: 'EMAIL' }, { channel: 'SMS' }],
  })
}
POST /messagecurl
curl https://api.unlimitedmessaging.app/message \
  -H "Authorization: Bearer $UM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "to": { "phone": "+33612345678", "email": "[email protected]" },
        "subject": "Welcome aboard",
        "text": "Hi Lea, your account is ready.",
        "channels": [{ "channel": "WHATSAPP" }, { "channel": "EMAIL" }, { "channel": "SMS" }]
      }'

Without accountId, your only active account on each channel is used. Keep UM_API_KEY on the server, never in front-end code.

Copy, paste, ship

Prompts for Lovable, Bolt.new, Cursor and Claude Code

Paste one in your tool. The same prompts work in v0, Replit and Windsurf: they only ask for a server-side call and an environment variable.

  • Lovable

    Lovable apps call APIs from a server-side function. Store the key in the project's secrets first.

    Prompt to copy
    Add Unlimited Messaging to this app so it can send WhatsApp, email and SMS.
    
    1. Store my API key as a secret named UM_API_KEY (I create it at https://app.unlimitedmessaging.app). Never put it in front-end code.
    2. Create a server-side function (a Supabase Edge Function if this project uses Supabase) that calls POST https://api.unlimitedmessaging.app/message with the header `Authorization: Bearer <UM_API_KEY>` and this JSON body: { "to": { "phone": "+33612345678", "email": "[email protected]" }, "subject": "Welcome", "text": "...", "channels": [{ "channel": "WHATSAPP" }, { "channel": "EMAIL" }] }.
    3. Call that function right after a user signs up, to send a welcome message by WhatsApp and email.
    4. Docs: https://docs.unlimitedmessaging.app
    
    Ask me for a test phone number and email address before sending anything.
  • Bolt.new

    Bolt projects run on Node.js: the SDK installs like any npm package. Put the key in .env.

    Prompt to copy
    Add Unlimited Messaging to this project to send transactional messages by WhatsApp, email and SMS.
    
    1. Run `npm i @unlimited-messaging/sdk`.
    2. Read the API key from the UM_API_KEY environment variable: add it to .env and .env.example, never hardcode it and never use it in browser code.
    3. Create a server route that does: `new UnlimitedMessagingApiClient({ token: process.env.UM_API_KEY })` then `client.messages.messageSend({ to: { phone, email }, subject, text, channels: [{ channel: 'WHATSAPP' }, { channel: 'EMAIL' }, { channel: 'SMS' }] })`.
    4. Use it to send an order confirmation when an order is created.
    5. Check the exact method names in https://docs.unlimitedmessaging.app
    
    Ask me for a test recipient before running it.
  • Cursor

    Open your project and paste it in the agent. Add the MCP server too (config on the MCP page) to send test messages from the chat.

    Prompt to copy
    Add Unlimited Messaging to this codebase so it can send WhatsApp, email and SMS.
    
    1. Detect the language. TypeScript or JavaScript: `npm i @unlimited-messaging/sdk`. Python: `pip install unlimited-messaging`.
    2. Read the key from the UM_API_KEY environment variable and add it to .env.example. I create the key at https://app.unlimitedmessaging.app.
    3. Write a `notify(user, text)` helper. TypeScript: `new UnlimitedMessagingApiClient({ token })` then `client.messages.messageSend({ to: { phone, email }, text, channels: [...] })`. Python: `UnlimitedMessagingApi(token=...)` then `client.messages.message_send(to=..., text=..., channels=[...])`.
    4. Call it when a payment fails, by email and SMS.
    5. Follow https://docs.unlimitedmessaging.app for the exact names, and add a small test.
    
    Ask me for a test recipient before sending.
  • Claude Code

    Add the MCP server with one command, then paste the prompt: Claude checks your linked accounts and wires the SDK.

    Add the MCP server first
    claude mcp add --transport http unlimited-messaging https://mcp.unlimitedmessaging.app
    Prompt to copy
    Use the unlimited-messaging MCP server to list my linked accounts and tell me which channels are ready.
    
    Then add Unlimited Messaging to this codebase:
    1. Install the SDK (`npm i @unlimited-messaging/sdk`, or `pip install unlimited-messaging` for Python).
    2. Read UM_API_KEY from the environment and add it to .env.example; never hardcode it.
    3. Write a helper that sends one message on several channels with `messages.messageSend({ to: { phone, email }, subject, text, channels })` (POST https://api.unlimitedmessaging.app/message).
    4. Send a welcome message by WhatsApp and email when a user signs up.
    5. Follow https://docs.unlimitedmessaging.app for the exact names.
    
    When the code is in, send me a test message with the MCP send-message tool, after I confirm the recipient.

Pricing for builders

How much does it cost once your SaaS grows?

Nothing until you decide otherwise. You are never billed per message: plans differ on features and sending speed, not on volume.

  • Free

    €0/month

    Forever, no credit card. Unlimited WhatsApp, email and SMS, the API, the SDKs, the MCP server and n8n. Messages carry a short footer.

  • Medium

    €19/month

    No footer, webhooks for delivery, read and reply events, media and voice messages.

  • Max

    €29/month

    Everything in Medium, plus WhatsApp product sheets, phone and email support and help setting up your system.

Upgrade when your users ask for it, or never. Your integration stays the same code. Compare the plans

Honest limits

What are the limits?

Read these before you build on it. They come from using accounts you own.

  1. WhatsApp is unofficial

    Your number is linked as a device, like WhatsApp Web, not through Meta's Business API. Spam or cold bulk sending can get the number banned: message people who expect to hear from you.

  2. SMS goes at your phone's pace

    Android asks for confirmation beyond 30 SMS in 30 minutes, so the API spaces SMS out to stay under it. Right for codes and alerts, not for mass campaigns. SMS count against your carrier plan and are text only.

  3. Email follows your mailbox's limits

    A personal Gmail account sends up to 500 emails a day; Google Workspace allows more. Outlook and Microsoft 365 mailboxes are not supported yet.

  4. The Free plan adds a footer

    Free messages end with "Sent with UnlimitedMessaging.app". Media, voice messages and webhooks need Medium or Max.

FAQ

Questions builders ask

Ship messaging today, pay when it pays

Create a free account, link a channel and send your first message from your app in about 5 minutes.