Create New Session

Active Sessions

This session will be used for all actions below

Enter with country code

Current Status:

💡 Use "List Chats" action first to load available chats

💡 Use "List Chats" action first to load available chats

Leave empty to screenshot main screen, or select a chat

Screenshot Preview

Screenshot

Configure storage and webhooks for this session

⚠ Appwrite not configured

Please set Appwrite credentials in your environment variables (.env file) before enabling Appwrite storage.

Appwrite Configuration

Endpoint:

Project:

Database:

Collection:

Bucket:

Send webhook events to external URLs (like your own server, n8n, Zapier, etc.)

Base domain is set in environment. Only customize the path.

Active Webhooks

No external webhooks configured

Message History

Chats

Note: Messages and media files are stored locally in the /data directory when local storage is enabled in webhook configuration.

API Documentation

Open Swagger

Swagger API Documentation

Enable or disable the Swagger UI endpoint

Setting saved. Restart the server to apply changes.

Base URL

Authentication

Include your API key in request headers:

x-api-key: YOUR_API_KEY

API Endpoints

POST /api/sessions

Create and start a new WhatsApp session

Request Body:

{ "name": "My Session" }

Response:

{ "success": true, "session": { "id": "session_123", "name": "My Session", "status": "INITIALIZING" } }
GET /api/sessions

List all active sessions

Response:

{ "sessions": [{ "id": "session_123", "name": "My Session", "status": "CONNECTED" }] }
GET /api/sessions/:id

Get detailed information about a specific session

Response:

{ "id": "session_123", "name": "My Session", "status": "CONNECTED", "phone_number": "+201234567890" }
DELETE /api/sessions/:id

Delete a session and its data

Response:

{ "success": true }
POST /api/sessions/:id/logout

Logout a session without deleting it

Response:

{ "success": true, "message": "Session logged out" }
GET /api/sessions/:id/qr

Get QR code for session authentication

Response:

{ "qr_code": "data:image/png;base64,..." }
POST /api/send/text

Send a text message

Request Body:

{ "sessionId": "session_123", "chatId": "201234567890@c.us", "text": "Hello!" }

Response:

{ "success": true, "messageId": "msg_id_123" }
POST /api/send/media

Send image, video, or document

Request Body:

{ "sessionId": "session_123", "chatId": "201234567890@c.us", "mediaUrl": "https://example.com/image.jpg", "caption": "Check this out!" }

Response:

{ "success": true, "messageId": "msg_id_123" }
POST /api/send/voice

Send a voice message

Request Body:

{ "sessionId": "session_123", "chatId": "201234567890@c.us", "voiceUrl": "https://example.com/voice.ogg" }

Response:

{ "success": true, "messageId": "msg_id_123" }
POST /api/send/poll

Send a poll message

Request Body:

{ "sessionId": "session_123", "chatId": "201234567890@c.us", "pollName": "How are you?", "options": ["Great", "Good", "Not bad"], "allowMultipleAnswers": false }

Response:

{ "success": true, "messageId": "msg_id_123" }
POST /api/send/link

Send a link with preview

Request Body:

{ "sessionId": "session_123", "chatId": "201234567890@c.us", "url": "https://example.com", "text": "Check this website!" }

Response:

{ "success": true, "messageId": "msg_id_123" }
POST /api/send/reaction

React to a message with emoji

Request Body:

{ "sessionId": "session_123", "messageId": "msg_id_here", "emoji": "👍" }

Response:

{ "success": true }
POST /api/check-number

Check if a number is registered on WhatsApp

Request Body:

{ "sessionId": "session_123", "phoneNumber": "201234567890" }

Response:

{ "registered": true, "phoneNumber": "201234567890" }
POST /api/sessions/:id/presence

Set presence status (online/offline)

Request Body:

{ "presence": "available" }

Values: "available" or "unavailable"

Response:

{ "success": true, "presence": "available" }
GET /api/sessions/:id/chats

Get all chats for a session

Response:

{ "chats": [{ "id": "201234567890@c.us", "name": "John Doe", "isGroup": false, "unreadCount": 0 }] }
GET /api/sessions/:id/chats/:chatId/messages?limit=50

Get messages from a specific chat

Response:

{ "messages": [{ "id": "msg_123", "body": "Hello!", "from": "201234567890@c.us", "timestamp": 1234567890 }] }
GET /api/sessions/:id/contacts/:contactId

Get contact information

Response:

{ "id": "201234567890@c.us", "name": "John Doe", "number": "201234567890", "isMyContact": true }
POST /api/webhooks

Create a new webhook

Request Body:

{ "sessionId": "session_123", "url": "https://your-server.com/webhook", "events": ["message"] }

Response:

{ "success": true, "webhookId": 1 }
GET /api/webhooks

List all webhooks

Response:

{ "webhooks": [{ "id": 1, "session_id": "session_123", "url": "https://your-server.com/webhook" }] }
DELETE /api/webhooks/:id

Delete a webhook

Response:

{ "success": true }
GET /api/webhook-config/:sessionId

Get webhook configuration for a session

Response:

{ "session_id": "session_123", "save_to_appwrite": 1, "save_to_local": 1, "appwrite_enabled": 1, "events": ["message"] }
PUT /api/webhook-config/:sessionId

Update webhook configuration

Request Body:

{ "save_to_appwrite": 1, "save_to_local": 1, "appwrite_enabled": 1, "events": ["message", "message_reaction"] }

Response:

{ "success": true }
GET /api/messages?limit=100&offset=0

Get local messages from database

Response:

{ "messages": [{ "id": 1, "from_number": "201234567890", "body": "Hello!", "timestamp": 1234567890 }] }

Phone Number Format

Always use the format: COUNTRYCODE+NUMBER@c.us (without the + symbol)

Examples:

  • Egypt: 201234567890@c.us
  • Saudi: 966512345678@c.us
  • USA: 11234567890@c.us