Saltar al contenido
← Volver a proyectos

Laravel Savvycal

A lightweight SavvyCal REST API client for Laravel.

Laravel SavvyCal

#Laravel SavvyCal

Tests PHPStan Code Style Latest Version on Packagist Total Downloads License

A lightweight SavvyCal REST API client for Laravel. It wraps the api.savvycal.com v1 endpoints behind a small static client, threads your API key, and defensively returns null (rather than throwing) on network failures or non-2xx responses.

#Features

  • Usersme() fetches the authenticated user
  • Scheduling linkslinks(), link(), createLink(), updateLink(), deleteLink(), duplicateLink(), toggleLink(), linkSlots()
  • Eventsevents(), event(), createEvent(), cancelEvent()
  • Webhookswebhooks(), createWebhook(), deleteWebhook()

#Installation

composer require jeffersongoncalves/laravel-savvycal

Optionally publish the config file:

php artisan vendor:publish --tag="laravel-savvycal-config"

#Configuration

Add to your .env:

SAVVYCAL_API_KEY=sk_live_...

Create an API key from your SavvyCal developer settings.

#Config Options

// config/savvycal.php
return [
    'token' => env('SAVVYCAL_API_KEY'),
    'timeout' => (int) env('SAVVYCAL_TIMEOUT', 8),
];

When savvycal.token is null the client falls back to config('services.savvycal.token').

#Usage

use JeffersonGoncalves\SavvyCal\SavvyCalClient;

// Users
$me = SavvyCalClient::me();

// Scheduling links
$links = SavvyCalClient::links(['limit' => 50]);
$link = SavvyCalClient::link('link_00000000');
$created = SavvyCalClient::createLink('Intro call', slug: 'intro', durationMinutes: 30);
SavvyCalClient::updateLink('link_00000000', ['name' => 'Discovery call']);
SavvyCalClient::duplicateLink('link_00000000');
SavvyCalClient::toggleLink('link_00000000');
SavvyCalClient::deleteLink('link_00000000');

// Availability
$slots = SavvyCalClient::linkSlots(
    id: 'link_00000000',
    startTime: '2026-09-06T00:00:00Z',
    endTime: '2026-09-13T00:00:00Z',
);

// Events
$events = SavvyCalClient::events(['limit' => 20]);
$event = SavvyCalClient::event('event_00000000');
SavvyCalClient::createEvent(
    schedulingLinkId: 'link_00000000',
    startAt: '2026-09-08T14:00:00Z',
    name: 'Jane Doe',
    email: 'jane@example.com',
);
SavvyCalClient::cancelEvent('event_00000000');

// Webhooks
$webhooks = SavvyCalClient::webhooks();
SavvyCalClient::createWebhook('https://example.com/webhooks/savvycal', ['event.created', 'event.canceled']);
SavvyCalClient::deleteWebhook('hook_00000000');

All methods return array<string, mixed>|null (or bool for deleteLink() and deleteWebhook()), returning null/false on any network failure or non-2xx response instead of throwing. Null arguments are stripped from the payload before it is sent, so optional fields are simply omitted.

#Testing

composer test

#Static Analysis

composer analyse

#Code Formatting

composer format

#Changelog

Please see CHANGELOG for more information on what has changed recently.

#License

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

Nueva versión disponible.