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.
awaiting request
- ACCEPTED—
- QUEUED—
- SENT—
- DELIVERED—
- READ—
- 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
Everything between your business and WhatsApp.
Send, receive, reply, automate, and observe WhatsApp conversations from one platform, in the console or through the API.
Text and media through one API.
POST /v1/messages/send
{
"sessionId": "ses_sales",
"recipient": "628123456789",
"type": "text",
"body": "Hi {{name|there}}, your order is ready"
}Broadcast without losing control.
September Promo
840 recipients · from customers.csv
- 612
- SENT
- 590
- DELIVERED
- 431
- READ
- 6
- FAILED
- 228
- QUEUED
- 6281•••9912QUEUED
- 6281•••2201SENDING
- 6285•••0911DELIVERED
- 6287•••1902QUEUED
- 6281•••4477SENDING
- 6282•••8813DELIVERED
One API. Multiple numbers.
CUSTOMER SUPPORT
+62 812 3821 9912
CONNECTEDlinked deviceSALES
+62 811 9081 2201
CONNECTEDlinked deviceBROADCAST
+62 852 1442 0911
RECONNECTINGcomes back by itselfBACKUP
+62 877 8211 1902
DISCONNECTEDscan QR to relink
1 number on Free & Starter · 5 on Scale · unlimited on Business
Your system knows immediately.
- 21:41:47message.receivedmsg_a41f8c2200
- 21:41:49message.sentmsg_b7f29cd200
- 21:41:51message.deliveredmsg_b7f29cd503
- 21:41:53message.deliveredmsg_b7f29cd200
- 21:41:55message.readmsg_b7f29cd200
- 21:41:57message.receivedmsg_c82b1e4200
- 21:41:59message.sentmsg_d10a7f3200
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.
- 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?—
Hi, my order #4821 hasn't arrived yet. Can you check?
09:31Note · team only: courier picked it up at 08:10.
- 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.
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.
{
"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
POST /v1/automation-events/order.paid
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.
Hi Ayu Lestari 👋 Our special offer is live this week. Use code BEE20 before Friday.
- 840
- Recipients
- 812
- Delivered
- 655
- Read
- 9
- Failed
- 80.7%
- Read Rate
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.
- 01
Create a session
One request creates a session (201). The response returns the session id and, while pairing is pending, a QR code.
terminalcurl -X POST https://api.beecasts.com/v1/sessions \ -H "Authorization: Bearer bca_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{ "name": "production" }' - 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 - 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.jsconst 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 DocumentationOne 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 appbackend
- CRMcontacts
- Online storeorders
- Booking systemreservations
- Helpdesktickets
- REST API202 · queued
- Queuepaced 6–60/min per number
- Sessionslinked devices · QR
- Broadcasts≤ 1,000 recipients each
- Webhookssigned · up to 8 attempts
- 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
Know exactly what's happening.
Dashboard, reports, request logs and activity in one console. The preview below uses sample data.
Good evening
Here's what's happening with your messaging infrastructure.
vs previous period
92.8% delivery rate
81.4% read rate
1.2% failure rate
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
360,050 / 500,000
- Running
- 1
- Scheduled
- 1
- Completed
- 2
- Drafts
- 1
- 23:41:33message.deliveredmsg_8f21be2
- 23:41:11POST /v1/messages/sendreq_7c30f1
- 23:40:49message.readmsg_a81bd3
- 23:40:27broadcast.completedSeptember promo
- 23:40:05message.failedmsg_b928ac
- 23:39:43GET /v1/sessionsreq_2a85d9
| Recipient | Session | Status | Time |
|---|---|---|---|
| +62 812 8831 2811 | Customer Support | delivered | 23:41:33 |
| +62 811 9081 2201 | Marketing | read | 23:36:01 |
| +62 877 8211 1902 | Sales Jakarta | failed | 23:24:01 |
| +62 813 4402 7781 | Customer Support | read | 23:18:44 |
| +62 852 1442 0911 | Marketing | sent | 23:12:09 |
| +62 811 2201 8834 | Sales Jakarta | queued | 23:04:52 |
More in the console.
The everyday tools around sending: numbers in any format, personal messages, reports, team access and billing.
Reports
Every planDelivery 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 planWrite {{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 planType 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 planContacts 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 StarterAn 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 StarterEvery 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 planOwner, 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 planKeys 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 plansUpgrade with QRIS or a bank virtual account, priced in rupiah, and redeem gift vouchers from Billing.
Built for messages that actually matter.
Transactional, support and campaign messages from the same numbers, with a status for every message.
E-Commerce
flowyour store calls POST /v1/messages/send at each step
Travel / Transportation
flowyour booking system sends each message through the API
Customer Support
flowinbound → AI reply from your knowledge base → inbox → agent
Marketing
flowup to 1,000 recipients per broadcast · STOP replies skipped
Protect your numbers.Safeguards on by default.
- 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.
per number, by plan · the rest waits in the queue, in order
- 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
- 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.
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.
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.
- 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.
- Attempt 1 · 503now
- Attempt 2 · timeout+30s
- Attempt 3 · 502+1m
- 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- 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.
- 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.
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
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.
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.
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