PHPackages                             lobrs/calendly-sdk-php - 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. lobrs/calendly-sdk-php

ActiveLibrary[API Development](/categories/api)

lobrs/calendly-sdk-php
======================

Calendly API SDK PHP

0.2.13(1y ago)1229.7k↓13.5%1[1 issues](https://github.com/LoBrs/calendly-sdk-php/issues)MITPHPPHP &gt;=7.4

Since May 23Pushed 1y ago2 watchersCompare

[ Source](https://github.com/LoBrs/calendly-sdk-php)[ Packagist](https://packagist.org/packages/lobrs/calendly-sdk-php)[ RSS](/packages/lobrs-calendly-sdk-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (4)Versions (15)Used By (0)

Calendly PHP SDK
================

[](#calendly-php-sdk)

PHP implementation of [Calendly API](https://developer.calendly.com/api-docs) (v2).

### Installation

[](#installation)

```
composer require lobrs/calendly-sdk-php

```

### Usage

[](#usage)

```
\LoBrs\Calendly\Calendly::setToken($token);
$currentUser = \LoBrs\Calendly\Calendly::me();
```

#### Get user from UUID

[](#get-user-from-uuid)

```
$user = \LoBrs\Calendly\Models\User::get($uuid);
```

#### Get model list

[](#get-model-list)

Returns an array of objects from the model class.

```
// List scheduled events from a user
$scheduled_events = \Calendly\Models\Event::getList([
    "user" => $user->uri
]);
// List busy times from a user
$busy_times = \Calendly\Models\UserBusyTime::getList([
    "user"          => $user->uri,
    "start_time"    => date(DateTime::ATOM, strtotime("+1 minute")),
    "end_time"      => date(DateTime::ATOM, strtotime("+7 days")),
]);
```

You can also use `paginate($options)` method, returning a `PaginatedList`.

```
$result = \Calendly\Models\Event::paginate([
    "user" => $user->uri
]);

echo $result->countResults() . " results \n";
echo $result->getNextPageURL();

// Request next page with the same options.
$next_page_results = $result->next();
```

Refer to the [Calendly API documentation](https://developer.calendly.com/api-docs) to find requests options.

#### Currently supported models

[](#currently-supported-models)

ModelsGet uuidPaginateCreateDeleteEvent✓✓EventType✓✓EventTypeAvailableTime✓Guest✓Invitee✓Organization✓OrganizationInvitation✓OrganizationMembership✓✓Profile✓RoutingForm✓✓RoutingFormSubmission✓✓SchedulingLink✓✓User✓UserAvailabilitySchedule✓UserBusyTime✓WebhookSubscription✓✓✓✓#### Direct API request usage

[](#direct-api-request-usage)

You can directly call the API using `Calendly::request($uri, "GET", $params)`, which returns the body of the response.

### Webhooks

[](#webhooks)

You can use `WebhookSubscription` Model directly to manage your Webhooks methods `getList`, `get`, `create` and `delete`.

#### Webhook subscription

[](#webhook-subscription)

We provide the `subscribe` helper method to add a new webhook.

The 3rd parameter can be a `$uuid` referencing a user or organization uuid or an array of options.

```
\LoBrs\Calendly\Webhooks\Webhook::subscribe("https://example.com/my-webhook", [
    'invitee.created'
], [
    'user' => 'user_abc123',
    'organization' => 'organization_abc123',
    'scope' => 'organization',
], 'my-webhook-secret-key');
```

To improve security, you can [sign your webhooks](https://developer.calendly.com/api-docs/ZG9jOjM2MzE2MDM4-webhook-signatures)by providing the webhook secret key parameter.

#### Webhook payload example

[](#webhook-payload-example)

```
$payload = @file_get_contents('php://input');
$header = $_SERVER['HTTP_CALENDLY_WEBHOOK_SIGNATURE'];
try {
    $webhook = Webhook::readEvent($payload, $header, 'my-webhook-secret-key');
} catch (WebhookExpiredResponseException|WebhookSignatureException $e) {}
```

### OAuth

[](#oauth)

This package comes with an OAuth2 CLient, using [ThePhpLeague OAuth2 Client](https://github.com/thephpleague/oauth2-client)

#### Usage flow

[](#usage-flow)

```
$provider = new CalendlyOAuthProvider([
    "clientId"     => env('CALENDLY_CLIENT'),
    "clientSecret" => env('CALENDLY_OAUTH_SECRET'),
    'redirectUri'  => env('CALENDLY_REDIRECT_URI'),
]);

if (!isset($_GET['code'])) {

    // If we don't have an authorization code then get one
    $authUrl = $provider->getAuthorizationUrl();

    header('Location: ' . $authUrl);
    exit;

} else {

    // Try to get an access token (using the authorization code grant)
    $token = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code'],
    ]);

    try {
        // We got an access token, let's now get the user's details
        $user = $provider->getResourceOwner($token);

        print_r($user->toArray());

    } catch (Exception $e) {
        exit('Failed to get user details');
    }

    // Use this to interact with an API on the users behalf
    echo $token->getToken();
}
```

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance47

Moderate activity, may be stable

Popularity36

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 85.7% 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 ~83 days

Recently: every ~238 days

Total

14

Last Release

379d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1e58937aed722defc5da30e92eb970cb5c7c8eef48e0303826c8ef437601b7ca?d=identicon)[lbrs](/maintainers/lbrs)

---

Top Contributors

[![LoBrs](https://avatars.githubusercontent.com/u/5214756?v=4)](https://github.com/LoBrs "LoBrs (54 commits)")[![defro](https://avatars.githubusercontent.com/u/25364?v=4)](https://github.com/defro "defro (7 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

calendlyphp

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lobrs-calendly-sdk-php/health.svg)

```
[![Health](https://phpackages.com/badges/lobrs-calendly-sdk-php/health.svg)](https://phpackages.com/packages/lobrs-calendly-sdk-php)
```

###  Alternatives

[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[dcblogdev/laravel-microsoft-graph

A Laravel Microsoft Graph API (Office365) package

168285.5k1](/packages/dcblogdev-laravel-microsoft-graph)[dcblogdev/laravel-xero

A Laravel Xero package

53129.1k1](/packages/dcblogdev-laravel-xero)[mapado/rest-client-sdk

Rest Client SDK for hydra API

1125.9k2](/packages/mapado-rest-client-sdk)

PHPackages © 2026

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