WhatsApp Webhooks
Agent-TS is Kapso-first for WhatsApp messaging. It keeps a compatibility webhook for external client testing, but production traffic should use Kapso / Meta webhooks.Endpoints
Compatibility Webhook
POST /api/v1/external/whatsapp
For local testing or temporary bridge scenarios.
Meta Business API Webhook
GET /api/v1/webhooks/whatsapp - Verification
POST /api/v1/webhooks/whatsapp - Message handling
For Meta’s official WhatsApp Business API.
External Client Integration
Text Message Payload
Image Message Payload
Response Format
Kapso-first messaging
Kapso is the supported WhatsApp transport for:- free-text conversations
- interactive list menus
- reply buttons for confirmations and navigation
- WhatsApp Flows for structured data capture and PIN/auth steps
- template messages from internal services when approved by WhatsApp
Meta WhatsApp Business API
Webhook Verification
Meta sends a GET request to verify your webhook:WHATSAPP_VERIFY_TOKEN.
Incoming Message Payload
Meta Developer Console Setup
- Go to Meta for Developers
- Create or select your app
- Add WhatsApp product
- Configure webhook URL:
https://your-domain.com/api/v1/webhooks/whatsapp - Set verify token: Same as
WHATSAPP_VERIFY_TOKEN - Subscribe to
messageswebhook field
Payload Fields Reference
| Field | Type | Required | Description |
|---|---|---|---|
event | string | Yes | Event type (always “message”) |
from | string | Yes | Sender identifier |
phoneE164 | string | Yes | Phone in E.164 format |
message | string | No | Text message content |
messageType | string | No | Message type (text, image, etc.) |
hasMedia | boolean | No | Whether message has media |
media | object | No | Media data (if hasMedia) |
media.data | string | No | Base64 with data URI prefix |
media.mimetype | string | No | MIME type |
media.filename | string | No | Original filename |
media.size | number | No | File size in bytes |
Error Responses
Validation Error
Agent Error
Rate Limited
Health Check
Verify the agent is running:Testing
Test Compatibility Text Message
Test Compatibility Transfer
Security Considerations
Input Sanitization
Input Sanitization
All incoming messages are sanitized to prevent injection attacks.
Rate Limiting
Rate Limiting
30 requests per minute per phone number by default.
Webhook Verification
Webhook Verification
Meta webhooks are verified using the configured verify token.
HTTPS Required
HTTPS Required
Production webhook endpoints must use HTTPS.
Next Steps
Configuration
Environment variable setup
KYC Validation
Image processing details