We built Wubble so that WhatsApp conversations could be managed smarter — with automation, pipelines, and team workflows in one place. Today, we’re opening Wubble up to the tools you already use. Introducing the Wubble Developer API.
From today, every Wubble workspace gets access to a set of REST API endpoints under /api/v1/ — authenticated with your own personal API key. Send messages, sync contacts, create deals, and trigger workflows from any external tool: n8n, Zapier, Make, your own CRM, or a custom script.
This post is your complete guide to getting started.
What you can do with the API
Five core endpoint groups are available right now:
- POST /api/v1/send: Send a text or template message to any phone number
- GET/POST /api/v1/contacts: List, create, or update contacts in your workspace
- GET /api/v1/conversations: List your inbox conversations
- GET /api/v1/pipelines: Fetch your pipeline names, stages, and stage IDs
- GET/POST /api/v1/deals: List all deals or create new ones in any pipeline stage
Step-by-step: Generate your API key
- Open Settings → Developer: Log into your Wubble dashboard. In the left sidebar, click Settings, then navigate to the Developer tab.
- Click “Generate New Key”: Give your key a name — something descriptive like “n8n automation” or “CRM sync”. This helps you track which integration is using which key.
- Copy your key immediately: Your key is shown exactly once. It starts with wacrm_ — save it in a secure place. You will not be able to see it again.
Security note: Wubble never stores your raw API key — only a hashed fingerprint. If you lose your key, revoke it and generate a new one from the Developer settings panel.
Authenticating your requests
All API requests use Bearer token authentication. Pass your API key in the Authorization header with every request:
Authorization: Bearer wacrm_YOUR_API_KEY
No cookies, no sessions. Every request is stateless and scoped to your workspace only.
Sending your first message
The most powerful endpoint is POST /api/v1/send. It automatically creates a contact and conversation if the phone number doesn’t exist yet, dispatches the message through Meta’s WhatsApp API, and pauses any active bot flow on that contact — so your manual or automated message always gets through cleanly.
Send a plain text message
curl -X POST https://your-wubble-domain.com/api/v1/send \
-H "Authorization: Bearer wacrm_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone": "+919876543210",
"message_type": "text",
"content_text": "Hello from n8n! Your order is confirmed."
}'
Send a WhatsApp template
curl -X POST https://your-wubble-domain.com/api/v1/send \
-H "Authorization: Bearer wacrm_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone": "+919876543210",
"message_type": "template",
"template_name": "order_confirmation",
"template_params": ["Rahul", "ORD-4521"]
}'
| Parameter | Type | Notes |
|---|---|---|
| phone | string | E.164 format with country code (required) |
| message_type | string | “text” or “template” (required) |
| content_text | string | Your message body (for text type) |
| template_name | string | Meta-approved template name |
| template_params | array | Variable values in order |
Managing contacts
Fetch all contacts
curl -X GET https://your-wubble-domain.com/api/v1/contacts \
-H "Authorization: Bearer wacrm_YOUR_API_KEY"
You can also filter by phone or email using query params: ?phone=%2B919876543210&[email protected]
Create or update a contact
curl -X POST https://your-wubble-domain.com/api/v1/contacts \
-H "Authorization: Bearer wacrm_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone": "+919876543210",
"name": "Priya Sharma",
"email": "[email protected]",
"company": "Aquilyn Digital"
}'
The contacts endpoint uses phone number matching — if a contact with the same phone already exists, it updates the record rather than creating a duplicate.
Working with pipelines and deals
Before you can create a deal, you’ll need the IDs for your pipeline and target stage. Fetch them with:
curl -X GET https://your-wubble-domain.com/api/v1/pipelines \
-H "Authorization: Bearer wacrm_YOUR_API_KEY"
The response gives you pipeline_id and a list of stages with their stage_id values. Copy the ones you need, then create a deal:
curl -X POST https://your-wubble-domain.com/api/v1/deals \
-H "Authorization: Bearer wacrm_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Priya — Website Package",
"contact_id": "CONTACT_UUID",
"pipeline_id": "PIPELINE_UUID",
"stage_id": "STAGE_UUID",
"value": 18000.00
}'
Connecting with n8n or Zapier
These endpoints are standard REST — any HTTP node in n8n or Zapier’s Webhooks action will work out of the box. Here’s a quick setup for n8n:
- Add an HTTP Request node: Set method to POST, URL to your Wubble /api/v1/send endpoint.
- Add your API key as a header: Header name: Authorization · Value: Bearer wacrm_YOUR_KEY
- Map your data and test: Pass phone, message_type, and content_text from your upstream trigger node. Hit execute — done.
Tip for Zapier users: Use the “Webhooks by Zapier” action → POST. Add the Authorization header under “Headers” in the custom request setup.
What’s coming next
The v1 API is just the start. We’re already working on:
- Inbound webhook events (message received, deal stage changed)
- Bot flow trigger/pause control via API
- Bulk message dispatch endpoint
- OAuth 2.0 for third-party app integrations
If you’re on Wubble and want to connect your stack, head to Settings → Developer and generate your first key today. And if you run into any issues or have a specific integration you’re trying to build, just reach out — we’ll help you get it working.
— Shantanu Chakraborty
Founder, Aquilyn Digital
