API reference

Get the delivery report

The campaign plus every individual recipient row.

GEThttps://nextgenpanelstaging.cloudshope.com/api/v1/sms/campaigns/{id}/report

Returns the campaign object, every recipient (number, delivery status, failure reason and the sent / delivered timestamps) and status_counts, a count per recipient status. Without page every row is returned; with page the response adds total, page and page_size. Use this for a full "how did campaign X do"; use the lighter status endpoint just to check whether it is done.

Authentication

Send Authorization: Bearer <token>. Any valid API token for the account works.

Path parameters

NameTypeRequiredDescription
idintegerYesCampaign id.

Query parameters

NameTypeRequiredDescription
pageintegerNoPage number. Omit to return all rows.
page_sizeintegerNoRows per page, default 50, maximum 200.
statusenumNodelivered, pending, failed, invalid or skipped.
qstringNoRecipient number contains.
formatenumNocsv downloads the filtered rows as CSV.

Request

curl https://nextgenpanelstaging.cloudshope.com/api/v1/sms/campaigns/1207/report \
  -H "Authorization: Bearer cs_live_9f2c…"

Response

{
  "campaign": {
    "id": 1207,
    "campaign_name": "Diwali offer",
    "status": "Completed",
    "count": 2,
    "total_credits": 2
  },
  "recipients": [
    {
      "id": 55012,
      "number": "9876543210",
      "status": "Delivered",
      "reason": null,
      "sender_id": "CLDSHP",
      "sent_at": "2026-09-08T09:20:45.000Z",
      "delivered_at": "2026-09-08T09:20:52.000Z",
      "created_at": "2026-09-08T09:20:41.000Z"
    },
    {
      "id": 55013,
      "number": "9812345678",
      "status": "Failed",
      "reason": "Handset unreachable",
      "sender_id": "CLDSHP",
      "sent_at": "2026-09-08T09:20:45.000Z",
      "delivered_at": null,
      "created_at": "2026-09-08T09:20:41.000Z"
    }
  ],
  "status_counts": { "Delivered": 1, "Failed": 1 }
}
200 — example response

Errors

StatusTypeWhen
404not-foundNo campaign with this id on the account.
401unauthorizedThe Authorization header is missing, malformed or the token is invalid or expired.
403forbiddenThe token is valid but the account is not allowed to perform this action.