Skip to content

The WhatsApp platform for teams & developers

WhatsApp,under control.

Answer customers together from a shared inbox, build AI chatbots that answer from your own knowledge, run broadcasts, and connect every number to your systems through one API.

Start free, no card needed. No complicated BSP onboarding.Shared inbox • Automations • Broadcasts • REST API
Message pipeline
Sample
API Request
POST/v1/messages/send
Send requestready
Event Pipeline
API RequestPOST /v1/messages/send
Queuepaced per number
WhatsApp Sessionlinked device
Recipient628123456789

awaiting request

Delivery Timeline
  • ACCEPTED—
  • QUEUED—
  • SENT—
  • DELIVERED—
  • READ—
At a glanceplan limits & API facts
4
Plans, starting with Free
500
Free messages / month
6–60
Messages / min per number, by plan
1,000
Recipients per broadcast
5
Signed webhook events
Core capabilities

Everything between your business and WhatsApp.

Send, receive, reply, automate, and observe WhatsApp conversations from one platform, in the console or through the API.

01

Text and media through one API.

Messaging
POST /v1/messages/send
{
  "sessionId": "ses_sales",
  "recipient": "628123456789",
  "type": "text",
  "body": "Hi {{name|there}}, your order is ready"
}
202 Acceptedstatus: queuedmsg_8f31de9Sample
02

Broadcast without losing control.

Broadcast

September Promo

840 recipients · from customers.csv

Running
campaign progress72.9%
612
SENT
590
DELIVERED
431
READ
6
FAILED
228
QUEUED
Pace per number
15 msg/min
QueueSample
  • 6281•••9912QUEUED
  • 6281•••2201SENDING
  • 6285•••0911DELIVERED
  • 6287•••1902QUEUED
  • 6281•••4477SENDING
  • 6282•••8813DELIVERED
03

One API. Multiple numbers.

Sessions
NumbersSample
  • CUSTOMER SUPPORT

    +62 812 3821 9912

    CONNECTEDlinked device
  • SALES

    +62 811 9081 2201

    CONNECTEDlinked device
  • BROADCAST

    +62 852 1442 0911

    RECONNECTINGcomes back by itself
  • BACKUP

    +62 877 8211 1902

    DISCONNECTEDscan QR to relink

1 number on Free & Starter · 5 on Scale · unlimited on Business

04

Your system knows immediately.

Webhooks
POST example.com/webhooks/beecastsSample
eventhttp
  • 21:41:47message.received200
  • 21:41:49message.sent200
  • 21:41:51message.delivered503
  • 21:41:53message.delivered200
  • 21:41:55message.read200
  • 21:41:57message.received200
  • 21:41:59message.sent200
X-Beecasts-Signature · non-2xx retried, up to 8 attempts1 to retry
Shared inbox

Every customer conversation, one team inbox.

Incoming WhatsApp messages land in one place for the whole team. Assign a conversation, reply in the thread, and resolve it when it's done. Included from the Starter plan.

InboxSampleopen 3
  • AYAyu Lestari09:31My order #4821 hasn't arrived yet—
  • Dimas Pratama09:12Thanks, received it 🙏done
  • +62 812-5550-19408:47Is the store open on Sunday?BK
  • Sari WulandariYesterdayCan I change the delivery address?—
Ayu Lestari+62 812-3456-789 · session: supportdeliveryUnassignedOpen
Today

Hi, my order #4821 hasn't arrived yet. Can you check?

09:31

Note · team only: courier picked it up at 08:10.

Reply to Ayu… type / for saved replies
Assign
Give every conversation an owner, by hand or round-robin, so nothing is answered twice.
Labels
Tag conversations with labels, mark them open or resolved, and filter by either.
Quick replies
Type /hours in the reply box to drop in a saved answer.
Response targets
Set a first-reply target; chats waiting longer get an Overdue badge.
Internal notes
Leave notes for teammates in the thread. They are never sent to the customer.
Media & receipts
Send images, video, audio and documents. Replies use the same queue as API sends, with delivery and read receipts.
Automations

Chatbots that answer, and know when to stop.

Build menus and questions on a visual canvas, and let AI answer from your own knowledge base. When it isn't sure, the chat goes to your team. No code needed. Test it before you publish, keep every published version, and follow every run step by step. Included from the Starter plan.

