List Campaigns

SMS V3 APIs

Your campaigns, newest first, with how many are in each status.

GEThttps://telcomw.com/api/v3/campaigns

Send the filters in the URL (query parameters). Your API key goes in the X-API-Key header.

Parameters

Parameter Sent in Required Description
X-API-Key header YES Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.
status query NO scheduled, running, completed, failed or cancelled.
q query NO Part of the name or of the sender ID.
page query NO The page number, starting at 1.
per_page query NO How many campaigns in a page, 1 to 100. The default is 20.

Example request

curl --location --request GET 'https://telcomw.com/api/v3/campaigns?status=scheduled&page=1&per_page=20' \
  --header 'X-API-Key: YOUR_API_KEY'
curl --location --request GET "https://telcomw.com/api/v3/campaigns?status=scheduled&page=1&per_page=20" ^
  --header "X-API-Key: YOUR_API_KEY"
<?php

$headers = [
    'X-API-Key: YOUR_API_KEY',
];

$ch = curl_init('https://telcomw.com/api/v3/campaigns?status=scheduled&page=1&per_page=20');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
const axios = require('axios');

axios.request({
  method: 'get',
  url: 'https://telcomw.com/api/v3/campaigns',
  params: {
    'status': 'scheduled',
    'page': '1',
    'per_page': '20'
  },
  headers: {
    'X-API-Key': 'YOUR_API_KEY'
  }
}).then((res) => console.log(res.data))
  .catch((err) => console.error(err.response ? err.response.data : err.message));
import requests

params = {
    'status': 'scheduled',
    'page': '1',
    'per_page': '20'
}
headers = {
    'X-API-Key': 'YOUR_API_KEY'
}

response = requests.request('GET', 'https://telcomw.com/api/v3/campaigns', params=params, headers=headers)
print(response.json())

Response

The response is JSON.

Response (200)

{
  "success": true,
  "request_id": "req_5f2c9a1d0e7b4a63",
  "data": {
    "summary": {
      "total": 3,
      "scheduled": 1,
      "running": 0,
      "completed": 2,
      "failed": 0,
      "cancelled": 0
    },
    "campaigns": [
      {
        "campaign_id": 42,
        "name": "November sale",
        "sender_id": "WGIT",
        "message": "Our sale starts today. Visit us!",
        "status": "scheduled",
        "scheduled_at": "2026-11-20T07:00:00.000Z",
        "recipients_source": "numbers",
        "group_id": null,
        "recipients": 2,
        "queued": 0,
        "failed": 0,
        "cost": 0,
        "currency": "MWK",
        "notify_before": true,
        "batch_ids": [],
        "error": null,
        "started_at": null,
        "completed_at": null,
        "created_at": "2026-11-05T09:12:44.000Z"
      }
    ],
    "pagination": {
      "page": 1,
      "per_page": 20,
      "total": 1,
      "pages": 1
    }
  }
}

Fields explained

FieldDescription
data.summaryHow many campaigns you have in each status, whatever the filters.
data.campaignsThe campaigns of this page. Each one is described under Campaign Details.
data.paginationThe page, the page size, the total and the number of pages.