Skip to main content

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