Workflowsupport-bot · v3
Message receivedsession: supporttrigger
Menu1. Order status · 2. Prices · 3. Ask usmenu
Ask a questionOrder number? → {{vars.order_number}}ask
AI replyanswers from your knowledge baseai
Hand off if unsurea teammate takes over in the inboxhandoff
Endwon't restart for 24 hoursend
published v3 · draft v4running
Test run6 / 6 steps pass
Sample trigger data
{
  "message": {
    "text": "Halo, pesanan saya di mana?",
    "from": "+628123456789",
    "sessionId": "ses_support",
    "contact": { "name": "Ayu" }
  },
  "vars": { "order_number": 10482 }
}
Steps
menu · ask · AI · media
Knowledge
FAQs · PDFs · docs
Test run
dry run, no sends
Loop guard
cooldown · hand-off
Or start it from your own systems
POST /v1/automation-events/order.paid
Broadcasts

One message, every customer, by name.

Send to up to 1,000 recipients per broadcast from your contacts, a CSV or pasted numbers. Personalise with {{name|there}}, schedule it, pause, resume or duplicate it, and see what happened to every message. On every plan, or with POST /v1/broadcasts.

Campaign composerdraftSample
Preview · contact Ayu Lestari

Hi Ayu Lestari 👋 Our special offer is live this week. Use code BEE20 before Friday.

Campaign progressSample
delivered
812
delivered · first 30 min
30 msg/min pace
09:0009:0709:1509:2209:30
840
Recipients
812
Delivered
655
Read
9
Failed
80.7%
Read Rate
pause · resume · duplicateopt-outs skipped
Developer experience

From zero to sent in five minutes.

Create a session, pair a number, send a message. No BSP onboarding queue, no template approval loop to get started.

  1. 01

    Create a session

    One request creates a session (201). The response returns the session id and, while pairing is pending, a QR code.

    terminal
    curl -X POST https://api.beecasts.com/v1/sessions \
      -H "Authorization: Bearer bca_live_xxxxx" \
      -H "Content-Type: application/json" \
      -d '{ "name": "production" }'
  2. 02

    Connect WhatsApp

    In WhatsApp, open Linked devices and scan the QR. The session turns connected and takes its number from WhatsApp.

    WAITING FOR QRsession: productionnumber: +62 812 •••• 9912status: disconnected
  3. 03

    Send a message

    Send text, image, video, audio or document messages with the same endpoint; upload media first with POST /v1/media and pass its mediaUrl. The message is queued (202) and its status arrives by webhook.

    messages.send.js
    const response = await fetch(
      "https://api.beecasts.com/v1/messages/send",
      {
        method: "POST",
        headers: {
          "Authorization": "Bearer bca_live_xxxxx",
          "Content-Type": "application/json"
        },
        body: JSON.stringify({
          "sessionId": "ses_production",
          "recipient": "0812-3456-789",
          "country": "ID",
          "type": "text",
          "body": "Hello {{name|there}} 👋"
        })
      }
    );
    202 Accepted · sample response
    {
      "data": {
        "id": "msg_8f31de9",
        "recipient": "628123456789",
        "type": "text",
        "status": "queued"
      }
    }

Full reference: sessions, messages, broadcasts, webhooks, errors.

Explore Documentation
Architecture

One API between your stack and WhatsApp.

Your systems call one REST API. Beecasts queues each message, paces it per number, sends it through your linked WhatsApp session, and reports back with signed webhooks.

Your systemsREST · webhooks
  • Your appbackend
  • CRMcontacts
  • Online storeorders
  • Booking systemreservations
  • Helpdesktickets
Beecastsapi.beecasts.com
  • REST API202 · queued
  • Queuepaced 6–60/min per number
  • Sessionslinked devices · QR
  • Broadcasts≤ 1,000 recipients each
  • Webhookssigned · up to 8 attempts
live statuschecking
WhatsApp sessionsSample
  • Supportlinked
    +62 812 3821 9912
  • Saleslinked
    +62 811 9081 2201
  • Marketinglinked
    +62 852 1442 0911
  • Operationslinked
    +62 877 8211 1902

requests travel left → right · delivery updates and incoming messages return as webhooks · no native plug-ins, just the API

Operations console

Know exactly what's happening.

Dashboard, reports, request logs and activity in one console. The preview below uses sample data.

