PHPackages                             abdelhamiderrahmouni/laravel-dailyco - 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. abdelhamiderrahmouni/laravel-dailyco

ActiveLibrary[API Development](/categories/api)

abdelhamiderrahmouni/laravel-dailyco
====================================

\[Unofficial\] Laravel SDK for Daily.co

v0.1.2(4mo ago)010↓86.7%PHPPHP ^8.1|^8.2|^8.3|^8.4

Since Feb 13Pushed 4mo agoCompare

[ Source](https://github.com/abdelhamiderrahmouni/laravel-dailyco)[ Packagist](https://packagist.org/packages/abdelhamiderrahmouni/laravel-dailyco)[ RSS](/packages/abdelhamiderrahmouni-laravel-dailyco/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (5)Versions (5)Used By (0)

Laravel Daily.co SDK
====================

[](#laravel-dailyco-sdk)

 [ ![Total Downloads](https://camo.githubusercontent.com/76aa8246e1b0e003483612464e1fb1d6ef14eb90056f257c345d4fadd1d8ea6b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616264656c68616d696465727261686d6f756e692f6c61726176656c2d6461696c79636f) ](https://packagist.org/packages/abdelhamiderrahmouni/laravel-dailyco) [ ![Latest Stable Version](https://camo.githubusercontent.com/048f93cef47a5121d84a43d250792a9cdd241f472ebe87ed134ba5e977900473/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616264656c68616d696465727261686d6f756e692f6c61726176656c2d6461696c79636f) ](https://packagist.org/packages/abdelhamiderrahmouni/laravel-dailyco) [ ![License](https://camo.githubusercontent.com/f33b2781ab27b82a6ec9237918ff828befa01f4c3e5a66a6e03734d6c5d366cd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f616264656c68616d696465727261686d6f756e692f6c61726176656c2d6461696c79636f) ](https://packagist.org/packages/abdelhamiderrahmouni/laravel-dailyco)

An unofficial Laravel SDK for [Daily.co](https://daily.co)'s REST API. This package provides a clean, expressive interface for interacting with Daily.co video infrastructure from your Laravel application — including support for rooms, meetings, recordings, transcripts, presence, and more.

Requirements
------------

[](#requirements)

- PHP 8.1 or higher
- Laravel 10, 11, or 12

Installation
------------

[](#installation)

Install via Composer:

```
composer require abdelhamiderrahmouni/laravel-dailyco
```

Add your API key to your `.env` file:

```
DAILYCO_API_KEY=your-api-key-here
DAILYCO_DOMAIN=your-domain-here # Optional
```

Optionally publish the configuration file:

```
php artisan vendor:publish --provider="AbdelhamidErrahmouni\LaravelDailyco\ServiceProvider" --tag="config"
```

Usage
-----

[](#usage)

All methods are available via the `Dailyco` facade. You can also inject or instantiate `AbdelhamidErrahmouni\LaravelDailyco\Dailyco` directly if needed.

```
use AbdelhamidErrahmouni\LaravelDailyco\Facades\Dailyco;
```

> All methods return a raw array by default. To receive typed Data Transfer Objects instead, see the [DTO Support](#dto-support) section.

---

### Rooms

[](#rooms)

```
// Get all rooms
Dailyco::rooms();

// Get all rooms with filters
Dailyco::rooms(['limit' => 10, 'starting_after' => 'room-name']);

// Get a specific room
Dailyco::room('room-name');

// Create a room
Dailyco::createRoom([
    'name'    => 'my-room',
    'privacy' => 'public',
]);

// Update a room
Dailyco::updateRoom('room-name', [
    'privacy' => 'private',
]);

// Delete a room
Dailyco::deleteRoom('room-name');

// Get active participants in a room
Dailyco::roomPresence('room-name');

// Send an app message to participants in a room
Dailyco::sendAppMessage('room-name', ['data' => 'hello']);

// Get room session data
Dailyco::roomSessionData('room-name');

// Set room session data
Dailyco::setRoomSessionData('room-name', ['expiryTime' => 3600]);

// Eject all participants from a room
Dailyco::ejectParticipant('room-name');

// Update participant permissions in a room
Dailyco::updateParticipantPermissions('room-name', ['permissions' => [...]]);
```

---

### Meeting Tokens

[](#meeting-tokens)

```
// Create a meeting token
Dailyco::createMeetingToken([
    'properties' => [
        'room_name' => 'my-room',
        'is_owner'  => true,
        'exp'       => now()->addHour()->timestamp,
    ],
]);

// Validate a meeting token
Dailyco::meetingToken('your-token-string');
```

---

### Meetings

[](#meetings)

```
// Get all meetings
Dailyco::meetings();

// Get all meetings with filters
Dailyco::meetings(['room' => 'room-name', 'limit' => 20]);

// Get a specific meeting
Dailyco::meeting('meeting-id');

// Get participants for a meeting
Dailyco::meetingParticipants('meeting-id');
```

---

### Recordings

[](#recordings)

```
// Get all recordings
Dailyco::recordings();

// Get a specific recording
Dailyco::recording('recording-id');

// Delete a recording
Dailyco::deleteRecording('recording-id');

// Get a short-lived access link for a recording
Dailyco::recordingAccessLink('recording-id');

// Get a download link using a share token
Dailyco::recordingDownload('share-token');

// Create a recording composites recipe
Dailyco::createRecordingCompositesRecipe('recording-id', [...]);

// Get composites for a recording
Dailyco::recordingComposites('recording-id');
```

---

### Transcripts

[](#transcripts)

```
// Get all transcripts
Dailyco::transcripts();

// Get a specific transcript
Dailyco::transcript('transcript-id');

// Delete a transcript
Dailyco::deleteTranscript('transcript-id');

// Get a short-lived access link for a transcript
Dailyco::transcriptAccessLink('transcript-id');
```

---

### Presence

[](#presence)

```
// Get near-real-time participant presence data across all rooms
Dailyco::presence();
```

---

### Logs

[](#logs)

```
// Get call logs and metrics
Dailyco::logs();

// Get call logs with filters
Dailyco::logs(['mtgSessionId' => 'session-id']);

// Get REST API request logs
Dailyco::apiLogs();
```

---

### Webhooks

[](#webhooks)

```
// Get all webhooks
Dailyco::webhooks();

// Create a webhook
Dailyco::createWebhook([
    'url'         => 'https://example.com/webhook',
    'event_types' => ['meeting.started', 'meeting.ended'],
]);

// Get a specific webhook
Dailyco::webhook('webhook-id');

// Update a webhook
Dailyco::updateWebhook('webhook-id', ['url' => 'https://example.com/new-webhook']);

// Delete a webhook
Dailyco::deleteWebhook('webhook-id');
```

---

### Domain Configuration

[](#domain-configuration)

```
// Get domain configuration
Dailyco::getDomainConfig();

// Update domain configuration
Dailyco::updateDomainConfig(['hipaa' => true]);
```

---

### Dial-in Configuration

[](#dial-in-configuration)

```
// List all dial-in configurations
Dailyco::listDomainDialinConfigs();

// Create a dial-in configuration
Dailyco::createDomainDialinConfig([...]);

// Get a specific dial-in configuration
Dailyco::domainDialinConfig('config-id');

// Update a dial-in configuration
Dailyco::updateDomainDialinConfig('config-id', [...]);

// Delete a dial-in configuration
Dailyco::deleteDomainDialinConfig('config-id');

// Update pinless call config
Dailyco::pinlessCallUpdate([...]);
```

---

### Phone Numbers

[](#phone-numbers)

```
// List available phone numbers to purchase
Dailyco::listAvailableNumbers();

// Buy a phone number
Dailyco::buyPhoneNumber(['country' => 'US']);

// List purchased phone numbers
Dailyco::purchasedPhoneNumbers();

// Release a purchased phone number
Dailyco::releasePhoneNumber('phone-number-id');
```

---

### Batch Processing

[](#batch-processing)

```
// Get all batch jobs
Dailyco::batchJobs();

// Submit a new batch job
Dailyco::submitBatchJob([...]);

// Get a specific batch job
Dailyco::batchJob('job-id');

// Delete a batch job
Dailyco::deleteBatchJob('job-id');

// Get the output of a batch job
Dailyco::batchJobOutput('job-id');
```

---

DTO Support
-----------

[](#dto-support)

By default, all methods return raw arrays. To receive fully-typed PHP objects instead, chain `withDto()` before your method call. This does not mutate the singleton — every call to `withDto()` returns a fresh proxy instance.

```
use AbdelhamidErrahmouni\LaravelDailyco\Facades\Dailyco;
```

### Available DTOs

[](#available-dtos)

MethodReturn Type`rooms()``Collection``room()``RoomDTO``createRoom()``RoomDTO``updateRoom()``RoomDTO``roomPresence()``Collection``meetings()``Collection``meeting()``MeetingDTO``createMeetingToken()``MeetingTokenDTO``meetingToken()``MeetingTokenDTO``recordings()``Collection``recording()``RecordingDTO``transcripts()``Collection``transcript()``TranscriptDTO``logs()``LogResponseDTO``apiLogs()``Collection`Methods not listed in the table (e.g. `deleteRoom`, `deleteRecording`) return the raw array as usual.

### Examples

[](#examples)

**Single resource:**

```
$room = Dailyco::withDto()->room('my-room');

echo $room->name;                         // string
echo $room->privacy;                      // string
echo $room->createdAt->format('Y-m-d');   // DateTimeImmutable
```

**List of resources:**

```
$rooms = Dailyco::withDto()->rooms(); // Collection

foreach ($rooms as $room) {
    echo "{$room->name} ({$room->privacy})";
}
```

**Meeting with participants:**

```
$meeting = Dailyco::withDto()->meeting('meeting-id');

echo $meeting->room;
echo $meeting->startTime->format('H:i'); // DateTimeImmutable

foreach ($meeting->participants as $participant) {
    echo $participant->userName;
    echo $participant->duration; // seconds
}
```

**Call logs (structured response):**

```
$response = Dailyco::withDto()->logs();

// $response->logs is a Collection
foreach ($response->logs as $log) {
    echo "[{$log->level}] {$log->message}";
}

// $response->metrics is a raw array (complex nested structure)
$metrics = $response->metrics;
```

**API request logs (flat list):**

```
$apiLogs = Dailyco::withDto()->apiLogs(); // Collection

foreach ($apiLogs as $log) {
    echo "{$log->method} {$log->url} → {$log->status}";
}
```

**Presence (flattened by room):**

```
$participants = Dailyco::withDto()->roomPresence('my-room'); // Collection

foreach ($participants as $participant) {
    echo "{$participant->userName} in {$participant->room}";
}
```

---

Handling Errors
---------------

[](#handling-errors)

This package throws typed exceptions for all non-2xx responses.

Status CodeException400 Bad Request`Exceptions\BadRequestException`401 Unauthorized`Exceptions\UnauthorizedException`403 Forbidden`Exceptions\ForbiddenException`404 Not Found`Exceptions\NotFoundException`429 Too Many Requests`Exceptions\TooManyRequestsException`5xx Server Error`Exceptions\ServerErrorException`All exceptions are under the `AbdelhamidErrahmouni\LaravelDailyco\Exceptions` namespace.

```
use AbdelhamidErrahmouni\LaravelDailyco\Exceptions\NotFoundException;
use AbdelhamidErrahmouni\LaravelDailyco\Exceptions\TooManyRequestsException;

try {
    $room = Dailyco::room('non-existent-room');
} catch (NotFoundException $e) {
    // Room does not exist
} catch (TooManyRequestsException $e) {
    // Back off and retry
}
```

---

Credits
-------

[](#credits)

- [Abdelhamid Errahmouni](https://github.com/abdelhamiderrahmouni)
- [All Contributors](https://github.com/abdelhamiderrahmouni/laravel-dailyco/contributors)

Special thanks to [Steadfast Collective](https://github.com/steadfast-collective) for their original package upon which this SDK was built.

Security
--------

[](#security)

If you discover a security vulnerability, please email  directly rather than using the issue tracker.

License
-------

[](#license)

This package is open-sourced software licensed under the [MIT License](LICENSE.md).

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance76

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity45

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 ~1 days

Total

3

Last Release

130d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/745a0575996f5a3dcb6b8e177e5f37e610d83906028a1e99aa2ec3213a281027?d=identicon)[abdelhamiderrahmouni](/maintainers/abdelhamiderrahmouni)

---

Top Contributors

[![abdelhamiderrahmouni](https://avatars.githubusercontent.com/u/26693672?v=4)](https://github.com/abdelhamiderrahmouni "abdelhamiderrahmouni (17 commits)")

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/abdelhamiderrahmouni-laravel-dailyco/health.svg)

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

###  Alternatives

[statamic/cms

The Statamic CMS Core Package

4.8k3.6M985](/packages/statamic-cms)[darkaonline/l5-swagger

OpenApi or Swagger integration to Laravel

3.0k37.6M134](/packages/darkaonline-l5-swagger)[knuckleswtf/scribe

Generate API documentation for humans from your Laravel codebase.✍

2.3k14.2M63](/packages/knuckleswtf-scribe)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

135224.7k7](/packages/statamic-rad-pack-runway)[scriptdevelop/whatsapp-manager

Paquete para manejo de WhatsApp Business API en Laravel

783.8k](/packages/scriptdevelop-whatsapp-manager)[duncanmcclean/statamic-cargo

Comprehensive e-commerce addon for Statamic. Build bespoke e-commerce sites without the complexity.

3416.9k](/packages/duncanmcclean-statamic-cargo)

PHPackages © 2026

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