Skip to main content

Subscription status

Reads whether a number is subscribed to your service. Changes nothing.

GET /api/sp/v1/dcb/subscription/status?serviceId=4821&msisdn=9647500000000

Request

FieldTypeNotes
serviceIdintegerQuery parameter. The service you are asking about.
msisdnstringQuery parameter.

One credential can span several services on the same short code, so every request says which service it acts on, this one included. A call without serviceId does not fall back to a default: it fails the service check and answers SERVICE_NOT_FOUND, which reads like a grant problem and is not one.

It is still the ideal first call when setting up: it exercises your token, your allowlisted IP, your grant and your capability, and it cannot do any damage.

Response

{
"requestId": "01JB2K9WQ4X7YH3M8N5P6R7T8V",
"code": "OK",
"data": {
"msisdn": "9647500000000",
"subscribed": true,
"state": "active",
"subscribedAt": "2026-09-01T08:14:22.000000Z"
}
}
FieldNotes
msisdnThe number, normalised.
subscribedTrue for an ongoing relationship: trial, active or grace.
statepending, trial, active, grace, expired, unsubscribed, or null if there has never been a subscription.
subscribedAtISO 8601, or null.

grace counts as subscribed. A subscriber in grace has not left: the billing engine is still retrying their charge. Reading grace as "not subscribed" is how an integration ends up asking a paying subscriber to opt in again.

Use it for checking, not for reacting

Do not poll this to learn about changes. Renewals, failures and endings reach you through DataSync as they happen. Status is for answering "what is true right now?": a support question, a reconciliation, a sanity check before an action.