Automate WhatsApp in One API avatar

Automate WhatsApp in One API

Pricing

from $1.00 / 1,000 message-results

Go to Apify Store
Automate WhatsApp in One API

Automate WhatsApp in One API

Unlock WhatsApp automation in minutes: connect once via QR, then run messaging, media sends, number verification, chat exports, backups, and job tracking from one production-ready Control Center + API. Built for CRM, support, sales, and ops teams that need speed, reliability, and scale.

Pricing

from $1.00 / 1,000 message-results

Rating

5.0

(2)

Developer

Alexandre Manguis

Alexandre Manguis

Maintained by Community

Actor stats

2

Bookmarked

8

Total users

5

Monthly active users

9 days ago

Last modified

Share

Run WhatsApp operations from one actor: connect once, keep session alive, and execute export/send/verify/backup workflows from a modern UI or a clean HTTP API.

Why This Actor

  • One QR onboarding flow, then persistent session reuse
  • Real operational dashboard (/ui) for non-technical users
  • API-first automation for scripts, CRMs, and backend services
  • Built-in command jobs for async tasks and polling
  • Designed for production reliability (timeouts, fallbacks, resilient responses)

Product Snapshot

WhatsApp Control Center UI

End-to-End Process

1. Start actor

Launch the actor. It initializes the Control Center and prints:

  • UI URL
  • Access token location (CONTROL_ACCESS.txt)
  • QR status updates

Scan the QR from logs or UI:

  1. WhatsApp on phone
  2. Settings -> Linked Devices
  3. Link a Device
  4. Scan QR

3. Session persistence

After successful link, session state is saved. Next runs restore automatically in most cases.

4. Operate from UI or API

  • UI for interactive operations
  • REST API for automation
  • Jobs API for command tracking

Core Endpoints

EndpointMethodPurpose
/uiGETControl Center dashboard
/statusGETSession and connection status
/qrGETCurrent QR as PNG
/startPOSTStart/restart session bootstrap
/chatsGETList chats (limit supported)
/messagesPOSTExport messages
/sendPOSTSend messages/media
/numbersPOSTVerify phone numbers
/contactsPOSTSave/sync contacts
/backupPOSTBuild backup artifacts
/jobsGETList jobs
/jobs/:idGETPoll job status/result
/logoutPOSTDisconnect + clear session

Quick Start API

Status

$curl -s -H "Authorization: Bearer $TOKEN" "$BASE_URL/status"

Two most recent chats

$curl -s -H "Authorization: Bearer $TOKEN" "$BASE_URL/chats?limit=2"

Send message

curl -s -X POST "$BASE_URL/send" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"waitForResult": true,
"confirmRecipientConsent": true,
"sendMessages": [{"to":"33600000000@c.us","message":"Hello from API"}]
}'

Verify number

curl -s -X POST "$BASE_URL/numbers" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"waitForResult": true,
"confirmRecipientConsent": true,
"phoneNumbers": ["+33600000000"]
}'

Reliability Highlights

  • Dashboard QR recovery via SSE + status polling fallback
  • Connected-state QR lock to avoid QR/check flicker
  • /chats?limit=N returns latest N chats (most recent first)
  • Non-blocking KV strategy for chat listing responses
  • Per-chat timeout guards to avoid single-chat full-response stalls

Backup ZIP Download Behavior

  • Backup ZIP files are served through a direct download link returned in job.progress.downloadPath and in the final job result.
  • Use the link shown in the UI result panel (Download result) for both conversation backup and full account backup.
  • Backup ZIP links are session-scoped to the running Control Center process, so download the file during the active session.
  • JSON artifacts (for example manifest/summary) remain available through /download/{key}.

Security and Compliance

  • Access token required on every request
  • Consent confirmation supported for send/verify workflows
  • Session token and QR should be treated as sensitive credentials
  • Use only authorized accounts and compliant recipient lists

Billing

This actor uses Apify pay-per-event billing through Actor.charge, so the price is defined by the event grid below. There is no hidden per-message compute tariff in the actor pricing itself: the run is billed when the code emits an event.

Event pricing

Cost driverWhat it meansBilling impact
message-result1 per exported message$0.001 / message
live-message-result3 per live message saved or forwarded$0.003 / message
media-mb25 per rounded-up MB$0.025 / MB
send-action3 per text or media send$0.003 / send
number-check2 per WhatsApp number$0.002 / number
contact-action4 per contact save/edit$0.004 / contact
profile-result2 per exported profile/contact$0.002 / profile
backup-package500 per backup ZIP$0.50 / ZIP
live-minute10 per started minute$0.01 / minute
command-action5 per paid direct command$0.005 / command
list-chats-action1 per list chats request$0.001 / request

Cost impact by action

ActionWhat is billedTypical cost pressure
Export messagesmessage-result events$0.001 per exported message
Save or forward live messageslive-message-result events$0.003 per live message
Send textsend-action events$0.003 per message sent
Send media or filesend-action + media-mb events$0.003 + $0.025 per rounded-up MB
Verify numbersnumber-check events$0.002 per number
Save or edit contactscontact-action events$0.004 per contact
Export profiles / contactsprofile-result events$0.002 per profile
Build a backup ZIPbackup-package plus normal message/media/profile events inside the backup$0.50 per ZIP plus variable event cost
List chatslist-chats-action events$0.001 per request
Keep a live session openlive-minute events$0.01 per started minute
Run a paid direct commandcommand-action events$0.005 per command

Practical rule of thumb

  • The actor is not priced by generic runtime/memory in the product grid above.
  • The bill comes from the specific events the code emits.
  • A bigger file costs more because media-mb rounds up to the next MB.
  • A live session costs more because live-minute is charged per started minute.
  • A backup can cost multiple events because the ZIP has its own base fee and the included messages/media/profiles are still billed normally.

How to estimate cost

  • Count the expected number of exported messages, live messages, sent messages, number checks, contact actions, profile exports, backup ZIPs, live minutes, and direct commands.
  • Multiply each count by its unit price.
  • Add media-mb for every rounded-up MB of media that is downloaded or uploaded.
  • For backups, add the ZIP base price plus the underlying message/media/profile events.
  • Use the Apify console usage and billing pages to verify the exact spend for your account.

Important notes

  • WhatsApp itself is not billed by Apify inside this actor.
  • Any proxy provider, external API, or downstream automation tool may add its own charges.
  • The actor code already exposes the event grid above, so exact per-action pricing is known and should be kept in sync with PRICING_EVENTS.json and src/main.js.

Suggested Use Cases

  • Sales outreach operations
  • Customer support workflows
  • Lead qualification and enrichment
  • Notification pipelines
  • WhatsApp data export and archival
  • Business continuity backup workflows

Keywords

whatsapp api, whatsapp automation, whatsapp web, whatsapp session api, whatsapp session manager, whatsapp control center, whatsapp dashboard, qr login, linked devices, session persistence, whatsapp chats export, whatsapp messages export, whatsapp backup, whatsapp media export, whatsapp send api, whatsapp number verification, whatsapp contacts sync, whatsapp jobs api, apify actor, apify whatsapp, crm integration, webhook integration, live events, sse events, production ready, business messaging, lead generation, sales ops, support ops, outreach automation, contact validation, consent aware messaging, all in one whatsapp, whatsapp backend service

Summary

This actor is an all-in-one WhatsApp operations layer for teams that need both UI control and API automation with production-focused behavior.