curl --request PATCH \
--url https://api-{dc}.moengage.com/v5/campaigns/{campaign_id}/status \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'MOE-APPKEY: <moe-appkey>' \
--header 'X-MOE-Request-Id: <x-moe-request-id>' \
--data '
{
"request_id": "{{request_id}}",
"action": "STOP"
}
'{
"response_id": "abc-601",
"type": "campaign",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"action": "STOP"
}
}{
"response_id": "abc-101",
"error": {
"code": "VALIDATION_FAILED",
"message": "One or more fields failed validation.",
"request_id": "req-push-001",
"details": [
{
"target": "campaign_delivery_type",
"message": "campaign_delivery_type value is required."
}
]
}
}{
"response_id": "abc-101",
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing credentials.",
"details": []
}
}{
"response_id": "abc-422",
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Action STOP is not valid for a PERIODIC campaign.",
"details": []
}
}{
"response_id": "abc-101",
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error.",
"details": []
}
}Applies a state transition to a published campaign. Supported for Email and Push campaigns.
curl --request PATCH \
--url https://api-{dc}.moengage.com/v5/campaigns/{campaign_id}/status \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'MOE-APPKEY: <moe-appkey>' \
--header 'X-MOE-Request-Id: <x-moe-request-id>' \
--data '
{
"request_id": "{{request_id}}",
"action": "STOP"
}
'{
"response_id": "abc-601",
"type": "campaign",
"data": {
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"action": "STOP"
}
}{
"response_id": "abc-101",
"error": {
"code": "VALIDATION_FAILED",
"message": "One or more fields failed validation.",
"request_id": "req-push-001",
"details": [
{
"target": "campaign_delivery_type",
"message": "campaign_delivery_type value is required."
}
]
}
}{
"response_id": "abc-101",
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing credentials.",
"details": []
}
}{
"response_id": "abc-422",
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Action STOP is not valid for a PERIODIC campaign.",
"details": []
}
}{
"response_id": "abc-101",
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error.",
"details": []
}
}GET /v5/campaigns/{campaign_id}.Rate Limits
| Rate Limit Name | Rate Limit |
|---|---|
| change campaign status per second | The total number of change campaign status requests per second per client is 10. |
| change campaign status per minute | The total number of change campaign status requests per minute per client allowed is 100. |
| change campaign status per hour | The total number of change campaign status requests per hour per client allowed is 6000. |
- Breaching the limits will reject the request.
- Per-hour and per-day limits use a rolling window of the last 1 hour and last 24 hours respectively.
Authorizations
Authentication is done via Basic Auth. This requires a base64-encoded string of your credentials in the format 'username:password'.
- Username: Use your MoEngage workspace ID (also known as the App ID). You can find it in the MoEngage dashboard at Settings > Account > APIs > Workspace ID (earlier app id).
- Password: On your MoEngage workspace, navigate to Settings → Account → API keys and click Create new key. The tab lists every API surface (Data, Segmentation, Push, Email, Campaigns, Templates, and more) and exposes per-resource actions. For Campaigns, ensure the View, Create & Manage, and Create, Manage & Publish checkboxes are selected.
For more information on authentication and getting your credentials, refer to Getting your credentials.
Send the value in the Authorization header as Basic followed by Base64-encoding of appkey:apisecret (workspace ID and API key).
Headers
Your MoEngage Workspace ID (App ID). Find it in the dashboard at Settings > Account > APIs > Workspace ID.
Correlates with response_id. Supply this header or request_id in the body; if both are set, they must match.
UUID v4. Required on all POST and PATCH requests except POST /v5/campaigns/{campaign_id}/validate. Repeating the same key returns the same response body.
Path Parameters
Raw 24-char ObjectId of the published campaign to transition.
Body
Send campaign status change request with action.
Changes the status of a single published campaign. One campaign ID per request.
Lifecycle action for an already published or scheduled campaign.
Each action applies only to specific delivery types and requires the campaign to be in a valid source state:
| Action | Supported delivery types | Valid source states |
|---|---|---|
STOP | ONE_TIME | ACTIVE, SCHEDULED, PAUSED, SENDING |
PAUSE | PERIODIC, EVENT_TRIGGERED | ACTIVE, SCHEDULED, SENDING |
RESUME | PERIODIC, EVENT_TRIGGERED | PAUSED |
STOP, PAUSE, RESUME A client-supplied identifier for this status change request, echoed back as response_id so you can correlate the request and response. This is not a deduplication key — to make a request idempotent, use the Idempotency-Key header. Replaying the same Idempotency-Key returns the original response.
Was this page helpful?