PHPackages                             laravel-gtm/luma-sdk - 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. laravel-gtm/luma-sdk

ActiveLibrary[API Development](/categories/api)

laravel-gtm/luma-sdk
====================

Laravel-ready PHP SDK for Luma REST APIs.

v0.3.1(2mo ago)04MITPHPPHP ^8.4CI passing

Since Apr 1Pushed 2mo agoCompare

[ Source](https://github.com/laravel-gtm/luma-sdk)[ Packagist](https://packagist.org/packages/laravel-gtm/luma-sdk)[ RSS](/packages/laravel-gtm-luma-sdk/feed)WikiDiscussions main Synced 4w ago

READMEChangelog (6)Dependencies (15)Versions (11)Used By (0)

Luma SDK
========

[](#luma-sdk)

[![Latest Version on Packagist](https://camo.githubusercontent.com/994af374a00d3d07ca357ace63b6aaee19b7e9e1fa1b9b2dab996211816287be/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6c61726176656c2d67746d2f6c756d612d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/laravel-gtm/luma-sdk)[![Tests](https://github.com/laravel-gtm/luma-sdk/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/laravel-gtm/luma-sdk/actions/workflows/tests.yml)[![Total Downloads](https://camo.githubusercontent.com/6db6de21b2dbf34e8e11f5f3ae3ded3edddb30f818f073ceb95445c963c398f3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6c61726176656c2d67746d2f6c756d612d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/laravel-gtm/luma-sdk)[![PHP Version](https://camo.githubusercontent.com/da279286f8855edaa751d985753fd73cebb92dc2223c754953e603107e7c212e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6c61726176656c2d67746d2f6c756d612d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/laravel-gtm/luma-sdk)[![License](https://camo.githubusercontent.com/d0f50c2e4091c4c81aa2261d2b1f8246a56d66f1e629efa7eca05fe63e2d134e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6c61726176656c2d67746d2f6c756d612d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/laravel-gtm/luma-sdk)

Laravel-ready PHP SDK for the [Luma](https://lu.ma) REST API, built with [Saloon](https://docs.saloon.dev).

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

[](#requirements)

- PHP `^8.4`
- Laravel `^11.0 || ^12.0 || ^13.0`

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

[](#installation)

```
composer require laravel-gtm/luma-sdk
```

The package supports Laravel auto-discovery — no manual provider registration needed.

Configuration
-------------

[](#configuration)

Publish the config file:

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

Set your environment variables:

```
LUMA_BASE_URL=https://public-api.luma.com
LUMA_API_TOKEN=your-token
```

Usage
-----

[](#usage)

### Via the Service Container (recommended)

[](#via-the-service-container-recommended)

```
use LaravelGtm\LumaSdk\LumaSdk;

$luma = app(LumaSdk::class);
```

### Standalone

[](#standalone)

```
use LaravelGtm\LumaSdk\LumaSdk;

$luma = LumaSdk::make(
    baseUrl: 'https://public-api.luma.com',
    token: 'your-token',
);
```

### Core Methods

[](#core-methods)

```
$user = $luma->getSelf();           // Get authenticated user
$entity = $luma->lookupEntity($slug); // Look up entity by slug
```

Laravel Boost Skills
--------------------

[](#laravel-boost-skills)

This package includes a Laravel Boost skill to improve AI-assisted development with the SDK:

- `luma-sdk-development`

### Install the skill in your Laravel app

[](#install-the-skill-in-your-laravel-app)

Laravel Boost can automatically install third-party package skills from this package.

Install Boost (if you do not already have it), then run the installer:

```
composer require laravel/boost --dev
php artisan boost:install
```

When prompted, enable **Skills** for your agent. Boost will discover:

- `resources/boost/skills/luma-sdk-development/SKILL.md`

If Boost is already installed in your app, run:

```
php artisan boost:update
```

### Use the skill

[](#use-the-skill)

In Cursor, ask for the `luma-sdk-development` skill when generating or refactoring Luma API code. The skill includes examples for:

- Events, guests, hosts, ticket types, and coupons
- Calendars, tags, people import, and lookup
- Memberships, webhooks, organizations, and images
- Value objects (`LumaDate`, `LumaDuration`, `GooglePlaceId`) and pagination patterns

Resources
---------

[](#resources)

The SDK organizes endpoints into resource classes accessed via the main `LumaSdk` instance.

### Events

[](#events)

```
$events = $luma->events();

// Read
$event = $events->get($eventId);
$guests = $events->listGuests($request);
$coupons = $events->listCoupons($request);
$ticketTypes = $events->listTicketTypes($eventId);
$ticketType = $events->getTicketType($id);
$guest = $events->getGuest(eventId: $eventId, id: $guestId);

// Create & Update
$events->create($request);
$events->update($request);

// Guests
$events->addGuests($request);
$events->updateGuestStatus($request);
$events->sendInvites($request);

// Hosts
$events->createHost($request);
$events->updateHost($request);
$events->removeHost($eventId, $email);

// Coupons
$events->createCoupon($request);
$events->updateCoupon($request);

// Ticket Types
$events->createTicketType($request);
$events->updateTicketType($request);
$events->deleteTicketType($ticketTypeId);

// Cancellation
$token = $events->requestCancellation($eventId);
$events->cancel($eventId, $token->cancellationToken);
```

### Calendars

[](#calendars)

```
$calendars = $luma->calendars();

// Read
$calendar = $calendars->get();
$events = $calendars->listEvents();
$people = $calendars->listPeople();
$coupons = $calendars->listCoupons();
$admins = $calendars->listAdmins();
$event = $calendars->lookupEvent($request);

// Events
$calendars->addEvent($request);

// Coupons
$calendars->createCoupon($request);
$calendars->updateCoupon($request);

// People
$calendars->importPeople($request);

// Person Tags
$calendars->listPersonTags();
$calendars->createPersonTag('VIP', '#ff0000');
$calendars->updatePersonTag($tagId, name: 'Speaker');
$calendars->deletePersonTag($tagId);
$calendars->applyPersonTag($request);
$calendars->unapplyPersonTag($request);

// Event Tags
$calendars->listEventTags();
$calendars->createEventTag('Workshop');
$calendars->updateEventTag($tagId, name: 'Keynote');
$calendars->deleteEventTag($tagId);
$calendars->applyEventTag($tag, $eventApiIds);
$calendars->unapplyEventTag($tag, $eventApiIds);
```

### Memberships

[](#memberships)

```
$memberships = $luma->memberships();

$tiers = $memberships->listTiers();
$memberships->addMember($request);
$memberships->updateMemberStatus($userId, 'approved');
```

### Webhooks

[](#webhooks)

```
$webhooks = $luma->webhooks();

$list = $webhooks->list();
$webhook = $webhooks->get($id);
$webhook = $webhooks->create('https://example.com/hook', ['event.created']);
$webhook = $webhooks->update($request);
$webhooks->delete($id);
```

### Organizations

[](#organizations)

```
$org = $luma->organizations();

$calendars = $org->listCalendars();
```

### Images

[](#images)

```
$images = $luma->images();

$upload = $images->createUploadUrl('event-cover');
```

Value Objects
-------------

[](#value-objects)

The SDK provides type-safe value objects for Luma-specific formats:

### LumaDate

[](#lumadate)

```
use LaravelGtm\LumaSdk\ValueObjects\LumaDate;

$date = LumaDate::fromString('2026-10-04T05:20:00.000Z');
$date->toString();        // ISO 8601 UTC string
$date->toTimezone('America/New_York'); // Display conversion
```

### LumaDuration

[](#lumaduration)

```
use LaravelGtm\LumaSdk\ValueObjects\LumaDuration;

$duration = LumaDuration::fromString('P1DT12H30M');
$duration->toString();    // ISO 8601 duration string
$duration->toSeconds();   // Numeric representation
```

### GooglePlaceId

[](#googleplaceid)

```
use LaravelGtm\LumaSdk\ValueObjects\GooglePlaceId;

$place = GooglePlaceId::fromArray(['place_id' => 'ChIJN1t_tDeuEmsRUsoyG83frY4']);
$place->toArray();        // ['place_id' => '...']
```

Pagination
----------

[](#pagination)

Paginated endpoints return a `PaginatedResponse` with cursor-based pagination:

```
$page = $luma->events()->listGuests($request);

$page->entries;    // array of response DTOs
$page->hasMore;    // bool
$page->nextCursor; // string|null
```

Rate Limiting
-------------

[](#rate-limiting)

The SDK includes built-in rate limiting via Saloon's rate-limit plugin:

- **GET requests**: 500 per 5 minutes
- **POST requests**: 100 per 5 minutes

Rate limits are handled automatically — requests will wait when limits are reached.

Testing
-------

[](#testing)

```
composer test        # Run test suite
composer lint        # Check code style
composer analyse     # Static analysis (PHPStan)
composer format      # Fix code style
```

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md) for recent changes.

License
-------

[](#license)

The MIT License (MIT). See [LICENSE](LICENSE) for details.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance85

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97.2% 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 ~2 days

Total

9

Last Release

77d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/58236685?v=4)[Devon Garbalosa](/maintainers/DGarbs51)[@DGarbs51](https://github.com/DGarbs51)

![](https://www.gravatar.com/avatar/56dcbcd0139adf900f58bc19509e785e6724dadfbfcc74f9c6769432c31686cf?d=identicon)[devethanm](/maintainers/devethanm)

---

Top Contributors

[![DGarbs51](https://avatars.githubusercontent.com/u/58236685?v=4)](https://github.com/DGarbs51 "DGarbs51 (35 commits)")[![devethanm](https://avatars.githubusercontent.com/u/53354219?v=4)](https://github.com/devethanm "devethanm (1 commits)")

###  Code Quality

TestsPest

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/laravel-gtm-luma-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/laravel-gtm-luma-sdk/health.svg)](https://phpackages.com/packages/laravel-gtm-luma-sdk)
```

###  Alternatives

[saloonphp/laravel-plugin

The official Laravel plugin for Saloon

807.1M191](/packages/saloonphp-laravel-plugin)[codebar-ag/laravel-docuware

DocuWare integration with Laravel

1122.7k](/packages/codebar-ag-laravel-docuware)

PHPackages © 2026

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