app.beecasts.comWorkspace previewSample
3MR

Good evening

Here's what's happening with your messaging infrastructure.

Outbound attempts
284,421+12.8%

vs previous period

Delivered
263,942

92.8% delivery rate

Read
231,518

81.4% read rate

Failed
3,412

1.2% failure rate

Message Volume
06:0009:0012:0015:0018:0021:0023:00
Session HealthView Sessions

3

Connected

1

Reconnecting

1

Disconnected

  • Customer Support+62 812 3821 9912connectedLast activity 4s ago
  • Sales Jakarta+62 811 9081 2201connectedLast activity 6s ago
  • Marketing+62 852 1442 0911connectedLast activity 2s ago
  • Ops Alerts+62 813 4402 7781reconnectingLast activity 21m ago
Messages this month72.0%

360,050 / 500,000

Billing period resets 30 Sep 2026View Usage
Campaigns
Running
1
Scheduled
1
Completed
2
Drafts
1
All broadcasts
Recent ActivitySample
  • 23:41:33message.delivered
  • 23:41:11POST /v1/messages/send
  • 23:40:49message.read
  • 23:40:27broadcast.completed
  • 23:40:05message.failed
  • 23:39:43GET /v1/sessions
Recent MessagesAll messages
RecipientSessionStatusTime
+62 812 8831 2811Customer Supportdelivered23:41:33
+62 811 9081 2201Marketingread23:36:01
+62 877 8211 1902Sales Jakartafailed23:24:01
+62 813 4402 7781Customer Supportread23:18:44
+62 852 1442 0911Marketingsent23:12:09
+62 811 2201 8834Sales Jakartaqueued23:04:52
Console

More in the console.

The everyday tools around sending: numbers in any format, personal messages, reports, team access and billing.

  • Reports

    Every plan

    Delivery and read rates, reply rate and response time, by number, broadcast and agent. Export any table as CSV, or opt in to a summary email every Monday.

  • Message variables

    Every plan

    Write {{name}}, {{first_name}}, {{phone}} or a contact's custom field, with a fallback like {{name|there}}. A variable with no value is dropped, never sent raw.

  • Any number format

    Every plan

    Type numbers the way people write them. 0812-3456-789 becomes 628123456789 using your workspace's country; a leading +, spaces and brackets are fine.

  • Contacts

    Every plan

    Contacts with tags and custom fields, CSV import, and an opt-out list. No saved contact is needed to send to a number.

  • AI replies

    From Starter

    An automation step that answers from your own knowledge base (FAQs, notes, and PDF, .docx, .txt, .md or .csv files) and hands the chat to your team when it can't. 100, 1,000 or 5,000 replies a month by plan.

  • Automation versions

    From Starter

    Every publish is a saved version. Test a draft with sample data, with nothing sent, and follow each run step by step in its history.

  • Team & security

    Seats by plan

    Owner, admin, developer, operator and billing roles; 1 seat on Free, 2 on Starter, 10 on Scale, 50 on Business. Two-step sign-in (TOTP) with recovery codes, and an audit log of workspace changes.

  • API keys

    Every plan

    Keys start with bca_live_ and carry only the scopes you choose. Rotate or revoke them at any time; the secret is shown once.

  • Checkout

    Paid plans

    Upgrade with QRIS or a bank virtual account, priced in rupiah, and redeem gift vouchers from Billing.

Use cases

Built for messages that actually matter.

Transactional, support and campaign messages from the same numbers, with a status for every message.

E-Commerce

flow
Order Created
Payment Confirmation
Shipping Update
Delivery Confirmation

your store calls POST /v1/messages/send at each step

Travel / Transportation

flow
Booking Created
Payment Confirmed
Departure Reminder
Trip Update

your booking system sends each message through the API

Customer Support

flow
Incoming Message
AI Answer
Hand-off to Inbox
Agent Reply

inbound → AI reply from your knowledge base → inbox → agent

Marketing

flow
Contacts or CSV
Broadcast
Opt-outs Skipped
Reports

up to 1,000 recipients per broadcast · STOP replies skipped

Protect your numbers.Safeguards on by default.

Warm-up for new numbersbroadcasts / day
  • Days 1–350 / day
  • Days 4–7150 / day
  • Days 8–14400 / day
  • Days 15–301,000 / day

