PHP SDK
The official Audian SDK for PHP.
Installation​
Install the SDK via Composer:
composer require audian/sdk
Quick Start​
<?php
use Audian\AudianClient;
$client = new AudianClient([
'apiKey' => 'YOUR_API_KEY'
]);
// Search for phone numbers
$numbers = $client->numbers->search([
'location' => 'US-CA-415',
'limit' => 10
]);
echo json_encode($numbers);
?>
Configuration​
Initialize Client​
<?php
$client = new AudianClient([
'apiKey' => 'sk_live_...',
'baseURL' => 'https://api.audian.com:8443/v2', // Optional
'timeout' => 30, // Optional, seconds
'maxRetries' => 3, // Optional
'backoffFactor' => 2 // Optional
]);
?>
Environment Variables​
export AUDIAN_API_KEY='sk_live_...'
<?php
$client = new AudianClient([
'apiKey' => getenv('AUDIAN_API_KEY')
]);
?>
Phone Numbers API​
Search Numbers​
<?php
$numbers = $client->numbers->search([
'location' => 'US-CA-415',
'pattern' => '415*',
'features' => ['sms', 'mms'],
'limit' => 20,
'offset' => 0
]);
echo count($numbers['data']['numbers']) . " numbers found\n";
?>
List Your Numbers​
<?php
$response = $client->numbers->list([
'limit' => 20,
'offset' => 0,
'status' => 'active'
]);
foreach ($response['data']['numbers'] as $number) {
echo $number['number'] . "\n";
}
?>
Get Number Details​
<?php
$number = $client->numbers->get('num_abc123');
echo $number['data']['number'];
?>
Purchase a Number​
<?php
$purchased = $client->numbers->purchase([
'number' => '+14155551234',
'friendly_name' => 'Support Line'
]);
echo "Purchased: " . $purchased['data']['number'];
?>
Update Number Configuration​
<?php
$updated = $client->numbers->updateConfig('num_abc123', [
'friendly_name' => 'Support Line',
'callForwarding' => [
'enabled' => true,
'forwardTo' => '+14155559999',
'ringsBeforeForward' => 4
],
'voicemail' => [
'enabled' => true,
'transcription' => true
]
]);
?>
Set Caller ID​
<?php
$callerId = $client->numbers->setCallerId('num_abc123', [
'callerIdNumber' => '+14155551234',
'callerIdName' => 'Support'
]);
?>
Configure E911​
<?php
$e911 = $client->numbers->setE911('num_abc123', [
'addressLine1' => '123 Main Street',
'addressLine2' => 'Suite 100',
'city' => 'San Francisco',
'state' => 'CA',
'postalCode' => '94102',
'country' => 'US',
'customerName' => 'Acme Corp'
]);
?>
SMS API​
Send SMS​
<?php
$response = $client->sms->send([
'to' => '+14155551234',
'from' => '+14155559999',
'message' => 'Hello, World!'
]);
echo "SMS ID: " . $response['data']['id'];
?>
Send Batch SMS​
<?php
$response = $client->sms->sendBatch([
'messages' => [
['to' => '+14155551234', 'message' => 'Hello 1'],
['to' => '+14155551235', 'message' => 'Hello 2'],
['to' => '+14155551236', 'message' => 'Hello 3']
]
]);
?>
Get SMS Details​
<?php
$sms = $client->sms->get('sms_abc123');
echo "Status: " . $sms['data']['status'];
?>
List SMS Messages​
<?php
$messages = $client->sms->list([
'limit' => 20,
'offset' => 0,
'status' => 'delivered'
]);
?>
Voice API​
Make a Call​
<?php
$call = $client->voice->makeCall([
'to' => '+14155551234',
'from' => '+14155559999',
'action' => 'connect',
'connectTo' => '+14155559999'
]);
echo "Call ID: " . $call['data']['id'];
?>
Get Call Details​
<?php
$callDetails = $client->voice->getCall('call_abc123');
echo "Status: " . $callDetails['data']['status'];
?>
List Calls​
<?php
$calls = $client->voice->listCalls([
'limit' => 20,
'status' => 'completed'
]);
?>
Billing API​
Get Usage​
<?php
$usage = $client->billing->usage->get();
echo "SMS Cost: " . $usage['data']['usage']['smsMessages']['cost'];
echo "Voice Cost: " . $usage['data']['usage']['voiceMinutes']['cost'];
?>
Get Usage Breakdown​
<?php
$breakdown = $client->billing->usage->getBreakdown([
'metric' => 'sms',
'granularity' => 'day'
]);
?>
List Invoices​
<?php
$invoices = $client->billing->invoices->list([
'status' => 'paid',
'limit' => 20
]);
?>
Get Invoice​
<?php
$invoice = $client->billing->invoices->get('inv_abc123');
echo "Total: " . $invoice['data']['total'];
?>
Download Invoice PDF​
<?php
$pdf = $client->billing->invoices->getPdf('inv_abc123');
file_put_contents('invoice.pdf', $pdf);
?>
Error Handling​
<?php
use Audian\Exception\AudianException;
try {
$client->numbers->purchase(['number' => '+14155551234']);
} catch (AudianException $e) {
echo "Error: " . $e->getMessage();
echo "Code: " . $e->getCode();
echo "HTTP Status: " . $e->getHttpStatus();
}
?>
Rate Limiting​
The SDK automatically handles rate limiting with exponential backoff:
<?php
// Automatically retries with exponential backoff
$numbers = $client->numbers->search([
'location' => 'US-CA-415'
]);
?>
Custom Retry Configuration​
<?php
$client = new AudianClient([
'apiKey' => 'YOUR_API_KEY',
'maxRetries' => 5,
'backoffFactor' => 2,
'initialRetryDelay' => 100 // milliseconds
]);
?>
Monitor Rate Limit Headers​
<?php
$response = $client->numbers->list();
echo $response['headers']['ratelimit-limit'];
echo $response['headers']['ratelimit-remaining'];
echo $response['headers']['ratelimit-reset'];
?>
Webhooks​
Verify Webhook Signature​
<?php
use Audian\Webhooks\WebhookVerifier;
$verifier = new WebhookVerifier([
'signingSecret' => 'whsec_...'
]);
try {
$event = $verifier->verify(
file_get_contents('php://input'),
$_SERVER['HTTP_X_AUDIAN_SIGNATURE'] ?? ''
);
echo "Event type: " . $event['type'];
http_response_code(200);
} catch (Exception $e) {
http_response_code(401);
echo json_encode(['error' => 'Unauthorized']);
}
?>
Handle Webhook Events​
<?php
$event = $verifier->verify($payload, $signature);
switch ($event['type']) {
case 'sms.received':
echo "SMS from: " . $event['data']['from'];
echo "Message: " . $event['data']['message'];
break;
case 'call.completed':
echo "Call duration: " . $event['data']['duration'] . "s";
break;
case 'number.ported':
echo "Number " . $event['data']['number'] . " ported successfully";
break;
}
http_response_code(200);
echo json_encode(['success' => true]);
?>
Complete Example​
<?php
require 'vendor/autoload.php';
use Audian\AudianClient;
$client = new AudianClient([
'apiKey' => getenv('AUDIAN_API_KEY')
]);
// Search for available numbers
$available = $client->numbers->search([
'location' => 'US-CA-415',
'limit' => 5
]);
echo count($available['data']['numbers']) . " numbers available\n";
// Purchase the first number
if (count($available['data']['numbers']) > 0) {
$number = $available['data']['numbers'][0]['number'];
$purchased = $client->numbers->purchase([
'number' => $number,
'friendly_name' => 'Demo Number'
]);
echo "Purchased: " . $purchased['data']['number'] . "\n";
// Send SMS from the number
$sms = $client->sms->send([
'from' => $purchased['data']['number'],
'to' => '+14155559999',
'message' => 'Hello from Audian!'
]);
echo "SMS sent: " . $sms['data']['id'] . "\n";
}
?>
Troubleshooting​
API Key Not Found​
<?php
$apiKey = getenv('AUDIAN_API_KEY');
if (empty($apiKey)) {
throw new Exception('AUDIAN_API_KEY environment variable not set');
}
$client = new AudianClient(['apiKey' => $apiKey]);
?>
Timeout Issues​
<?php
$client = new AudianClient([
'apiKey' => 'YOUR_API_KEY',
'timeout' => 60 // Increase to 60 seconds
]);
?>
Debugging​
<?php
$client = new AudianClient([
'apiKey' => 'YOUR_API_KEY',
'debug' => true // Enable debug logging
]);
?>
Support​
Version History​
See changelog