SMS Campaign Status
GET
/api/v2/sms/campaign/status Base URL https://api.easify.liveBearer token and Accept header required Authentication →
This endpoint is used to fetch sms campaign status.
The user can fetch the SMS Campaign status using the campaign_id, which is provided in the SMS Campaign Send API response.
There is a rate limit of 60 requests per minute per API token. This limit is shared by all API endpoints except those with their own separate limit (/api/v2/sms/send, /api/v3/sms/send, etc.), so requests to other endpoints also count toward it. If you exceed this limit, you will receive a 429 Too Many Requests status, along with a message indicating when you can try again.
Query Parameters
| campaign_id integer | Unique identifier for the campaign. Returned in the response of the SMS Campaign Send API. | Required |
Example Request and Response
Params:
{
"campaign_id": 313
}
Success Response:
{
"status": true,
"message": "SMS Campaign Status Fetched Successfully",
"data": {
"campaign_id": 313,
"status": "Completed",
"campaign_name": "New",
"total_recipients_count": 9999,
"pending_count": 0,
"running_count": 0,
"hold_count": 0,
"success_count": 9999,
"failed_count": 0,
"cancelled_count": 0,
"estimated_credits": 89991,
"credits_spend": 89991,
"url_shortening_estimated_credits": 0,
"url_shortening_credits_spent": 0,
"scheduled_at": null,
"scheduled_timezone": null,
"remarks": "",
"completed_at": "08-26-2025 01:20:16 AM",
"cancelled_at": null,
"created_at": "08-26-2025 01:14:58 AM"
}
}
SMS Status
| Status | Description |
|---|---|
| Preparing/Processing | The SMS campaign is in the queue and preparing to start. |
| Running | The SMS campaign has been successfully started and the messages are being sent. |
| Hold | The SMS campaign is on hold. This can happen due to insufficient credits, or it may be placed on hold manually by the user from the web app. |
| Cancelled | The SMS campaign has been cancelled. This may occur if the contact group was updated after the campaign was created (causing a contact count mismatch), if the user manually cancelled it from the web app, or due to other issues. |
| Completed | The SMS campaign is completed, and all messages have been sent. |
| Scheduled | If the user schedules a campaign using schedule_time and schedule_timezone, it will be sent at the scheduled time. |
Responses
| Case | Status Code | Response |
|---|---|---|
| If the user does not provide a token in the header or provides an invalid token | 401 |
{
"status":false,
"message":"Unauthenticated",
"errors":[]
}
|
| If user not provided campaign_id | 422 |
{
"message": "The campaign id field is required.",
"errors": {
"campaign_id": [
"The campaign id field is required."
]
}
}
|
| If user provided invalid campaign_id | 422 |
{
"message": "The selected campaign id is invalid.",
"errors": { "campaign_id": [
"The selected campaign id is invalid."
]}
}
|
| If the user exceeds the allowed rate limit for requests | 429 |
{
"status":false,
"message":"Too many requests. Try again in 59 seconds",
"errors":[]
}
|
| If the user's subscription has ended | 402 |
{
"status":false,"message":"You need to recharge your account to proceed","errors":[]
}
|
| When the user account is inactive | 403 |
{
"status": false,
"message": "Your account is currently inactive.",
"errors": []
}
|
| If the request comes from an IP address or domain that is not on the account's API whitelist | 400 |
{
"status": false,
"message": "Access denied! Your IP or domain is not whitelisted.[ HostName : ] - [ Ip Address : << YOUR_SERVER_IP >>]",
"errors": []
}
|
Code Examples
Fetch the SMS campaign status
php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.easify.live/api/v2/sms/campaign/status?campaign_id=313',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <> ',
'Accept: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;