Skip to main content
Use $avraapi->sms() for the four released SMS operations. All return an ApiResponse. Sending is a real external action: a successful response means the configured QuickSend integration accepted the request, not that a handset received it. Do not automatically retry an uncertain send.
Every SMS operation can use the shared one-request privacy control: $avraapi->sms()->withPrivacyMode()->getBalance(). It sends X-Privacy-Mode: 1 only for that next request, then clears automatically. Privacy Mode keeps normal routing, billing, and usage tracking while suppressing request and response payload storage.
Send messages only to recipients you own or are permitted to contact. Keep any send workflow in your backend, record the returned requestId, and make retry decisions only after checking whether the provider accepted the first request.

Send one SMS

sendSingle(string $to, string $message): ApiResponse sends one message to a QuickSend-compatible Sri Lankan local 07XXXXXXXX or E.164 +947XXXXXXXX number. A Managed SMS integration supports this method. SDK function
Copy the SDK call
Send one SMS and capture acceptance

Response

Send one message to a bulk list

sendBulkSame(array $recipients, string $message, bool $checkCost = false): ApiResponse sends the same text to 1–10,000 recipients. It requires a Manual (BYOK) QuickSend integration. Set checkCost to true to request a campaign cost estimate instead of sending that bulk campaign. SDK function
Copy the SDK call
Check the cost before a bulk campaign

Response

With checkCost: false, the same method submits the campaign and provider_response instead contains the provider acceptance result. Manual (BYOK) sends return credits_charged: 0; the connected provider can charge its own account.

Send different messages to a bulk list

sendBulkDifferent(array $messages): ApiResponse sends a different message to each recipient through a Manual (BYOK) QuickSend integration. Supply 1–20 entries; each entry has exactly to and msg values. SDK function
Copy the SDK call
Send recipient-specific SMS messages

Response

checkCost is not an argument of sendBulkDifferent(). A cost estimate is available only through sendBulkSame(..., checkCost: true).

Check the configured SMS balance

getBalance(): ApiResponse reads the balance for the active SMS integration. It does not deduct AvraAPI credits. SDK function
Copy the SDK call
Read the SMS balance

Response — Manual (BYOK)

Response — Managed

For a Managed integration, balance_formatted reports AvraAPI wallet credits: 1 USD equals 1,000,000 API credits. For a Manual integration it reports the connected QuickSend account balance.

SMS units and errors

message_count is SMS units, not API request count. Use up to 153 GSM-7 characters or 67 Unicode (UCS-2) characters per unit. Each recipient message is limited to three units. The SMS REST API Reference contains the full method restrictions and error contract; use the typed SDK exception pattern from PHP Overview and setup for failures.
Last modified on October 1, 2026