PHPackages                             yannelli/laravel-plaud - 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. [Image &amp; Media](/categories/media)
4. /
5. yannelli/laravel-plaud

ActiveLibrary[Image &amp; Media](/categories/media)

yannelli/laravel-plaud
======================

Unofficial Laravel package for the Plaud API - manage recordings, transcriptions, and summaries

v1.1.0(2mo ago)1891↓12.5%MITPHPPHP ^8.3CI passing

Since Nov 23Pushed 2mo agoCompare

[ Source](https://github.com/yannelli/plaud-api-laravel)[ Packagist](https://packagist.org/packages/yannelli/laravel-plaud)[ RSS](/packages/yannelli-laravel-plaud/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (12)Versions (6)Used By (0)

[![Tests](https://github.com/yannelli/plaud-api-laravel/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/yannelli/plaud-api-laravel/actions/workflows/tests.yml)

Laravel Plaud API Package
=========================

[](#laravel-plaud-api-package)

An **unofficial** Laravel package for the Plaud API. This package provides a clean, Laravel-idiomatic interface for managing recordings, transcriptions, and summaries from the Plaud platform.

Features
--------

[](#features)

- ✅ Full authentication support
- ✅ Retrieve and manage recordings
- ✅ Download audio files, transcripts, and summaries
- ✅ Create shareable links
- ✅ Trash, restore, and permanently delete recordings
- ✅ Laravel HTTP client integration
- ✅ Facade support for easy access
- ✅ Type-safe models with PHP 8.3+ typed properties
- ✅ Comprehensive error handling

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

[](#requirements)

- PHP 8.3 or higher
- Laravel 12.x
- Guzzle HTTP client 7.x

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

[](#installation)

Install the package via Composer:

```
composer require yannelli/laravel-plaud
```

### Publish Configuration (Optional)

[](#publish-configuration-optional)

You can publish the configuration file if you want to customize it:

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

This will create a `config/plaud.php` file in your Laravel application.

### Environment Configuration

[](#environment-configuration)

Add your Plaud access token to your `.env` file:

```
PLAUD_ACCESS_TOKEN=your-access-token-here
```

Usage
-----

[](#usage)

### Authentication

[](#authentication)

First, authenticate with the Plaud API to obtain an access token:

```
use Yannelli\LaravelPlaud\Facades\Plaud;

// Authenticate with username and password
$authResponse = Plaud::authenticate('your-username', 'your-password');

// Access token is automatically set in the client
$accessToken = $authResponse->accessToken;
```

### Using Dependency Injection

[](#using-dependency-injection)

You can also use dependency injection instead of the facade:

```
use Yannelli\LaravelPlaud\PlaudService;

class RecordingController extends Controller
{
    public function __construct(
        protected PlaudService $plaud
    ) {}

    public function index()
    {
        $recordings = $this->plaud->getAllRecordings();
        return view('recordings.index', compact('recordings'));
    }
}
```

### Get User Information

[](#get-user-information)

```
use Yannelli\LaravelPlaud\Facades\Plaud;

$user = Plaud::getMyUser();

echo $user->dataUser->email;
echo $user->dataUser->nickname;
```

### Get System Status

[](#get-system-status)

```
$status = Plaud::getStatus();

// Check processing status
if (!empty($status->dataProcessingTranssummAi->filesTrans)) {
    echo "Files are being transcribed...";
}
```

### Retrieve Recordings

[](#retrieve-recordings)

#### Get All Recordings

[](#get-all-recordings)

```
$recordings = Plaud::getAllRecordings();

foreach ($recordings->dataFileList as $recording) {
    echo $recording->filename;
    echo $recording->duration;
    echo $recording->startTime;
}
```

#### Get Recordings with Filters

[](#get-recordings-with-filters)

```
$recordings = Plaud::getRecordingsWithFilter(
    skip: 0,
    limit: 50,
    isTrash: 0,  // 0 = not in trash, 1 = in trash, 2 = all
    sortBy: 'start_time',
    isDesc: true
);
```

#### Get Specific Recordings by ID

[](#get-specific-recordings-by-id)

```
$recordingIds = ['recording-id-1', 'recording-id-2'];
$recordings = Plaud::getSpecificRecordings($recordingIds);
```

### File Tags (Folders)

[](#file-tags-folders)

```
$tags = Plaud::getFileTags();

foreach ($tags->dataFiletagList as $tag) {
    echo $tag->name;
    echo $tag->color;
}
```

### Create Shareable Links

[](#create-shareable-links)

```
use Yannelli\LaravelPlaud\Models\Requests\RequestShareableLinkPermissions;

$permissions = new RequestShareableLinkPermissions(
    isAudio: 1,      // Allow audio sharing
    isTrans: 1,      // Allow transcript sharing
    isAiContent: 1,  // Allow AI content sharing
    isMindmap: 0     // Disable mindmap sharing
);

$shareableLink = Plaud::createShareableLink('recording-id', $permissions);

echo $shareableLink->url; // The shareable URL
```

### Download Files

[](#download-files)

#### Download Audio File

[](#download-audio-file)

```
use Yannelli\LaravelPlaud\Facades\Plaud;
use Illuminate\Support\Facades\Storage;

$recordingId = 'your-recording-id';
$base64Audio = Plaud::downloadAudioFile($recordingId);

// Decode and save to storage
$audioData = base64_decode($base64Audio);
Storage::put('recordings/audio.mp3', $audioData);
```

#### Download Transcript

[](#download-transcript)

```
use Yannelli\LaravelPlaud\Constants\FileTypes;

$recordingId = 'your-recording-id';

// Download as PDF
$base64Transcript = Plaud::downloadTranscriptFile($recordingId, FileTypes::PDF);

// Or download as TXT, DOCX, SRT, or Markdown
$base64Transcript = Plaud::downloadTranscriptFile($recordingId, FileTypes::TXT);

// Save to storage
$transcriptData = base64_decode($base64Transcript);
Storage::put('recordings/transcript.pdf', $transcriptData);
```

#### Download Summary

[](#download-summary)

```
use Yannelli\LaravelPlaud\Constants\FileTypes;

$recordingId = 'your-recording-id';
$base64Summary = Plaud::downloadSummaryFile($recordingId, FileTypes::DOCX);

$summaryData = base64_decode($base64Summary);
Storage::put('recordings/summary.docx', $summaryData);
```

### Manage Recordings

[](#manage-recordings)

#### Move to Trash

[](#move-to-trash)

```
$recordingIds = ['recording-id-1', 'recording-id-2'];
$success = Plaud::trashRecordings($recordingIds);

if ($success) {
    echo "Recordings moved to trash successfully";
}
```

#### Restore from Trash

[](#restore-from-trash)

```
$recordingIds = ['recording-id-1', 'recording-id-2'];
$success = Plaud::untrashRecordings($recordingIds);
```

#### Permanently Delete

[](#permanently-delete)

```
$recordingIds = ['recording-id-1', 'recording-id-2'];
$success = Plaud::permanentlyDeleteRecordings($recordingIds);

if ($success) {
    echo "Recordings permanently deleted";
}
```

Available File Types
--------------------

[](#available-file-types)

The package provides a `FileTypes` constant class with the following supported formats:

```
use Yannelli\LaravelPlaud\Constants\FileTypes;

FileTypes::MP3      // Audio format
FileTypes::WAV      // Audio format
FileTypes::TXT      // Plain text
FileTypes::PDF      // PDF document
FileTypes::DOCX     // Microsoft Word
FileTypes::SRT      // Subtitle format
FileTypes::MARKDOWN // Markdown format
```

Error Handling
--------------

[](#error-handling)

The package throws `PlaudException` for API errors:

```
use Yannelli\LaravelPlaud\Facades\Plaud;
use Yannelli\LaravelPlaud\Exceptions\PlaudException;

try {
    $recordings = Plaud::getAllRecordings();
} catch (PlaudException $e) {
    // Handle API errors
    logger()->error('Plaud API Error: ' . $e->getMessage());

    // Get HTTP status code if available
    $statusCode = $e->getCode();
}
```

Advanced Usage
--------------

[](#advanced-usage)

### Using the Low-Level Client

[](#using-the-low-level-client)

If you need more control, you can use the `PlaudClient` directly:

```
use Yannelli\LaravelPlaud\PlaudClient;

$client = new PlaudClient();
$client->authenticate('username', 'password');

// Make custom API requests
$response = $client->get('/custom/endpoint');
$response = $client->post('/custom/endpoint', ['data' => 'value']);
```

### Accessing the Client from the Service

[](#accessing-the-client-from-the-service)

```
use Yannelli\LaravelPlaud\Facades\Plaud;

$client = Plaud::getClient();
$accessToken = Plaud::getAccessToken();
```

Available Methods
-----------------

[](#available-methods)

### PlaudService Methods

[](#plaudservice-methods)

MethodDescription`authenticate($username, $password)`Authenticate with username and password`getMyUser()`Get current user information`getStatus()`Get API and system status`getAllRecordings()`Get all recordings without filters`getRecordingsWithFilter(...)`Get recordings with custom filters`getSpecificRecordings($ids)`Get specific recordings by IDs`getFileTags()`Get all file tags (folders)`createShareableLink($id, $permissions)`Create a shareable link`downloadAudioFile($id)`Download audio file as base64`downloadTranscriptFile($id, $type)`Download transcript as base64`downloadSummaryFile($id, $type)`Download summary as base64`trashRecordings($ids)`Move recordings to trash`untrashRecordings($ids)`Restore recordings from trash`permanentlyDeleteRecordings($ids)`Permanently delete recordingsTesting
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

Security
--------

[](#security)

If you discover any security-related issues, please email the package maintainer instead of using the issue tracker.

Credits
-------

[](#credits)

- Original .NET library: [JamesStuder/Plaud\_API](https://github.com/JamesStuder/Plaud_API)
- Laravel package maintainer: [Ryan Yannelli](https://ryanyannelli.com)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

Disclaimer
----------

[](#disclaimer)

This is an **unofficial** package and is not affiliated with, maintained, or endorsed by Plaud. Use at your own risk.

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance88

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

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

Total

4

Last Release

60d ago

Major Versions

v0.1.1 → v1.0.02025-12-30

### Community

Maintainers

![](https://www.gravatar.com/avatar/53b64331d4de8c9cef47bc20707ed728c0e900cd2bda4ed7d95359ced8b9adf1?d=identicon)[yannelli](/maintainers/yannelli)

---

Top Contributors

[![yannelli](https://avatars.githubusercontent.com/u/59575788?v=4)](https://github.com/yannelli "yannelli (8 commits)")

---

Tags

laravelaudioTranscriptionrecordingsplaudplaud-api

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/yannelli-laravel-plaud/health.svg)

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

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k96.9M674](/packages/laravel-socialite)[intervention/image-laravel

Laravel Integration of Intervention Image

1536.5M102](/packages/intervention-image-laravel)[tzsk/sms

A robust and unified SMS gateway integration package for Laravel, supporting multiple providers.

320244.3k6](/packages/tzsk-sms)[ralphjsmit/laravel-glide

Auto-magically generate responsive images from static image files.

4719.6k5](/packages/ralphjsmit-laravel-glide)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[truckersmp/steam-socialite

Laravel Socialite provider for Steam OpenID.

1516.7k](/packages/truckersmp-steam-socialite)

PHPackages © 2026

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