L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

moltflow

moltflow

WhatsApp Business automation API for sessions, messaging, groups, labels, and webhooks. Use when: whatsapp, send message, create session, qr code, monitor group, label contacts, webhook.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: moltflow description: "WhatsApp Business automation API for sessions, messaging, groups, labels, and webhooks. Use when: whatsapp, send message, create session, qr code, monitor group, label contacts, webhook." source: "MoltFlow Team" version: "2.16.1" risk: safe requiredEnv:

  • MOLTFLOW_API_KEY primaryEnv: MOLTFLOW_API_KEY disable-model-invocation: true

MoltFlow -- WhatsApp Business automation for teams. Connect, monitor, and automate WhatsApp at scale. Due to high demand and a recent registration issue, we're offering our top-tier Business plan with unlimited quotas for just $19.90/month on yearly billing — for a limited time only. Claim the deal Free tier available. Sign up

MoltFlow Core API

Manage WhatsApp sessions, send messages, monitor groups, organize with labels, and receive real-time events via webhooks.

Real-World Scenarios

Dental clinic — "Send an appointment confirmation to each patient after they book, and a reminder 24 hours before their visit."

Property manager — "Monitor my tenant WhatsApp groups for maintenance keywords like 'leak', 'broken', and 'urgent', and flag them instantly."

E-commerce store — "When a customer messages my support number, auto-label them as 'New Inquiry' and route the chat to the right team."

Logistics company — "Set up a webhook so my dispatch system gets notified the moment a driver sends a delivery confirmation photo."

When to Use

  • "Connect WhatsApp" or "create a session"
  • "Send a WhatsApp message" or "send text to contact"
  • "Monitor a WhatsApp group" or "list groups"
  • "Label contacts" or "sync labels from WhatsApp"
  • "Set up a webhook" or "listen for WhatsApp events"
  • "Get QR code" or "start session"
  • "List chats" or "get conversations"

Prerequisites

  1. MOLTFLOW_API_KEY -- Generate from the MoltFlow Dashboard under Settings > API Keys
  2. All requests require authentication via Authorization: Bearer <token> or X-API-Key: <key>
  3. Base URL: https://apiv2.waiflow.app/api/v2

Required API Key Scopes

ScopeAccess
sessionsread/manage
messagesread/send
groupsread/manage
labelsread/manage
webhooksread/manage

Authentication

Every request must include one of:

Authorization: Bearer <jwt_token>

or

X-API-Key: <your_api_key>

Sessions

Manage WhatsApp connections. Each session represents one WhatsApp account linked via QR code.

MethodEndpointDescription
GET/sessionsList all sessions
POST/sessionsCreate a new session
GET/sessions/{id}Get session details
DELETE/sessions/{id}Delete a session
POST/sessions/{id}/startStart session (triggers QR scan)
POST/sessions/{id}/stopStop a running session
POST/sessions/{id}/restartRestart a session
POST/sessions/{id}/logoutLogout and clear auth state
GET/sessions/{id}/qrGet QR code for pairing
GET/sessions/{id}/eventsSSE stream of session events

Session Status Values

Sessions progress through these states: stopped -> starting -> qr_code -> working -> failed

Create Session

POST /sessions

{
  "name": "My WhatsApp"
}

Response 201 Created:

{
  "id": "a1b2c3d4-...",
  "name": "My WhatsApp",
  "status": "stopped",
  "phone_number": null,
  "is_business": false,
  "created_at": "2026-02-11T10:00:00Z"
}

Start Session and Get QR

After creating a session, start it and retrieve the QR code:

  1. POST /sessions/{id}/start -- begins the WAHA engine
  2. Wait for status to become qr_code (use SSE events or poll)
  3. GET /sessions/{id}/qr -- returns the QR code image

SSE Events

GET /sessions/{id}/events?token=<jwt> returns a Server-Sent Events stream. Events include session status changes, incoming messages, and connection updates.

Session Settings

PATCH /sessions/{id}/settings

Configure per-session behavior. Settings are stored in the session's config JSON field.

// Request
{
  "auto_transcribe": true
}

// Response
{
  "status": "ok",
  "config": {
    "auto_transcribe": true
  }
}
FieldTypeDescription
auto_transcribebooleanAutomatically transcribe incoming voice messages

Messages

Send and retrieve WhatsApp messages through connected sessions.

MethodEndpointDescription
POST/messages/sendSend a text message
POST/messages/send/pollSend a poll message
POST/messages/send/stickerSend a sticker
POST/messages/send/gifSend a GIF
GET/messages/chats/{session_id}List all chats for a session
GET/messages/chat/{session_id}/{chat_id}Get chat messages
GET/messages/{message_id}Get a single message

Send Text Message

POST /messages/send

