API Documentation

API Documentation – CONNECT MEDIA

ConnectMedia API

Enrich your application with easy-to-integrate, secure messaging APIs that your customers will love.

<?php
// Send a message with Connect Media API
$username = 'your_username';
$password = 'your_password';
$sender = 'ConectMedia';
$to = '254712345678';
$message = "Hello from Connect Media!";

$url = "http://www.connectmedia.co.ke/user-board/?api";
$post = [
  'action' => 'send',
  'to' => $to,
  'username' => $username,
  'password' => $password, 
  'sender' => $sender,
  'message' => urlencode($message)
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
curl_close($ch);

echo json_decode($response, true)['message'];
?>
// Send a message with Connect Media API
const sendSMS = async () => {
  const apiUrl = 'http://www.connectmedia.co.ke/user-board/?api';
  
  const formData = new FormData();
  formData.append('username', 'your_username');
  formData.append('password', 'your_password');
  formData.append('action', 'send');
  formData.append('to', '254712345678');
  formData.append('sender', 'ConectMedia');
  formData.append('message', encodeURIComponent('Hello from Connect Media!'));
  
  try {
    const response = await fetch(apiUrl, {
      method: 'POST',
      body: formData
    });
    
    const result = await response.json();
    console.log('Response:', result.message);
  } catch (error) {
    console.error('Error:', error);
  }
};
import requests

def send_sms():
    api_url = 'http://www.connectmedia.co.ke/user-board/?api'
    
    payload = {
        'username': 'your_username',
        'password': 'your_password',
        'action': 'send',
        'to': '254712345678',
        'sender': 'ConectMedia',
        'message': 'Hello from Connect Media!'
    }
    
    try:
        response = requests.post(api_url, data=payload)
        result = response.json()
        
        print(f"Response: {result['message']}")
    except Exception as e:
        print(f"Error: {e}")

# Call the function
send_sms()

More than 1,000 organizations are using Connect Media

Easy Integration

Simple HTTP POST requests with clear parameters make integration quick and painless.

Global Reach

Send SMS messages to mobile numbers worldwide with excellent delivery rates.

Two-Way Messaging

Receive incoming messages from your customers for interactive communication.

Introduction

The Connect Media Bulk SMS API provides a simple and reliable way to send SMS messages programmatically. This API allows you to send messages, check your account balance, and retrieve message history.

All requests are submitted using the HTTP POST method to the API endpoint. The API returns responses in JSON format, making it easy to parse and process in any programming language.

Getting Started: Create an account with Connect Media to receive your API credentials. If you don't have an account yet, please register here.

Authentication

Authentication is performed by including your Connect Media username and password as parameters in every API request. These credentials verify your identity and ensure that only authorized users can access the API.

Security Note: Keep your credentials secure. Don't expose them in client-side code or public repositories. We recommend storing credentials in environment variables or a secure configuration system.
// Example of authentication parameters
$username = 'your_username';
$password = 'your_password';

Endpoints

Base URL

POST http://www.connectmedia.co.ke/user-board/?api

For receiving SMS messages (inbox functionality), use this endpoint:

POST http://www.connectmedia.co.ke/user-board/?api_v2

Available Actions

Action Description Endpoint
send Send an SMS message api
balance Check account balance api
history Retrieve sent message history api
inbox Retrieve received messages (2-WAY SMS) api_v2

Parameters

The following parameters are used when making requests to the API:

Parameter Description Required
username Your Connect Media account username Yes
password Your Connect Media account password Yes
action The action to perform:
send - Send an SMS message
balance - Check account balance
history - Retrieve sent message history
inbox - Retrieve received messages (2-WAY SMS)
Yes
to Recipient mobile number including country code (e.g., 254712345678) Yes (for send action)
sender Sender ID for the message (Use ConectMedia as default) No
message The text message content Yes (for send action)
Important: The Sender ID (ConectMedia) is limited to a maximum of 11 characters. Note the spelling with a single 'n' in "ConectMedia".

Response Codes

The ConnectMedia API uses standard HTTP status codes along with custom response codes to indicate the status of API requests.

Standard HTTP Status Codes

HTTP Code Description
200 OK - The request was successful
400 Bad Request - Missing or invalid parameters
401 Unauthorized - Invalid credentials
405 Method Not Allowed - Only POST methods are supported
500 Internal Server Error - An error occurred on the server

API Response Codes

Code Description Action
100 Invalid login details Authentication
101 No enough balance to send message Send
103 No action defined All
200 Success (returns current balance) Balance
201 Message Sent Successfully Send
202 Success (returns message history) History
302 Success (returns inbox messages or "No messages found") Inbox
500 Internal server error All

Examples

The following examples demonstrate how to use the ConnectMedia API for various operations.

Sending Messages

The send action allows you to send SMS messages to one or multiple recipients.

Request Parameters

Parameter Description Required
username Your ConnectMedia account username Yes
password Your ConnectMedia account password Yes
action Must be set to send Yes
to Recipient mobile number including country code (e.g., 254712345678). For multiple recipients, separate numbers with a comma (e.g., "254712345678,254723456789") Yes
sender Sender ID for the message. Default is "ConectMedia" No
message The text message content Yes

Example Request

URL:
POST http://www.connectmedia.co.ke/user-board/?api
Parameters:
username=your_username&password=your_password&action=send&to=254712345678&sender=ConectMedia&message=Hello+from+Connect+Media!

Example Response

{
  "code": "201",
  "message": "Message Sent Successfully!",
  "message_id": "CM123456789"
}

Error Responses

Insufficient Balance:
{
  "code": "101",
  "message": "No enough balance to send message"
}
Server Error:
{
  "code": "500",
  "message": "Failed to send message: [error details]"
}

Checking Balance

The balance action allows you to check your account balance.

Request Parameters

Parameter Description Required
username Your ConnectMedia account username Yes
password Your ConnectMedia account password Yes
action Must be set to balance Yes

Example Request

URL:
POST http://www.connectmedia.co.ke/user-board/?api
Parameters:
username=your_username&password=your_password&action=balance

Example Response

{
  "code": "200",
  "message": "1250.50"
}

Retrieving Message History

The history action allows you to retrieve the history of messages you've sent.

Request Parameters

Parameter Description Required
username Your ConnectMedia account username Yes
password Your ConnectMedia account password Yes
action Must be set to history Yes
limit Maximum number of records to return (default: 50) No
offset Number of records to skip (for pagination, default: 0) No
start_date Filter messages sent after this date (format: YYYY-MM-DD) No
end_date Filter messages sent before this date (format: YYYY-MM-DD) No

Example Request

URL:
POST http://www.connectmedia.co.ke/user-board/?api
Parameters:
username=your_username&password=your_password&action=history&limit=10&start_date=2023-01-01

Example Response

{
  "0": {
    "message_id": "12345",
    "message_text": "Hello from Connect Media!",
    "message_date": "2023-01-15 10:30:45",
    "message_status": "Delivered",
    "message_error": "OK"
  },
  "1": {
    "message_id": "12346",
    "message_text": "Your verification code is 123456",
    "message_date": "2023-01-16 14:22:10",
    "message_status": "Delivered",
    "message_error": "OK"
  },
  "code": "202"
}

Retrieving Inbox Messages (2-WAY SMS)

The inbox action allows you to retrieve messages that were sent to your account (for two-way SMS communication).

Request Parameters

Parameter Description Required
username Your ConnectMedia account username Yes
password Your ConnectMedia account password Yes
action Must be set to inbox Yes
limit Maximum number of records to return (default: 50) No
offset Number of records to skip (for pagination, default: 0) No
start_date Filter messages received after this date (format: YYYY-MM-DD) No
end_date Filter messages received before this date (format: YYYY-MM-DD) No

Example Request

URL:
POST http://www.connectmedia.co.ke/user-board/?api_v2
Parameters:
username=your_username&password=your_password&action=inbox&limit=10

Example Response with Messages

{
  "0": {
    "message_text": "Yes, please proceed with the order",
    "message_datetime": "2023-01-15 11:45:22",
    "message_from": "254712345678"
  },
  "1": {
    "message_text": "My verification code is 654321",
    "message_datetime": "2023-01-16 09:12:05",
    "message_from": "254723456789"
  },
  "code": "302"
}

Example Response with No Messages

{
  "code": "302",
  "message": "No messages found"
}

Code Samples

Here are complete code samples to help you integrate with the ConnectMedia API in different programming languages.

PHP

<?php
// ConnectMedia API Client - Complete Example

function connectMediaAPI($action, $params = []) {
    // Base API configuration
    $api_url = 'https://www.connectmedia.co.ke/user-board/?api';
    $credentials = [
        'username' => 'your_username',
        'password' => 'your_password'
    ];
    
    // If action is 'inbox', use the v2 API endpoint
    if ($action === 'inbox') {
        $api_url = 'https://www.connectmedia.co.ke/user-board/?api_v2';
    }
    
    // Merge credentials with other parameters
    $post_data = array_merge($credentials, ['action' => $action], $params);
    
    // Initialize cURL session
    $ch = curl_init($api_url);
    
    // Set cURL options
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    
    // Execute the request
    $response = curl_exec($ch);
    $error = curl_error($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    // Handle response
    if ($error) {
        return [
            'success' => false,
            'error' => "cURL Error: $error"
        ];
    }
    
    // Parse JSON response
    $result = json_decode($response, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return [
            'success' => false,
            'error' => 'Invalid JSON response',
            'raw_response' => $response
        ];
    }
    
    return [
        'success' => ($http_code == 200),
        'http_code' => $http_code,
        'data' => $result
    ];
}

// 1. Send an SMS message
function sendSMS($to, $message, $sender = 'ConectMedia') {
    return connectMediaAPI('send', [
        'to' => $to,
        'message' => $message,
        'sender' => $sender
    ]);
}

// 2. Check account balance
function checkBalance() {
    return connectMediaAPI('balance');
}

// 3. Retrieve message history
function getMessageHistory($limit = 50, $offset = 0, $start_date = null, $end_date = null) {
    $params = [
        'limit' => $limit,
        'offset' => $offset
    ];
    
    if ($start_date) {
        $params['start_date'] = $start_date;
    }
    
    if ($end_date) {
        $params['end_date'] = $end_date;
    }
    
    return connectMediaAPI('history', $params);
}

// 4. Retrieve inbox messages
function getInboxMessages($limit = 50, $offset = 0, $start_date = null, $end_date = null) {
    $params = [
        'limit' => $limit,
        'offset' => $offset
    ];
    
    if ($start_date) {
        $params['start_date'] = $start_date;
    }
    
    if ($end_date) {
        $params['end_date'] = $end_date;
    }
    
    return connectMediaAPI('inbox', $params);
}

// Usage Examples

// Example 1: Send an SMS
$sendResult = sendSMS('254712345678', 'Hello from ConnectMedia API!');
if ($sendResult['success']) {
    echo "Message sent successfully! ID: " . $sendResult['data']['message_id'] . "\n";
} else {
    echo "Failed to send message: " . ($sendResult['data']['message'] ?? 'Unknown error') . "\n";
}

// Example 2: Check balance
$balanceResult = checkBalance();
if ($balanceResult['success']) {
    echo "Current balance: " . $balanceResult['data']['message'] . "\n";
} else {
    echo "Failed to retrieve balance\n";
}

// Example 3: Get message history
$historyResult = getMessageHistory(10, 0, '2023-01-01');
if ($historyResult['success']) {
    $messages = $historyResult['data'];
    $code = $messages['code'];
    unset($messages['code']);
    
    echo "Message History (Code: $code):\n";
    foreach ($messages as $message) {
        echo "ID: " . $message['message_id'] . "\n";
        echo "Text: " . $message['message_text'] . "\n";
        echo "Date: " . $message['message_date'] . "\n";
        echo "Status: " . $message['message_status'] . "\n";
        echo "-------------------------------\n";
    }
} else {
    echo "Failed to retrieve message history\n";
}

// Example 4: Get inbox messages
$inboxResult = getInboxMessages(10);
if ($inboxResult['success']) {
    $messages = $inboxResult['data'];
    $code = $messages['code'];
    unset($messages['code']);
    
    if (isset($messages['message']) && $messages['message'] === 'No messages found') {
        echo "No inbox messages found\n";
    } else {
        echo "Inbox Messages (Code: $code):\n";
        foreach ($messages as $message) {
            echo "From: " . $message['message_from'] . "\n";
            echo "Text: " . $message['message_text'] . "\n";
            echo "Date: " . $message['message_datetime'] . "\n";
            echo "-------------------------------\n";
        }
    }
} else {
    echo "Failed to retrieve inbox messages\n";
}
?>

JavaScript

// ConnectMedia API Client - Complete Example

class ConnectMediaAPI {
  constructor(username, password) {
    this.credentials = {
      username: username,
      password: password
    };
    this.baseUrl = 'https://www.connectmedia.co.ke/user-board/';
  }
  
  async request(action, params = {}) {
    // Determine API endpoint
    const apiEndpoint = action === 'inbox' ? '?api_v2' : '?api';
    const url = this.baseUrl + apiEndpoint;
    
    // Prepare form data
    const formData = new FormData();
    formData.append('action', action);
    
    // Add credentials
    Object.keys(this.credentials).forEach(key => {
      formData.append(key, this.credentials[key]);
    });
    
    // Add other parameters
    Object.keys(params).forEach(key => {
      formData.append(key, params[key]);
    });
    
    try {
      // Send the request
      const response = await fetch(url, {
        method: 'POST',
        body: formData
      });
      
      // Parse response
      const result = await response.json();
      
      return {
        success: response.ok,
        status: response.status,
        data: result
      };
    } catch (error) {
      return {
        success: false,
        error: error.message
      };
    }
  }
  
  // 1. Send an SMS message
  async sendSMS(to, message, sender = 'ConectMedia') {
    return this.request('send', {
      to: to,
      message: message,
      sender: sender
    });
  }
  
  // 2. Check account balance
  async checkBalance() {
    return this.request('balance');
  }
  
  // 3. Retrieve message history
  async getMessageHistory(limit = 50, offset = 0, startDate = null, endDate = null) {
    const params = {
      limit: limit,
      offset: offset
    };
    
    if (startDate) {
      params.start_date = startDate;
    }
    
    if (endDate) {
      params.end_date = endDate;
    }
    
    return this.request('history', params);
  }
  
  // 4. Retrieve inbox messages
  async getInboxMessages(limit = 50, offset = 0, startDate = null, endDate = null) {
    const params = {
      limit: limit,
      offset: offset
    };
    
    if (startDate) {
      params.start_date = startDate;
    }
    
    if (endDate) {
      params.end_date = endDate;
    }
    
    return this.request('inbox', params);
  }
}

// Usage Examples

async function runExamples() {
  const api = new ConnectMediaAPI('your_username', 'your_password');
  
  try {
    // Example 1: Send an SMS
    console.log('Sending SMS...');
    const sendResult = await api.sendSMS('254712345678', 'Hello from ConnectMedia API!');
    if (sendResult.success) {
      console.log(`Message sent successfully! ID: ${sendResult.data.message_id}`);
    } else {
      console.log(`Failed to send message: ${sendResult.data.message || 'Unknown error'}`);
    }
    
    // Example 2: Check balance
    console.log('\nChecking balance...');
    const balanceResult = await api.checkBalance();
    if (balanceResult.success) {
      console.log(`Current balance: ${balanceResult.data.message}`);
    } else {
      console.log('Failed to retrieve balance');
    }
    
    // Example 3: Get message history
    console.log('\nRetrieving message history...');
    const historyResult = await api.getMessageHistory(10, 0, '2023-01-01');
    if (historyResult.success) {
      const messages = historyResult.data;
      const code = messages.code;
      delete messages.code;
      
      console.log(`Message History (Code: ${code}):`);
      Object.values(messages).forEach(message => {
        if (typeof message === 'object') {
          console.log(`ID: ${message.message_id}`);
          console.log(`Text: ${message.message_text}`);
          console.log(`Date: ${message.message_date}`);
          console.log(`Status: ${message.message_status}`);
          console.log('-------------------------------');
        }
      });
    } else {
      console.log('Failed to retrieve message history');
    }
    
    // Example 4: Get inbox messages
    console.log('\nRetrieving inbox messages...');
    const inboxResult = await api.getInboxMessages(10);
    if (inboxResult.success) {
      const messages = inboxResult.data;
      const code = messages.code;
      
      if (messages.message === 'No messages found') {
        console.log('No inbox messages found');
      } else {
        console.log(`Inbox Messages (Code: ${code}):`);
        Object.keys(messages).forEach(key => {
          if (key !== 'code' && typeof messages[key] === 'object') {
            const message = messages[key];
            console.log(`From: ${message.message_from}`);
            console.log(`Text: ${message.message_text}`);
            console.log(`Date: ${message.message_datetime}`);
            console.log('-------------------------------');
          }
        });
      }
    } else {
      console.log('Failed to retrieve inbox messages');
    }
    
  } catch (error) {
    console.error('Error:', error);
  }
}

// Run the examples
runExamples();

Python

import requests
from datetime import datetime

# ConnectMedia API Client - Complete Example

class ConnectMediaAPI:
    def __init__(self, username, password):
        self.credentials = {
            'username': username,
            'password': password
        }
        self.base_url = 'https://www.connectmedia.co.ke/user-board/'
    
    def request(self, action, params=None):
        # Determine API endpoint
        api_endpoint = '?api_v2' if action == 'inbox' else '?api'
        url = self.base_url + api_endpoint
        
        # Prepare request data
        data = {'action': action, **self.credentials}
        if params:
            data.update(params)
        
        try:
            # Send the request
            response = requests.post(url, data=data, timeout=30)
            
            # Parse response
            result = response.json()
            
            return {
                'success': response.status_code == 200,
                'status_code': response.status_code,
                'data': result
            }
        except requests.RequestException as e:
            return {
                'success': False,
                'error': str(e)
            }
        except ValueError:
            return {
                'success': False,
                'error': 'Invalid JSON response',
                'raw_response': response.text
            }
    
    # 1. Send an SMS message
    def send_sms(self, to, message, sender='ConectMedia'):
        return self.request('send', {
            'to': to,
            'message': message,
            'sender': sender
        })
    
    # 2. Check account balance
    def check_balance(self):
        return self.request('balance')
    
    # 3. Retrieve message history
    def get_message_history(self, limit=50, offset=0, start_date=None, end_date=None):
        params = {
            'limit': limit,
            'offset': offset
        }
        
        if start_date:
            params['start_date'] = start_date
        
        if end_date:
            params['end_date'] = end_date
        
        return self.request('history', params)
    
    # 4. Retrieve inbox messages
    def get_inbox_messages(self, limit=50, offset=0, start_date=None, end_date=None):
        params = {
            'limit': limit,
            'offset': offset
        }
        
        if start_date:
            params['start_date'] = start_date
        
        if end_date:
            params['end_date'] = end_date
        
        return self.request('inbox', params)


# Usage Examples

def run_examples():
    api = ConnectMediaAPI('your_username', 'your_password')
    
    # Example 1: Send an SMS
    print('Sending SMS...')
    send_result = api.send_sms('254712345678', 'Hello from ConnectMedia API!')
    if send_result['success']:
        print(f"Message sent successfully! ID: {send_result['data'].get('message_id')}")
    else:
        error_msg = send_result['data'].get('message', 'Unknown error') if 'data' in send_result else send_result.get('error', 'Unknown error')
        print(f"Failed to send message: {error_msg}")
    
    # Example 2: Check balance
    print('\nChecking balance...')
    balance_result = api.check_balance()
    if balance_result['success']:
        print(f"Current balance: {balance_result['data'].get('message')}")
    else:
        print('Failed to retrieve balance')
    
    # Example 3: Get message history
    print('\nRetrieving message history...')
    history_result = api.get_message_history(10, 0, '2023-01-01')
    if history_result['success']:
        messages = history_result['data']
        code = messages.get('code')
        
        print(f"Message History (Code: {code}):")
        for key, message in messages.items():
            if key != 'code' and isinstance(message, dict):
                print(f"ID: {message.get('message_id')}")
                print(f"Text: {message.get('message_text')}")
                print(f"Date: {message.get('message_date')}")
                print(f"Status: {message.get('message_status')}")
                print('-------------------------------')
    else:
        print('Failed to retrieve message history')
    
    # Example 4: Get inbox messages
    print('\nRetrieving inbox messages...')
    inbox_result = api.get_inbox_messages(10)
    if inbox_result['success']:
        messages = inbox_result['data']
        code = messages.get('code')
        
        if 'message' in messages and messages['message'] == 'No messages found':
            print('No inbox messages found')
        else:
            print(f"Inbox Messages (Code: {code}):")
            for key, message in messages.items():
                if key != 'code' and isinstance(message, dict):
                    print(f"From: {message.get('message_from')}")
                    print(f"Text: {message.get('message_text')}")
                    print(f"Date: {message.get('message_datetime')}")
                    print('-------------------------------')
    else:
        print('Failed to retrieve inbox messages')


if __name__ == "__main__":
    run_examples()