sabbajohn / pulse-php
Framework-agnostic PHP client for the VoraPulse API.
0.1.4
2026-06-24 02:57 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8
README
Framework-agnostic PHP client for the public v2 VoraPulse API.
Contract
The SDK contract is defined by the Pulse public OpenAPI spec:
https://github.com/vora-sys/Pulse/blob/main/VoraPulse/docs/openapi/pulse-public-v2.openapi.json
Administrative, billing, observability and other internal endpoints are intentionally out of scope.
Compatibility
- PHP
^8.2 - Public API base:
/api/v2
Installation
composer require sabbajohn/pulse-php
Quickstart
use Sabbajohn\PulsePhp\PulseClient; $pulse = new PulseClient('https://pulse.example.com', 'api-token'); $pulse->get('health'); $pulse->emails()->sendSync([ 'to' => [['email' => 'cliente@example.com', 'name' => 'Cliente']], 'subject' => 'Bem-vindo', 'html' => '<p>Ola!</p>', ]); $pulse->automations()->trigger('pedido.criado', ['pedido_id' => 123]); $pulse->emails()->ingestBounce([ 'email_id' => 154, 'bounce_type' => 'hard', 'recipient' => 'cliente@example.com', 'reason' => 'Mailbox unavailable', ]);
The client automatically normalizes the base URL to /api/v2.
Services
emails(): send sync/async, list, status, cancel, retry, bounce ingestion, stats and SMTP testtemplates(): meta, CRUD and previewcomposer(): meta, render, validate, autosave and latest revisioncampaigns(): list, create, preview, show, update, delete and sendaudiences(): audiences, channels, members, tags and segmentscontacts(): list, create, show, update, replace and deleteautomations(): CRUD, trigger, toggle and manual runcalendar(): items, create event and delete eventwhatsapp(): config, test, instance status, QR, webhook, restart, list and send message
Errors
The public exception mapping is stable across SDKs:
AuthenticationExceptionNotFoundExceptionValidationExceptionRateLimitExceptionRemoteExceptionRequestFailedException
Examples
examples/quickstart.php