{
  "session_id": "a1b2c3d4-...",
  "chat_id": "5511999999999@c.us",
  "message": "Hello from MoltFlow!"
}

Response 201 Created:

{
  "id": "msg-uuid-...",
  "chat_id": "chat-uuid-...",
  "wa_message_id": "ABCD1234",
  "direction": "outbound",
  "message_type": "text",
  "content_preview": "Hello from MoltFlow!",
  "status": "sent",
  "sent_at": "2026-02-11T10:05:00Z",
  "created_at": "2026-02-11T10:05:00Z"
}

Chat ID Format

  • Individual contacts: <phone>@c.us (e.g., 5511999999999@c.us)
  • Groups: <group_id>@g.us (e.g., 120363012345678901@g.us)

Send Poll

POST /messages/send/poll

{
  "session_id": "a1b2c3d4-...",
  "chat_id": "5511999999999@c.us",
  "title": "Preferred meeting time?",
  "options": ["Morning", "Afternoon", "Evening"],
  "allow_multiple": false
}

Groups

Monitor WhatsApp groups for keywords, messages, and activity.

MethodEndpointDescription
GET/groupsList monitored groups
GET/groups/available/{session_id}List available WA groups
POST/groupsAdd group to monitoring
GET/groups/{id}Get monitored group details
PATCH/groups/{id}Update monitoring settings
DELETE/groups/{id}Remove from monitoring
POST/groups/createCreate a new WA group
POST/groups/{wa_group_id}/participants/addAdd participants
POST/groups/{wa_group_id}/participants/removeRemove participants
POST/groups/{wa_group_id}/admin/promotePromote to admin
POST/groups/{wa_group_id}/admin/demoteDemote from admin

Add Group to Monitoring

POST /groups

{
  "session_id": "a1b2c3d4-...",
  "wa_group_id": "120363012345678901@g.us",
  "monitor_mode": "keywords",
  "monitor_keywords": ["urgent", "support", "help"]
}

Monitor Modes

  • all -- Capture every message in the group
  • keywords -- Only capture messages matching specified keywords
  • mentions -- Only when your account is mentioned
  • first_message -- Only first messages from new users (default for new groups)
  • ai_analysis -- AI-powered intent classification and lead scoring (Pro+ only)

Group Messages (AI Intelligence)

GET /groups/{group_id}/messages

Retrieve paginated messages from a monitored group, including AI analysis results.

Query parameters: limit (default 50, max 100), offset (default 0)

Requires scope: groups:read

{
  "items": [
    {
      "id": "msg-uuid",
      "sender_phone": "+15550123456",
      "sender_name": "John D.",
      "content_preview": "I'm interested in the 3BR property",
      "wa_timestamp": "2026-02-20T14:30:00Z",
      "ai_analysis": {
        "intent": "buying_intent",
        "lead_score": 9,
        "confidence": 0.92,
        "reason": "Explicit interest in a specific property with buying signal"
      }
    }
  ],
  "total": 142,
  "limit": 50,
  "offset": 0,
  "has_more": true
}

ai_analysis is null when AI hasn't processed the message or AI monitoring is not enabled.

MCP Tool: moltflow_get_group_messages

Retrieve messages from a monitored WhatsApp group via Claude or any MCP client.

Args:

  • group_id (required): UUID of the monitored group
  • limit (optional): Max messages 1-100 (default: 50)
  • offset (optional): Skip count for pagination (default: 0)
  • response_format (optional): "markdown" or "json"

Returns: Paginated list of messages with sender info, content preview, timestamp, and ai_analysis (intent, lead_score, confidence, reason) when AI has processed the message.

Requires scope: groups:read


Labels

Organize contacts and chats with color-coded labels. Supports sync with WhatsApp Business native labels.

MethodEndpointDescription
GET/labelsList all labels
POST/labelsCreate a label
GET/labels/{id}Get label details
PATCH/labels/{id}Update a label
DELETE/labels/{id}Delete a label
POST/labels/{id}/syncSync label to WhatsApp
POST/labels/sync-from-whatsappImport labels from WA
GET/labels/business-checkCheck WA Business status
GET/labels/{id}/chatsList chats with this label
GET/labels/chat/{chat_id}Get labels for a chat
PUT/labels/chat/{chat_id}Set labels for a chat

Create Label

POST /labels

{
  "name": "VIP Customer",
  "color": "#FF6B35",
  "description": "High-value accounts"
}

Response 201 Created:

{
  "id": "label-uuid-...",
  "name": "VIP Customer",
  "color": "#FF6B35",
  "description": "High-value accounts",
  "chat_count": 0,
  "synced": false,
  "created_at": "2026-02-11T10:00:00Z"
}

Note: Syncing labels to WhatsApp requires a WhatsApp Business account. Use GET /labels/business-check to verify.