After day 30 there is no warm-up limit. Only broadcast messages count: replies and one-to-one messages are never limited, and a number with a sending history can skip warm-up.

Free6 msg/min
Starter15 msg/min
Scale30 msg/min
Business60 msg/min

per number, by plan · the rest waits in the queue, in order

Broadcast logSample
  • sent6281•••9912+9.4s
  • sent6281•••2201+13.1s
  • skipped6285•••0911opted out · STOP
  • sent6287•••1902+7.8s
  • failed6282•••8813not on WhatsApp
  • sent6281•••4477+16.2s
  • sent6289•••3021+11.5s
  • sent6281•••7730+6.9s
  • skipped6285•••1204opted out · BERHENTI
  • sent6283•••5518+14.7s
6 msg/min · gaps of 6–18spauses at 10 failed of the last 20
Random gaps
Each broadcast message waits 0.6 to 1.8 times the set interval, so sends don't leave at a machine-regular beat.
Auto-pause
When 10 of the last 20 messages in a broadcast fail, it pauses itself and you get an alert, so you can check the number before resuming.
Opt-out keywords
Contacts who reply STOP, BERHENTI or UNSUBSCRIBE are skipped by later broadcasts. START or MULAI opts them back in.
Queue priority
When many workspaces are sending at once, higher plans go first, with aging so every plan's messages still go out.
Your setting
Warm-up and random gaps are on by default; switch them in Settings → Workspace → Number protection. Auto-pause and opt-outs always apply.
Good to know

WhatsApp can still restrict or ban any number, and Beecasts can't undo that. These safeguards lower the risk; they don't remove it. You are responsible for having your recipients' consent and for following WhatsApp's policies.

Reliability & control

Built for operational visibility.

Every message carries a state and a reason when it fails. Every number shows whether it's linked. Every webhook is signed and retried until your endpoint answers.

Delivery Trackingmessage states01
  • Queued202 accepted
  • Sentmessage.sent
  • Deliveredmessage.delivered
  • Readmessage.read
  • Failedmessage.failed + reason

Failed messages are not resent automatically. Retry one from the console or with POST /v1/messages/{id}/retry.

Webhook Retriesexponential backoff02
  1. Attempt 1 · 503now
  2. Attempt 2 · timeout+30s
  3. Attempt 3 · 502+1m
  4. Attempt 4 · 200+2m

A delivery that doesn't get a 2xx is retried, with the wait doubling each time, up to 8 attempts. Every attempt is in the delivery log, and you can resend one by hand.

Sample
Session Statusper number03
  • Connectedlinked and sending
  • Reconnectinglink dropped; comes back by itself
  • Disconnectedlogged out: scan a new QR

When a number disconnects you get a notification, and the session shows why, for example that it was logged out from the phone.

Webhookssigned events04
  • message.receivedsigned
  • message.sentsigned
  • message.deliveredsigned
  • message.readsigned
  • message.failedsigned

HMAC-SHA256 in X-Beecasts-Signature, plus a timestamped X-Beecasts-Signature-V2. Rotate the secret and send a test event from the console.

Pricing

Start free. Scale when you're ready.

Every workspace starts on the Free plan, with no card needed. Starter adds the shared inbox and automations; higher plans add numbers, seats, message volume and faster sending. Every plan includes the REST API, webhooks, broadcasts and the console.

Free

Rp0/ month

No card needed

Try Beecasts with one number and a small monthly allowance.

  • 1 WhatsApp session
  • 500 messages / month
  • 1 team seat
  • REST API & webhooks
  • Broadcasts
  • Beecasts footer added to outgoing messages

6 msg/min per session

Starter

Rp299.000/ month

or Rp2.990.000 billed yearly

For small teams replying to customers and automating the basics.

  • 1 WhatsApp session
  • 50,000 messages / month
  • 2 team seats
  • Shared inbox
  • Visual automations
  • 100 AI replies / month
  • Broadcasts & scheduling
  • Team roles & audit log
  • REST API & webhooks
  • No Beecasts footer

15 msg/min per session · Email support

Recommended

Scale

Rp1.500.000/ month

or Rp14.990.000 billed yearly

For businesses running WhatsApp across several numbers.

  • 5 WhatsApp sessions
  • 500,000 messages / month
  • 10 team seats
  • 1,000 AI replies / month
  • Everything in Starter
  • Faster sending per session

