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 Documentation

Fast 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' });
});