waapi-laravel maintained by octopusteam
WAAPI Laravel Package

This package provides a simple and expressive API for interacting with the WAAPI (WhatsApp API) service within a Laravel application.
Features
- Send text messages, media, templates, stickers, voice notes, locations, and contacts.
- Fluent and expressive API.
- Automatic webhook route registration.
- New
WebhookReceivedevent for incoming data. - Integration with Webhook.site for easy debugging.
- Artisan command to renew Webhook.site token.
Installation
composer require octopusteam/waapi-laravel
Publish the configuration file:
php artisan vendor:publish --provider="OctopusTeam\Waapi\WaapiServiceProvider"
This will create a config/waapi.php file in your application.
Configuration
Update your .env file with your WAAPI credentials:
WAAPI_APP_URL=https://waapi.octopusteam.net/api/create-message
WAAPI_APP_KEY=your_app_key
WAAPI_AUTH_KEY=your_auth_key
WAAPI_WEBHOOK_SITE_TOKEN=your_webhook_site_token
WAAPI_UPDATE_DEVICE_WEBHOOK=your_device_uuid_for_webhook_update
Usage
Sending Messages
You can send messages using the Waapi facade or by injecting the Waapi class.
use OctopusTeam\Waapi\Facades\Waapi;
// Send a simple text message
Waapi::sendMessage('201xxxxxxxxx', 'Hello, world!');
// Send an OTP with custom message
$otp = Waapi::generateOtp();
Waapi::sendOtp('201xxxxxxxxx', $otp, false, false, ":otp is your verification code.");
// Send Media (File)
Waapi::sendMedia('201xxxxxxxxx', 'Here is your invoice', 'https://example.com/invoice.pdf');
// Send Template
Waapi::sendTemplate('201xxxxxxxxx', 'template_id', [
'variables[{1}]' => 'Value 1',
'variables[{2}]' => 'Value 2'
]);
// Send Sticker
Waapi::sendSticker('201xxxxxxxxx', 'https://example.com/sticker.webp');
// Send Voice Note
Waapi::sendVoice('201xxxxxxxxx', 'https://example.com/voice.mp3');
// Send Location
Waapi::sendLocation('201xxxxxxxxx', '30.0444', '31.2357');
// Send Contact
Waapi::sendContact('201xxxxxxxxx', 'John Doe', '201xxxxxxxxx', 'Octopus Team');
Device Status & QR Code
// Get Device Status
$status = Waapi::getDeviceStatus('device_id');
// Get QR Code
$qr = Waapi::getQrCode('device_id');
Webhook Handling
The package can automatically register a webhook route to handle incoming data from WAAPI. To enable this, ensure the following is in your config/waapi.php:
'webhook' => [
'enabled' => true,
'auto_register' => true,
],
By default, the route is POST /api/webhook/whatsapp.
Events
When a webhook is received, the package fires the OctopusTeam\Waapi\Events\WebhookReceived event. You can listen to this event in your application's EventServiceProvider.
use OctopusTeam\Waapi\Events\WebhookReceived;
protected $listen = [
WebhookReceived::class => [
SendEmailNotification::class,
],
];
The event contains the webhook data in the $data property.
Webhook.site Integration
For development and debugging, you can use the Webhook.site integration to inspect incoming webhook data.
// Get the last 50 requests from Webhook.site
$data = Waapi::getWebhookSiteData(50);
// Get the decoded content from the last 50 requests
$content = Waapi::getWebhookSiteContent(50);
// Get a specific request by its ID
$request = Waapi::getWebhookSiteRequest('request-uuid');
Artisan Command
To renew your webhook.site token automatically, you can run the following Artisan command. This will generate a new token, update your .env file, and update the webhook URL via the WAAPI service.
php artisan waapi:webhook-renew