30 msg/min per session · Priority support

Business

Rp4.500.000/ month

or Rp44.990.000 billed yearly

For large teams and high-volume messaging operations.

  • Unlimited sessions
  • 5,000,000 messages / month
  • 50 team seats
  • 5,000 AI replies / month
  • Everything in Scale
  • Fastest sending per session

60 msg/min per session · Dedicated support

Prices in Indonesian rupiah (IDR); any tax and payment fees are shown at checkout. Pay by QRIS or bank transfer (virtual account). Sent and received messages both count toward the monthly allowance. Free-plan messages carry a short Beecasts footer, added automatically.

FAQ

Questions worth answering before you integrate.

Beecasts runs on an independent WhatsApp integration. Here is what that means in practice.

Beecasts is a WhatsApp platform for teams and developers: a shared inbox for replying to customers, visual automations and AI chatbots, broadcasts, and a REST API with webhooks for connecting WhatsApp to your own systems.

No. Beecasts operates as an independent, unofficial WhatsApp integration platform and is not affiliated with, endorsed by, or sponsored by WhatsApp or Meta.

Yes, on every plan. A broadcast goes to up to 1,000 recipients from your contacts, a CSV or pasted numbers. Schedule it, pause, resume or duplicate it, and follow each message's status. People who replied STOP are skipped.

With Number protection on (the default, under Settings), a new number warms up with a daily broadcast limit that grows over its first 30 days, and broadcast messages leave at slightly random intervals. A broadcast pauses itself and alerts you when 10 of its last 20 messages fail, and contacts who reply STOP, BERHENTI or UNSUBSCRIBE are skipped. This lowers the risk but doesn't remove it: WhatsApp can still restrict a number, so only message people who agreed to hear from you.

Yes. Use {{name}}, {{first_name}}, {{phone}} or a contact's custom fields, and add a fallback such as {{name|there}}. Values are filled in on the server from the matching contact, and a variable with no value and no fallback is removed, so a raw {{...}} is never sent.

Any common format. Spaces, dashes, brackets and a leading + are fine, and a local number such as 0812… is read in your workspace's country and stored in international form (62812…). No saved contact is needed to send.

No. A failed message shows the reason, and you retry it from the console or with POST /v1/messages/{id}/retry. Webhook deliveries are different: if your endpoint doesn't answer with a 2xx, Beecasts retries with exponential backoff, up to 8 attempts.

Yes. Each connected number is a session. Free and Starter include one, Scale up to five, and Business is unlimited. All of them are managed from one console and one API.

Yes. Incoming messages appear in the shared inbox, where your team can assign, reply to, and resolve conversations (Starter and above). They can also start automations and are delivered to your systems through signed webhooks. Incoming messages count toward the monthly message allowance.

Yes, from the Starter plan. Build a workflow on a visual canvas: start it from an incoming message or your own event, send numbered menus, ask questions and save the answers, branch with conditions, wait, send text or media, and hand the chat to your team. Menus are numbered text, since WhatsApp buttons need the official API. Test it with sample data before you publish it.

Yes. Add FAQs, notes, PDFs or Word documents to your knowledge base, then use an AI reply step. It answers only from what's in your knowledge base, and when it can't, or the customer asks for a person, it hands the chat to your team instead of guessing. Starter includes 100 AI replies a month, Scale 1,000 and Business 5,000.

Messages are paced per number to protect it from being flagged: 6 per minute on Free, 15 on Starter, 30 on Scale, and 60 on Business. Anything beyond that waits in the queue and goes out in order.

Yes, through the REST API and webhooks. Beecasts has no ready-made plug-ins for specific CRMs or stores; your system calls the API to send messages and receives signed webhooks for incoming messages and delivery updates.

Platform notice

Beecasts is an independent messaging infrastructure platform and is not affiliated with WhatsApp LLC or Meta Platforms, Inc. WhatsApp is a trademark of its respective owner. Customers are responsible for using the platform in accordance with applicable laws, recipient consent requirements, and messaging platform policies.

Your application already knows what to say.Now give it WhatsApp.

Start on the Free plan, no card needed.

  • APICHECKING
  • SESSION SERVICECHECKING
  • WEBHOOKSCHECKING