Developer API Platform
Integrate with Absolute Ease
The Rasayily API is built by developers, for developers. Whether you are building a custom CRM, an ERP system, or an e-commerce backend, our WhatsApp API integration gives you the endpoints you need to send messages, manage webhooks, and automate communication.
View API DocumentationFast Integration
Ready-to-use code snippets in PHP, Node.js, Python, and cURL to get you started in minutes.
Secure & Reliable
Authentication via Bearer Tokens with complete end-to-end data encryption and high uptime.
Real-time Webhooks
Receive instant event payloads for message status (sent, delivered, read) and incoming chats.
High Performance Architecture & Mechanism
Fast Background Processing
Requests are instantly logged and processed in a background queue, ensuring ultra-fast API response times and preventing connection timeouts.
Smart Channel Routing
High flexibility to specify the channel (WhatsApp or SMS) or force a specific provider code. Omitting them falls back to your smart default settings.
Flexible Attachments
Send media the way that suits you best: via external URLs, Base64 encoded strings, or direct Multipart file uploads.
Send Instant Message
Our API uses standard RESTful architecture. No complex XML, just straightforward endpoints for instant delivery.
Get API Key
curl -X POST "https://api.rasayily.com/v1/messages/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+966500000000",
"type": "text",
"text": { "body": "Hello from Rasayily API!" }
}'
$response = Http::withToken('YOUR_API_KEY')
->post('https://api.rasayily.com/v1/messages/send', [
'to' => '+966500000000',
'type' => 'text',
'text' => ['body' => 'Hello from Rasayily API!']
]);
axios.post('https://api.rasayily.com/v1/messages/send', {
to: '+966500000000',
type: 'text',
text: { body: 'Hello from Rasayily API!' }
}, {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
import requests
requests.post('https://api.rasayily.com/v1/messages/send',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'to': '+966500000000',
'type': 'text',
'text': {'body': 'Hello from Rasayily API!'}
})
curl -X POST "https://api.rasayily.com/v1/messages/schedule" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+966500000000",
"type": "text",
"text": { "body": "Happy Birthday! 🎁" },
"schedule_at": "2026-12-31T23:59:00Z"
}'
$response = Http::withToken('YOUR_API_KEY')
->post('https://api.rasayily.com/v1/messages/schedule', [
'to' => '+966500000000',
'type' => 'text',
'text' => ['body' => 'Happy Birthday! 🎁'],
'schedule_at' => '2026-12-31T23:59:00Z'
]);
axios.post('https://api.rasayily.com/v1/messages/schedule', {
to: '+966500000000',
type: 'text',
text: { body: 'Happy Birthday! 🎁' },
schedule_at: '2026-12-31T23:59:00Z'
}, { headers: { 'Authorization': 'Bearer YOUR_API_KEY' }});
import requests
requests.post('https://api.rasayily.com/v1/messages/schedule',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'to': '+966500000000',
'type': 'text',
'text': {'body': 'Happy Birthday! 🎁'},
'schedule_at': '2026-12-31T23:59:00Z'
})
Smart Message Scheduling
No need to build complex Cron Jobs on your servers. Just pass the `schedule_at` parameter, and our engine will precisely deliver the message at the right moment.
- Appointment Reminders
- Birthday Greetings
- Programmed Sale Campaigns
Receive Instant Webhooks
Get real-time event payloads (incoming messages & delivery statuses) pushed directly to your server. Webhooks are secured with HMAC signatures to guarantee authenticity.
Read Full Docs
{
"event": "incoming_message",
"timestamp": "2026-06-22T14:00:00+00:00",
"data": {
"sender_phone": "966501234567",
"sender_name": "أحمد",
"message_body": "مرحباً",
"message_type": "text",
"message_id": "wamid.HBgL...",
"channel": "whatsapp"
}
}
Route::post('/webhook/incoming_message', function (Request $request) {
// 1. Verify Signature
$signature = $request->header('X-Webhook-Signature');
$expected = 'sha256=' . hash_hmac('sha256', $request->getContent(), 'YOUR_SECRET');
if (!hash_equals($expected, $signature)) abort(401);
// 2. Process Payload
$data = $request->input('data');
Log::info("Received message from: " . $data['sender_phone']);
return response()->json(['status' => 'success']);
});
app.post('/webhook/incoming_message', express.json(), (req, res) => {
// 1. Verify Signature
const signature = req.headers['x-webhook-signature'];
const hmac = crypto.createHmac('sha256', 'YOUR_SECRET');
const expected = 'sha256=' + hmac.update(JSON.stringify(req.body)).digest('hex');
if (signature !== expected) return res.status(401).send('Unauthorized');
// 2. Process Payload
console.log("Received message from:", req.body.data.sender_phone);
res.json({ status: 'success' });
});