Webhooks

Receive real-time notifications when events occur in your WhatsApp sessions.

MethodEndpointDescription
GET/webhooksList all webhooks
POST/webhooksCreate a webhook
GET/webhooks/{id}Get webhook details
PATCH/webhooks/{id}Update a webhook
DELETE/webhooks/{id}Delete a webhook
POST/webhooks/{id}/testSend a test delivery

Supported Events

EventDescription
message.receivedInbound message received
message.sentOutbound message sent
session.connectedSession connected to WhatsApp
session.disconnectedSession disconnected
lead.detectedNew lead detected (includes ai_analysis when available)
group.messageMessage in a monitored group
group.message.analyzedAI analysis completed for a group message (Pro/Business only)

Create Webhook

POST /webhooks

Security: Webhook URLs are validated server-side — private IPs, cloud metadata endpoints, and non-HTTPS schemes are blocked. Only configure endpoints you control. Always set a secret for HMAC signature verification.

{
  "name": "CRM Integration",
  "url": "https://example.com/webhooks/moltflow",
  "events": ["message.received", "lead.detected"],
  "secret": "whsec_mysecretkey123"
}

Response 201 Created:

{
  "id": "wh-uuid-...",
  "name": "CRM Integration",
  "url": "https://example.com/webhooks/moltflow",
  "events": ["message.received", "lead.detected"],
  "is_active": true,
  "created_at": "2026-02-11T10:00:00Z"
}

Webhook Payload

Deliveries include an HMAC-SHA256 signature in the X-Webhook-Signature header (if a secret is configured). Verify this to ensure authenticity.

{
  "event": "message.received",
  "timestamp": "2026-02-11T10:05:00Z",
  "data": {
    "session_id": "a1b2c3d4-...",
    "chat_id": "5511999999999@c.us",
    "message": "Hello!",
    "direction": "inbound"
  }
}

Examples

Full workflow: Create session and send first message

# 1. Create a session
curl -X POST https://apiv2.waiflow.app/api/v2/sessions \
  -H "X-API-Key: $MOLTFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sales Team"}'

# 2. Start the session (triggers QR)
curl -X POST https://apiv2.waiflow.app/api/v2/sessions/{session_id}/start \
  -H "X-API-Key: $MOLTFLOW_API_KEY"

# 3. Get QR code (scan with WhatsApp)
curl https://apiv2.waiflow.app/api/v2/sessions/{session_id}/qr \
  -H "X-API-Key: $MOLTFLOW_API_KEY"

# 4. Send a message (after session status is "working")
curl -X POST https://apiv2.waiflow.app/api/v2/messages/send \
  -H "X-API-Key: $MOLTFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "{session_id}",
    "chat_id": "5511999999999@c.us",
    "message": "Hello from MoltFlow!"
  }'

Set up a webhook for incoming messages

curl -X POST https://apiv2.waiflow.app/api/v2/webhooks \
  -H "X-API-Key: $MOLTFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Incoming Messages",
    "url": "https://myapp.com/webhooks/whatsapp",
    "events": ["message.received", "session.connected"],
    "secret": "whsec_my_secret"
  }'

Monitor a group for keywords

# List available groups from a connected session
curl https://apiv2.waiflow.app/api/v2/groups/available/{session_id} \
  -H "X-API-Key: $MOLTFLOW_API_KEY"

# Add a group to monitoring
curl -X POST https://apiv2.waiflow.app/api/v2/groups \
  -H "X-API-Key: $MOLTFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "{session_id}",
    "wa_group_id": "120363012345678901@g.us",
    "monitor_mode": "keywords",
    "monitor_keywords": ["urgent", "support"]
  }'

Error Responses

All endpoints return standard error responses:

{
  "detail": "Session not found"
}
StatusMeaning
400Bad request (invalid input)
401Unauthorized (missing or invalid auth)
403Forbidden (plan limit or permission)
404Resource not found
429Rate limited
500Internal server error

Rate Limits

API requests are rate-limited per tenant. Limits vary by plan:

PlanRequests/min
Free10
Starter20
Pro40
Business60

Rate limit headers are included in every response: X-RateLimit-Remaining, X-RateLimit-Reset.


Related Skills

  • moltflow-outreach -- Bulk Send, Scheduled Messages, Custom Groups
  • moltflow-leads -- Lead detection, pipeline tracking, bulk operations, CSV/JSON export
  • moltflow-ai -- AI-powered auto-replies, voice transcription, RAG knowledge base, style profiles
  • moltflow-a2a -- Agent-to-Agent protocol, encrypted messaging, content policy
  • moltflow-reviews -- Review collection and testimonial management
  • moltflow-admin -- Platform administration, user management, plan configuration
Skills enregistrées