GSM Delivery Report — Pull API

A simple pull-based alternative to the GSM Delivery Report webhook — use this if you'd rather fetch delivery status on demand instead of (or in addition to) receiving webhook pushes. This is especially useful as a fallback for cases where a webhook delivery attempt fails or is missed.


Fetch Delivery Report

Endpoint

GET https://wa20.nuke.co.in/webhook/api/getGSMreport.php?request_id={your_request_id}

POST with the same parameter in a JSON body also works.

Query / Body Parameters

Any one of the following is accepted (checked in this order — the first non-empty one found is used):

ParameterWhereDescription
request_idQuery or bodyThe request_id returned when you originally sent the broadcast.
requestidQuery or bodyAlternate name for the same value.
provider_message_idQuery or bodyAlternate name for the same value.
providermessageidQuery or bodyAlternate name for the same value.
providerMessageIdBody onlyAlternate name for the same value.

Example Request

GET https://wa20.nuke.co.in/webhook/api/getGSMreport.php?request_id=GSMCAMP_20260711_6BA86822

cURL Example

curl -X GET "https://wa20.nuke.co.in/webhook/api/getGSMreport.php?request_id=GSMCAMP_20260711_6BA86822"

Example Response — 200 OK

{
  "success": true,
  "request_id": "GSMCAMP_20260711_138476",
  "data": {
    "summary": {
      "requestid": "GSMCAMP_20260711_138476",
      "username": "yourusername",
      "deduction": "4",
      "contacts": "2",
      "broadcast_name": "anything",
      "schedule_time": "2026-07-11 10:15:32",
      "schedule_date": "2026-07-11"
    },
    "total_rows": 2,
    "status_counts": {
      "DELIVERED": 1,
      "PP1": 1
    },
    "records": [
      {
        "event": "gsm.status.update",
        "providerMessageId": "GSMCAMP_20260711_138476",
        "receiver": "919912345678",
        "status": "DELIVERED",
        "status_code": 0,
        "error_code": null,
        "errorMessage": null
      },
      {
        "event": "gsm.status.update",
        "providerMessageId": "GSMCAMP_20260711_138476",
        "receiver": "918812345678",
        "status": "PP1",
        "status_code": 0,
        "error_code": null,
        "errorMessage": null
      }
    ]
  }
}

Response Fields

FieldDescription
request_idThe request_id you queried for.
data.summaryThe original broadcast record — username, credits deducted, contact count, broadcast name, and schedule info.
data.total_rowsNumber of individual recipient records found for this request_id.
data.status_countsA quick count of how many recipients are in each status.
data.recordsPer-recipient delivery detail, in the same shape as the delivery report webhook payload — so you can reuse the same parsing logic on your end.

records[].status values you'll typically see:

StatusMeaning
SENTMessage has been sent out and is awaiting final delivery confirmation.
DELIVEREDMessage was successfully delivered to the recipient's handset.
FAILEDMessage could not be delivered. Check errorMessage for details.
Anything else (e.g. PP1)Still being processed — hasn't reached a final delivery state yet. Poll again after a short interval.

Error Responses

StatusMessageReason
400request_id is requiredNo request_id (or any of its aliases) was found in the request.
404Report not foundNo broadcast or delivery records exist for the given request_id.
500Database connection failed / Failed to prepare report query / Failed to prepare delivery details queryServer/database error.

Notes

  • No authentication is currently required to pull a report — any request_id (or alias) that matches a broadcast will return its data. Since request_id values aren't easily guessable, treat this as security-through-obscurity rather than a hard access control, and avoid exposing request IDs publicly.
  • Use this endpoint if you didn't get (or aren't sure you got) a webhook push for a given message — it always reflects the latest known status.
  • This is a good complement to the webhook: use the webhook for real-time updates, and fall back to this pull API to double-check or backfill anything you might have missed.