senviok / senviok-php
Official PHP SDK for the Senviok API
v1.0.0
2026-08-19 13:36 UTC
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.4
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
The official PHP SDK for the Senviok notification and messaging infrastructure API.
Installation
You can install the SDK via Composer:
composer require senviok/senviok-php
Make sure you have GuzeHttp installed (Composer will automatically attempt to install Guzzle 7 when installing this package).
Quick Start
1. Initialize Client
require_once 'vendor/autoload.php'; use Senviok\Senviok; // Initialize client with your API key $senviok = new Senviok('svk_live_your_api_key_here');
2. Send an Email
try { $response = $senviok->emails->send([ 'from' => 'Sender Name <onboarding@senviok.live>', 'to' => 'user@example.com', 'subject' => 'Welcome to Senviok!', 'html' => '<h1>Hello World</h1><p>This is a transactional email.</p>' ]); echo "Email Sent! ID: " . $response['id'] . "\n"; } catch (\Senviok\Exceptions\ApiException $e) { echo "Error (" . $e->getStatusCode() . "): " . $e->getMessage() . "\n"; }
API Documentation
Emails & Inbox
// Send email with attachments $senviok->emails->send([ 'from' => 'verify@yourdomain.com', 'to' => 'recipient@example.com', 'subject' => 'Monthly Report', 'html' => '<p>Attached is your invoice.</p>', 'attachments' => [ [ 'filename' => 'invoice.pdf', 'contentType' => 'application/pdf', 'content' => base64_encode(file_get_contents('invoice.pdf')) ] ] ]); // List incoming emails in your inbox $inbox = $senviok->emails->listInbox([ 'limit' => 20, 'offset' => 0 ]); // Get incoming email details $email = $senviok->emails->getInbox('inbound_msg_id'); // Reply to an incoming thread $senviok->emails->replyInbox('inbound_msg_id', [ 'textBody' => 'Hi, thanks for reaching out. We received your request.' ]);
SMS
$senviok->sms->send([ 'from' => 'SVKALERT', 'to' => '+2348012345678', 'sms' => 'Your OTP code is 981249. Expires in 5 minutes.' ]);
$senviok->whatsapp->send([ 'from' => '+2348012345678', // Sender number 'to' => '+2348087654321', // Recipient 'text' => 'Your order #28103 has been shipped!' ]);
OTP Verification
// Send OTP $otp = $senviok->otp->send([ 'to' => '+2348012345678', 'from' => 'SVKALERT', 'channel' => 'SMS', 'expiryMinutes' => 5 ]); // Resend OTP (keeps the same code if still valid to reduce spam/costs) $resend = $senviok->otp->resend([ 'to' => '+2348012345678', 'from' => 'SVKALERT', 'channel' => 'SMS' ]); // Verify OTP $verification = $senviok->otp->verify([ 'to' => '+2348012345678', 'code' => '123456' ]);
Templates CRUD
// Create $template = $senviok->templates->create([ 'name' => 'Verify Account', 'subject' => 'Verification Code: {{code}}', 'htmlContent' => '<p>Use code <b>{{code}}</b> to complete signup.</p>' ]); // Update $senviok->templates->update('tmpl_id', [ 'name' => 'Updated Name' ]); // Delete $senviok->templates->delete('tmpl_id');
Custom Domains
// Register domain $domain = $senviok->domains->create(['name' => 'mydomain.com']); // Get DKIM keys $dkim = $senviok->domains->getDkim('dom_id'); // Verify DNS records $result = $senviok->domains->verify('dom_id');
Webhook Signature Verification
To verify that webhook requests coming into your application are sent by Senviok, use the signature verification utility:
$rawBody = file_get_contents('php://input'); $signature = $_SERVER['HTTP_SVK_SIGNATURE'] ?? ''; $secret = 'whsec_your_webhook_secret_here'; $isValid = $senviok->webhooks->verifySignature($rawBody, $signature, $secret); if ($isValid) { // Process event safely } else { // Reject request http_response_code(401); }
License
MIT License.