PHPackages                             ashrafcodes/wasenderapi-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. ashrafcodes/wasenderapi-laravel

ActiveLibrary[API Development](/categories/api)

ashrafcodes/wasenderapi-laravel
===============================

Laravel package for WasenderAPI WhatsApp sessions, messages, contacts, groups, channels, uploads, and webhooks.

v1.1.0(2w ago)020MITPHPPHP ^8.1

Since May 21Pushed 2w agoCompare

[ Source](https://github.com/AshrafCodes/wasenderapi-laravel)[ Packagist](https://packagist.org/packages/ashrafcodes/wasenderapi-laravel)[ RSS](/packages/ashrafcodes-wasenderapi-laravel/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (6)Versions (3)Used By (0)

WasenderAPI Laravel Package
===========================

[](#wasenderapi-laravel-package)

Laravel package for [WasenderAPI](https://wasenderapi.com/api-docs), built to help you manage WhatsApp sessions, send messages, handle media, work with contacts, groups, channels, and receive webhooks from Laravel.

---

العربية
-------

[](#العربية)

### نبذة

[](#نبذة)

هذه الحزمة توفر واجهة Laravel سهلة للتعامل مع WasenderAPI بدل كتابة طلبات HTTP يدويًا في كل مشروع. بعد تثبيتها يمكنك استخدام `Facade` جاهز مثل:

```
use AshrafCodes\WasenderApi\Facades\WasenderApi;

WasenderApi::messages()->text('+1234567890', 'مرحبا من Laravel');
```

### المتطلبات

[](#المتطلبات)

- PHP 8.1 أو أحدث
- Laravel 10 أو 11 أو 12 أو 13
- Composer
- حساب WasenderAPI
- `Personal Access Token` لإدارة الجلسات
- `Session API Key` لإرسال الرسائل والتعامل مع الجلسة

### التثبيت من GitHub

[](#التثبيت-من-github)

ثبت الحزمة:

```
composer require ashrafcodes/wasenderapi-laravel:^1.1.0
```

أو:

```
composer require ashrafcodes/wasenderapi-laravel:dev-main
```

بعد التثبيت، انشر ملف الإعدادات:

```
php artisan vendor:publish --tag=wasenderapi-config
```

### إعداد ملف `.env`

[](#إعداد-ملف-env)

أضف القيم التالية داخل مشروع Laravel:

```
WASENDERAPI_BASE_URL=https://www.wasenderapi.com/api
WASENDERAPI_PERSONAL_ACCESS_TOKEN=your_personal_access_token
WASENDERAPI_API_KEY=your_session_api_key
WASENDERAPI_WEBHOOK_SECRET=your_webhook_secret
```

### الفرق بين المفاتيح

[](#الفرق-بين-المفاتيح)

- `WASENDERAPI_PERSONAL_ACCESS_TOKEN`: يستخدم لإدارة الجلسات مثل إنشاء جلسة، عرض الجلسات، إعادة تشغيل جلسة، حذف جلسة، وتجديد API key.
- `WASENDERAPI_API_KEY`: يستخدم لعمليات الجلسة نفسها مثل إرسال الرسائل، حالة الجلسة، جهات الاتصال، المجموعات، والقنوات.

الحزمة تختار المفتاح المناسب تلقائيًا في أغلب الطرق.

### إرسال رسالة نصية

[](#إرسال-رسالة-نصية)

```
use AshrafCodes\WasenderApi\Facades\WasenderApi;

WasenderApi::messages()->text('+1234567890', 'مرحبا من Laravel');
```

### إرسال صورة

[](#إرسال-صورة)

```
WasenderApi::messages()->image(
    to: '+1234567890',
    imageUrl: 'https://example.com/image.jpg',
    text: 'صورة مع تعليق'
);
```

### إرسال فيديو

[](#إرسال-فيديو)

```
WasenderApi::messages()->video(
    to: '+1234567890',
    videoUrl: 'https://example.com/video.mp4',
    text: 'فيديو جديد'
);
```

### إرسال ملف

[](#إرسال-ملف)

```
WasenderApi::messages()->document(
    to: '+1234567890',
    documentUrl: 'https://example.com/report.pdf',
    text: 'التقرير',
    fileName: 'report.pdf'
);
```

### إرسال موقع

[](#إرسال-موقع)

```
WasenderApi::messages()->location(
    to: '+1234567890',
    latitude: 37.7749,
    longitude: -122.4194,
    name: 'Company HQ',
    address: 'San Francisco'
);
```

### إرسال Poll

[](#إرسال-poll)

```
WasenderApi::messages()->poll(
    to: '+1234567890',
    question: 'ما اللون المفضل؟',
    options: ['Blue', 'Green', 'Red'],
    multiSelect: false
);
```

### أنواع الرسائل المدعومة

[](#أنواع-الرسائل-المدعومة)

- `text($to, $text, $extra = [])`
- `image($to, $imageUrl, $text = null, $extra = [])`
- `video($to, $videoUrl, $text = null, $extra = [])`
- `document($to, $documentUrl, $text = null, $fileName = null, $extra = [])`
- `audio($to, $audioUrl, $extra = [])`
- `sticker($to, $stickerUrl, $extra = [])`
- `contactCard($to, $contact, $extra = [])`
- `location($to, $latitude, $longitude, $name = null, $address = null, $extra = [])`
- `poll($to, $question, $options, $multiSelect = false, $extra = [])`
- `quoted($to, $text, $quoted, $extra = [])`
- `withMentions($to, $text, $mentions, $extra = [])`
- `viewOnce($to, $media, $extra = [])`

### إدارة الرسائل

[](#إدارة-الرسائل)

```
WasenderApi::messages()->info('MESSAGE_ID');
WasenderApi::messages()->edit('MESSAGE_ID', 'النص الجديد');
WasenderApi::messages()->delete('MESSAGE_ID');
WasenderApi::messages()->resend(100000);

WasenderApi::messages()->markAsRead([
    'id' => 'MESSAGE_ID',
    'remoteJid' => '123@s.whatsapp.net',
    'fromMe' => false,
]);
```

### رفع الوسائط وفك تشفيرها

[](#رفع-الوسائط-وفك-تشفيرها)

```
WasenderApi::messages()->uploadBase64(
    base64: 'data:image/png;base64,iVBORw0KGgo...'
);

WasenderApi::messages()->uploadBinary(
    path: storage_path('app/photo.jpg'),
    mimetype: 'image/jpeg'
);

WasenderApi::messages()->decryptMedia($payload['data']);
```

### إدارة الجلسات

[](#إدارة-الجلسات)

```
WasenderApi::sessions()->all();

WasenderApi::sessions()->create([
    'name' => 'Main WhatsApp',
    'webhook_url' => 'https://your-app.com/wasenderapi/webhook',
]);

WasenderApi::sessions()->get(1);
WasenderApi::sessions()->update(1, ['name' => 'Sales']);
WasenderApi::sessions()->connect(1);
WasenderApi::sessions()->qrCode(1);
WasenderApi::sessions()->restart(1);
WasenderApi::sessions()->disconnect(1);
WasenderApi::sessions()->delete(1);
WasenderApi::sessions()->messageLogs(1, ['page' => 1]);
WasenderApi::sessions()->logs(1);
WasenderApi::sessions()->regenerateApiKey(1);
```

عمليات جلسة API key:

```
WasenderApi::sessions()->status();
WasenderApi::sessions()->user();
WasenderApi::sessions()->isOnWhatsApp('+1234567890');
WasenderApi::sessions()->sendPresenceUpdate('123@s.whatsapp.net', 'typing');
```

### جهات الاتصال

[](#جهات-الاتصال)

```
WasenderApi::contacts()->all();
WasenderApi::contacts()->get('+1234567890');
WasenderApi::contacts()->picture('+1234567890');
WasenderApi::contacts()->block('+1234567890');
WasenderApi::contacts()->unblock('+1234567890');

WasenderApi::contacts()->createOrUpdate([
    'phone' => '+1234567890',
    'name' => 'Customer',
]);

WasenderApi::contacts()->lidFromPhoneNumber('+1234567890');
WasenderApi::contacts()->phoneNumberFromLid('lid-value');
```

### المجموعات

[](#المجموعات)

```
WasenderApi::groups()->create('Team', ['+1234567890', '+1987654321']);
WasenderApi::groups()->all();
WasenderApi::groups()->metadata('120363xxxx@g.us');
WasenderApi::groups()->participants('120363xxxx@g.us');
WasenderApi::groups()->sendMessage('120363xxxx@g.us', 'رسالة للمجموعة');
WasenderApi::groups()->addParticipants('120363xxxx@g.us', ['+1234567890']);
WasenderApi::groups()->removeParticipants('120363xxxx@g.us', ['+1234567890']);
WasenderApi::groups()->updateParticipants('120363xxxx@g.us', ['+1234567890'], 'promote');
WasenderApi::groups()->picture('120363xxxx@g.us');
WasenderApi::groups()->inviteLink('120363xxxx@g.us');
WasenderApi::groups()->inviteInfo('INVITE_CODE');
WasenderApi::groups()->acceptInvite('INVITE_CODE');
WasenderApi::groups()->leave('120363xxxx@g.us');
```

### القنوات

[](#القنوات)

```
WasenderApi::channels()->sendMessage('120363xxxx@newsletter', 'رسالة للقناة');

WasenderApi::channels()->send([
    'to' => '120363xxxx@newsletter',
    'text' => 'رسالة مخصصة',
]);
```

### الويبهوكس

[](#الويبهوكس)

الحزمة تضيف مسارًا افتراضيًا:

```
POST /wasenderapi/webhook

```

عند وصول webhook صحيح، تطلق الحزمة event باسم `WasenderWebhookReceived`:

```
use AshrafCodes\WasenderApi\Events\WasenderWebhookReceived;
use Illuminate\Support\Facades\Event;

Event::listen(WasenderWebhookReceived::class, function (WasenderWebhookReceived $event) {
    logger()->info('Wasender event received', [
        'event' => $event->event,
        'data' => $event->data,
    ]);
});
```

لتغيير مسار الويبهوك:

```
WASENDERAPI_WEBHOOK_ROUTE_PATH=api/wasender/webhook
```

لتعطيل المسار الافتراضي وبناء controller خاص بك:

```
WASENDERAPI_WEBHOOK_ROUTE_ENABLED=false
```

### استخدام endpoint غير موجود كطريقة جاهزة

[](#استخدام-endpoint-غير-موجود-كطريقة-جاهزة)

```
WasenderApi::get('status');

WasenderApi::post('send-message', [
    'to' => '+1234567890',
    'text' => 'رسالة عامة',
]);

WasenderApi::put('contacts', [
    'phone' => '+1234567890',
    'name' => 'Ali',
]);

WasenderApi::delete('messages/MESSAGE_ID');
```

### التعامل مع الأخطاء

[](#التعامل-مع-الأخطاء)

افتراضيًا، الحزمة ترمي `WasenderApiException` عند فشل الطلب:

```
use AshrafCodes\WasenderApi\Exceptions\WasenderApiException;

try {
    WasenderApi::messages()->text('+1234567890', 'Hello');
} catch (WasenderApiException $exception) {
    report($exception);
}
```

لتعطيل رمي الاستثناءات:

```
WASENDERAPI_THROW=false
```

لإرجاع headers وحالة HTTP داخل الرد:

```
WASENDERAPI_INCLUDE_RESPONSE_HEADERS=true
```

### مشاكل شائعة

[](#مشاكل-شائعة)

إذا أردت إزالة الحزمة من مشروع Laravel، لا تكتب رقم الإصدار مع أمر الإزالة:

```
composer remove ashrafcodes/wasenderapi-laravel
```

إذا ظهر خطأ أن Composer وجد `v1.0.0` فقط ولم يجد `^1.1`، فهذا يعني أن مستودع GitHub لا يحتوي tag باسم `v1.1.0` أو أحدث. أنشئ tag من مستودع الحزمة ثم ارفعه:

```
git tag v1.1.0
git push origin v1.1.0
```

بعدها ثبّت النسخة المستقرة:

```
composer require ashrafcodes/wasenderapi-laravel:^1.1 -W
```

إذا أردت استخدام آخر كود من الفرع `main` بدون tag، ثبّت نسخة التطوير:

```
composer require ashrafcodes/wasenderapi-laravel:dev-main -W
```

إذا كان مشروعك يستخدم Laravel/Illuminate أحدث من المدعوم في `v1.0.0`، لا تثبت `^1.0`؛ استخدم `dev-main` أو أنشئ tag جديد مثل `v1.1.0`.

إذا كان Composer يستخدم cache قديمًا:

```
composer clear-cache
```

إذا لم يجد Composer الحزمة، تأكد من تعريف repository:

```
composer config repositories.wasenderapi-laravel vcs https://github.com/AshrafCodes/wasenderapi-laravel.git
```

### تشغيل الاختبارات

[](#تشغيل-الاختبارات)

```
composer install
vendor/bin/phpunit
```

---

English
-------

[](#english)

### Overview

[](#overview)

This package provides a Laravel-friendly wrapper for WasenderAPI. It lets you manage WhatsApp sessions, send messages, upload and decrypt media, work with contacts, groups, channels, and receive webhook events without writing raw HTTP requests in every project.

Basic usage:

```
use AshrafCodes\WasenderApi\Facades\WasenderApi;

WasenderApi::messages()->text('+1234567890', 'Hello from Laravel');
```

### Requirements

[](#requirements)

- PHP 8.1 or higher
- Laravel 10, 11, 12, or 13
- Composer
- WasenderAPI account
- `Personal Access Token` for account/session management
- `Session API Key` for messaging and session-level operations

### Installation From GitHub

[](#installation-from-github)

Install Packagist:

```
composer require ashrafcodes/wasenderapi-laravel:^1.1.0
```

Or:

```
composer require ashrafcodes/wasenderapi-laravel:dev-main
```

Publish the configuration file:

```
php artisan vendor:publish --tag=wasenderapi-config
```

### Environment Configuration

[](#environment-configuration)

Add these values to your Laravel `.env` file:

```
WASENDERAPI_BASE_URL=https://www.wasenderapi.com/api
WASENDERAPI_PERSONAL_ACCESS_TOKEN=your_personal_access_token
WASENDERAPI_API_KEY=your_session_api_key
WASENDERAPI_WEBHOOK_SECRET=your_webhook_secret
```

### Token Types

[](#token-types)

- `WASENDERAPI_PERSONAL_ACCESS_TOKEN`: Used for account-level session management, such as creating, listing, restarting, deleting sessions, and regenerating API keys.
- `WASENDERAPI_API_KEY`: Used for session-level actions, such as sending messages, checking status, contacts, groups, and channels.

The package automatically uses the proper token for the built-in methods.

### Send a Text Message

[](#send-a-text-message)

```
use AshrafCodes\WasenderApi\Facades\WasenderApi;

WasenderApi::messages()->text('+1234567890', 'Hello from Laravel');
```

### Send an Image

[](#send-an-image)

```
WasenderApi::messages()->image(
    to: '+1234567890',
    imageUrl: 'https://example.com/image.jpg',
    text: 'Image caption'
);
```

### Send a Video

[](#send-a-video)

```
WasenderApi::messages()->video(
    to: '+1234567890',
    videoUrl: 'https://example.com/video.mp4',
    text: 'New video'
);
```

### Send a Document

[](#send-a-document)

```
WasenderApi::messages()->document(
    to: '+1234567890',
    documentUrl: 'https://example.com/report.pdf',
    text: 'Report file',
    fileName: 'report.pdf'
);
```

### Send a Location

[](#send-a-location)

```
WasenderApi::messages()->location(
    to: '+1234567890',
    latitude: 37.7749,
    longitude: -122.4194,
    name: 'Company HQ',
    address: 'San Francisco'
);
```

### Send a Poll

[](#send-a-poll)

```
WasenderApi::messages()->poll(
    to: '+1234567890',
    question: 'What is your favorite color?',
    options: ['Blue', 'Green', 'Red'],
    multiSelect: false
);
```

### Supported Message Methods

[](#supported-message-methods)

- `text($to, $text, $extra = [])`
- `image($to, $imageUrl, $text = null, $extra = [])`
- `video($to, $videoUrl, $text = null, $extra = [])`
- `document($to, $documentUrl, $text = null, $fileName = null, $extra = [])`
- `audio($to, $audioUrl, $extra = [])`
- `sticker($to, $stickerUrl, $extra = [])`
- `contactCard($to, $contact, $extra = [])`
- `location($to, $latitude, $longitude, $name = null, $address = null, $extra = [])`
- `poll($to, $question, $options, $multiSelect = false, $extra = [])`
- `quoted($to, $text, $quoted, $extra = [])`
- `withMentions($to, $text, $mentions, $extra = [])`
- `viewOnce($to, $media, $extra = [])`

### Message Management

[](#message-management)

```
WasenderApi::messages()->info('MESSAGE_ID');
WasenderApi::messages()->edit('MESSAGE_ID', 'Updated text');
WasenderApi::messages()->delete('MESSAGE_ID');
WasenderApi::messages()->resend(100000);

WasenderApi::messages()->markAsRead([
    'id' => 'MESSAGE_ID',
    'remoteJid' => '123@s.whatsapp.net',
    'fromMe' => false,
]);
```

### Media Upload and Decryption

[](#media-upload-and-decryption)

```
WasenderApi::messages()->uploadBase64(
    base64: 'data:image/png;base64,iVBORw0KGgo...'
);

WasenderApi::messages()->uploadBinary(
    path: storage_path('app/photo.jpg'),
    mimetype: 'image/jpeg'
);

WasenderApi::messages()->decryptMedia($payload['data']);
```

### Session Management

[](#session-management)

```
WasenderApi::sessions()->all();

WasenderApi::sessions()->create([
    'name' => 'Main WhatsApp',
    'webhook_url' => 'https://your-app.com/wasenderapi/webhook',
]);

WasenderApi::sessions()->get(1);
WasenderApi::sessions()->update(1, ['name' => 'Sales']);
WasenderApi::sessions()->connect(1);
WasenderApi::sessions()->qrCode(1);
WasenderApi::sessions()->restart(1);
WasenderApi::sessions()->disconnect(1);
WasenderApi::sessions()->delete(1);
WasenderApi::sessions()->messageLogs(1, ['page' => 1]);
WasenderApi::sessions()->logs(1);
WasenderApi::sessions()->regenerateApiKey(1);
```

Session API key methods:

```
WasenderApi::sessions()->status();
WasenderApi::sessions()->user();
WasenderApi::sessions()->isOnWhatsApp('+1234567890');
WasenderApi::sessions()->sendPresenceUpdate('123@s.whatsapp.net', 'typing');
```

### Contacts

[](#contacts)

```
WasenderApi::contacts()->all();
WasenderApi::contacts()->get('+1234567890');
WasenderApi::contacts()->picture('+1234567890');
WasenderApi::contacts()->block('+1234567890');
WasenderApi::contacts()->unblock('+1234567890');

WasenderApi::contacts()->createOrUpdate([
    'phone' => '+1234567890',
    'name' => 'Customer',
]);

WasenderApi::contacts()->lidFromPhoneNumber('+1234567890');
WasenderApi::contacts()->phoneNumberFromLid('lid-value');
```

### Groups

[](#groups)

```
WasenderApi::groups()->create('Team', ['+1234567890', '+1987654321']);
WasenderApi::groups()->all();
WasenderApi::groups()->metadata('120363xxxx@g.us');
WasenderApi::groups()->participants('120363xxxx@g.us');
WasenderApi::groups()->sendMessage('120363xxxx@g.us', 'Group message');
WasenderApi::groups()->addParticipants('120363xxxx@g.us', ['+1234567890']);
WasenderApi::groups()->removeParticipants('120363xxxx@g.us', ['+1234567890']);
WasenderApi::groups()->updateParticipants('120363xxxx@g.us', ['+1234567890'], 'promote');
WasenderApi::groups()->picture('120363xxxx@g.us');
WasenderApi::groups()->inviteLink('120363xxxx@g.us');
WasenderApi::groups()->inviteInfo('INVITE_CODE');
WasenderApi::groups()->acceptInvite('INVITE_CODE');
WasenderApi::groups()->leave('120363xxxx@g.us');
```

### Channels

[](#channels)

```
WasenderApi::channels()->sendMessage('120363xxxx@newsletter', 'Channel message');

WasenderApi::channels()->send([
    'to' => '120363xxxx@newsletter',
    'text' => 'Custom channel message',
]);
```

### Webhooks

[](#webhooks)

The package registers this default webhook endpoint:

```
POST /wasenderapi/webhook

```

When a valid webhook is received, the package dispatches `WasenderWebhookReceived`:

```
use AshrafCodes\WasenderApi\Events\WasenderWebhookReceived;
use Illuminate\Support\Facades\Event;

Event::listen(WasenderWebhookReceived::class, function (WasenderWebhookReceived $event) {
    logger()->info('Wasender event received', [
        'event' => $event->event,
        'data' => $event->data,
    ]);
});
```

To change the webhook route:

```
WASENDERAPI_WEBHOOK_ROUTE_PATH=api/wasender/webhook
```

To disable the default route and use your own controller:

```
WASENDERAPI_WEBHOOK_ROUTE_ENABLED=false
```

### Calling Custom Endpoints

[](#calling-custom-endpoints)

If WasenderAPI adds an endpoint that does not have a dedicated method yet, use the generic HTTP helpers:

```
WasenderApi::get('status');

WasenderApi::post('send-message', [
    'to' => '+1234567890',
    'text' => 'Generic message',
]);

WasenderApi::put('contacts', [
    'phone' => '+1234567890',
    'name' => 'Ali',
]);

WasenderApi::delete('messages/MESSAGE_ID');
```

### Error Handling

[](#error-handling)

By default, failed requests throw `WasenderApiException`:

```
use AshrafCodes\WasenderApi\Exceptions\WasenderApiException;

try {
    WasenderApi::messages()->text('+1234567890', 'Hello');
} catch (WasenderApiException $exception) {
    report($exception);
}
```

To disable exceptions:

```
WASENDERAPI_THROW=false
```

To include HTTP status and response headers in the returned array:

```
WASENDERAPI_INCLUDE_RESPONSE_HEADERS=true
```

### Troubleshooting

[](#troubleshooting)

To remove the package from a Laravel project, do not include a version constraint:

```
composer remove ashrafcodes/wasenderapi-laravel
```

If Composer says it found only `v1.0.0` and cannot install `^1.1`, your GitHub repository does not have a `v1.1.0` or newer tag yet. Create and push the tag from the package repository:

```
git tag v1.1.0
git push origin v1.1.0
```

Then install the stable version:

```
composer require ashrafcodes/wasenderapi-laravel:^1.1 -W
```

If you want to use the latest code from the `main` branch without a tag, install the development branch:

```
composer require ashrafcodes/wasenderapi-laravel:dev-main -W
```

If your project uses a Laravel/Illuminate version newer than what `v1.0.0` supports, do not install `^1.0`; use `dev-main` or create a newer tag such as `v1.1.0`.

If Composer is using stale package metadata:

```
composer clear-cache
```

If Composer cannot find the package, make sure the GitHub repository is registered:

```
composer config repositories.wasenderapi-laravel vcs https://github.com/AshrafCodes/wasenderapi-laravel.git
```

### Testing

[](#testing)

```
composer install
vendor/bin/phpunit
```

---

Official WasenderAPI Documentation
----------------------------------

[](#official-wasenderapi-documentation)

- [API Docs](https://wasenderapi.com/api-docs)
- [Laravel SDK Docs](https://wasenderapi.com/api-docs/developer-sdks/official-sdks-nodejs-python-laravel)
- [Authentication](https://wasenderapi.com/api-docs/authentication/how-to-authenticate-api-requests-using-personal-access-token)
- [Webhook Setup](https://wasenderapi.com/api-docs/webhooks/webhook-setup)

License
-------

[](#license)

MIT

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance96

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

19d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/412cbca0c4f636a74fff4da37ce643a2fef5596af3b0e1c43da89f0ac68f89b3?d=identicon)[AshrafCodes](/maintainers/AshrafCodes)

---

Top Contributors

[![249Creative](https://avatars.githubusercontent.com/u/157656782?v=4)](https://github.com/249Creative "249Creative (11 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ashrafcodes-wasenderapi-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/ashrafcodes-wasenderapi-laravel/health.svg)](https://phpackages.com/packages/ashrafcodes-wasenderapi-laravel)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

76318.2M110](/packages/laravel-mcp)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

815320.5k3](/packages/defstudio-telegraph)[api-platform/laravel

API Platform support for Laravel

59156.3k10](/packages/api-platform-laravel)[illuminate/auth

The Illuminate Auth package.

9327.9M1.2k](/packages/illuminate-auth)[spatie/laravel-export

Create a static site bundle from a Laravel app

670139.5k6](/packages/spatie-laravel-export)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
