EchoBulk
Developer Documentation

Build SMS alerts, OTPs, and customer notifications with EchoBulk.

The EchoBulk API is designed to stay simple: authenticate with a Bearer API key, send a JSON request, and submit messages through one branded endpoint. It works for CRMs, billing systems, schools, fintech apps, e-commerce platforms, and ISP customer-notification workflows.

Endpoint
/api/send-sms.php
Method
POST
Auth
Bearer Key
API Request
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Quick start

Send your first SMS request

Use an approved sender ID and one or more recipient phone numbers.

JSON over HTTPS
curl -X POST \
  https://echobulk.com/api/send-sms.php \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "sender": "APPROVED_ID",
    "to": ["233551234567", "233241234567"],
    "message": "Hello from EchoBulk",
    "campaign_name": "API Campaign"
  }'
Payload

Request fields

FieldRequiredDescription
senderYesAn approved EchoBulk sender ID.
toYes*Array of recipient phone numbers. Use international Ghana format such as 233XXXXXXXXX.
messageYesThe SMS content to send.
campaign_nameNoFriendly label for reports and campaign tracking.
group_idOptionalSend to a saved contact group owned by the API customer. Use this instead of to.

* Provide either to or group_id.

Success

Submitted response

{
  "success": true,
  "message": "SMS submitted successfully.",
  "campaign_id": 123,
  "recipients_count": 2
}
Phone format

Use consistent recipient numbers

API examples use 233XXXXXXXXX. This keeps CRM, billing, and automation integrations predictable when sending to Ghanaian numbers.

233551234567
233241234567
Business use cases

Examples for ISPs, fintechs, schools, and CRMs

The same send endpoint can power automated customer communication. These examples show practical message types businesses often send.

ISP renewal reminder

Dear Customer, your internet package expires tomorrow. Kindly renew to avoid service interruption.

Payment confirmation

Payment received successfully. Your account has been renewed and your service is active.

Service notification

We are currently experiencing a service disruption. Our technical team is working to restore service.

OTP verification

Your EchoBulk verification code is 482991. It expires in 10 minutes. Do not share it.

Code samples

Developer-ready examples

PHP cURL
<?php
$payload = [
  'sender' => 'APPROVED_ID',
  'to' => ['233551234567'],
  'message' => 'Your account has been renewed.',
  'campaign_name' => 'Renewal Notice'
];

$ch = curl_init('https://echobulk.com/api/send-sms.php');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
  ],
  CURLOPT_POSTFIELDS => json_encode($payload)
]);
$response = curl_exec($ch);
curl_close($ch);
JavaScript fetch
const response = await fetch(
  'https://echobulk.com/api/send-sms.php',
  {
    method: 'POST',
    headers: {
      Authorization: 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      sender: 'APPROVED_ID',
      to: ['233551234567'],
      message: 'Your OTP is 482991.',
      campaign_name: 'OTP Verification'
    })
  }
);
const result = await response.json();
Error handling

Common API responses

401

Missing or invalid Bearer API key.

403

Disabled API key or inactive account.

422

Missing sender, invalid recipient list, invalid message, or insufficient wallet balance.

423

Outbound SMS is temporarily paused by platform security controls.

For production integrations, always check the HTTP status code and the success field before marking a message as submitted.