Skip to main content
BetaWe are refining the new API docs. While exploring them, you may encounter minor issues. We appreciate your patience as we finalize the content.The existing API docs will be accessible until the transition is complete.

API Categories


Data Centers

MoEngage maintains multiple data centers. You are assigned to a specific data center when you sign up. You can identify your data center from your dashboard URL.
Data CenterDashboard URLREST API Host
DC-01https://dashboard-01.moengage.comhttps://api-01.moengage.com
DC-02https://dashboard-02.moengage.comhttps://api-02.moengage.com
DC-03https://dashboard-03.moengage.comhttps://api-03.moengage.com
DC-04https://dashboard-04.moengage.comhttps://api-04.moengage.com
DC-05https://dashboard-05.moengage.comhttps://api-05.moengage.com
DC-06https://dashboard-06.moengage.comhttps://api-06.moengage.com

Choosing a Data Center

If you have data privacy requirements to store user data in a specific geographical region:
  • US region: Sign up with DC-01 or DC-04
  • EU region: Sign up with DC-02
  • India region: Sign up with DC-03
  • Singapore region: Sign up with DC-05
  • Indonesia region: Sign up with DC-06
After data is captured in a workspace, it cannot be migrated to a different data center. Always use the REST API endpoint matching your registered data center.

Base URL

All API requests are made to:
https://api-{dc}.moengage.com
Replace {dc} with your data center number (e.g., 01, 02, 03). You can identify your data center from your Dashboard URL.
Each API may have additional path segments (e.g., /v1, /core-services/v1). Refer to the specific API documentation for the complete endpoint path.

Authentication

All MoEngage API requests require Basic Authentication. To authenticate, you must include a Base64-encoded string of your credentials in the Authorization header of every request. Basic Authentication sends a Base64-encoded string containing your username and password with every API request. It encodes a ‘username:password’ string in Base64 and appends the encoded string with ‘Basic ’. This string is included in the authorization header as shown below: {"Authorization: Basic Base64_ENCODED_WORKSPACEID_APIKEY=="}

Required Headers

Authorization: Basic {base64_encoded_credentials}
MOE-APPKEY: {your_workspace_id}
Content-Type: application/json

Generating Credentials

The Authorization header value is a Base64 encoding of workspace_id:api_key.
# Example: Encoding credentials
echo -n "YOUR_WORKSPACE_ID:YOUR_API_KEY" | base64

Getting Your Credentials

  1. Log in to the MoEngage dashboard.
  2. Navigate to Settings > Account > APIs.
api-dashboard
  1. Copy your Workspace ID and the relevant API Key.
You can perform authentication using a client like Postman as follows: Authorization

API Keys by Feature

Different APIs require different API keys from your dashboard:
APIAPI Key Location (Settings → Account → APIs)
DataData
PushPush
InformInform
CampaignsCampaign report/Business events/Custom templates/Catalog API/Inform Report
CatalogCampaign report/Business events/Custom templates/Catalog API/Inform Report
PersonalizePersonalize

Quick Start

Now that you have your credentials, make your first API request. This example creates a user profile using the Data API.
curl -X POST "https://api-01.moengage.com/v1/customer/YOUR_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -u "YOUR_WORKSPACE_ID:YOUR_DATA_API_KEY" \
  -d '{
    "type": "customer",
    "customer_id": "[email protected]",
    "attributes": {
      "name": "John Doe",
      "u_em": "[email protected]",
      "platforms": [
        {
          "platform": "ANDROID",
          "active": "true"
        }
      ]
    }
  }'
Replace api-01 with your data center’s API host (e.g., api-02, api-03).
Expected Response:
{
  "status": "success",
  "message": "Your request has been accepted and will be processed soon."
}

Rate Limits

Rate limits vary by API. Headers are included in responses to help you manage usage.
APIRate Limit
Campaigns API5 requests/min, 25 requests/hour, 100 requests/day
Catalog API100 requests/min or 1,000 requests/hour
Campaign Stats API100 requests/min/workspace
Custom Segments (Filter)50 requests/min, 200 requests/hour, 1,000 requests/day
Custom Segments (File)10 operations/hour, 100 operations/day

Rate Limit Response Headers

x-ratelimit-limit: 100
x-ratelimit-remaining: 95
x-ratelimit-reset: 1699574400

Payload Size Limits

APIMax Payload Size
Catalog API5 MB
Recommendations API1 MB
Bulk Import API100 KB
Custom Segments (File)150 MB per file

Error Handling

All APIs return consistent error responses.

Standard Error Format

{
  "status": "fail",
  "error": {
    "message": "The request parameters are invalid",
    "type": "Bad Request",
    "request_id": "abc123xyz"
  }
}

HTTP Status Codes

CodeDescription
200Success
201Created
202Accepted (async processing)
400Bad Request - Invalid parameters
401Unauthorized - Invalid credentials
403Forbidden - Access denied
404Not Found - Resource doesn’t exist
409Conflict - Duplicate resource
413Payload Too Large
429Rate Limit Exceeded
500Internal Server Error

Key Endpoints Reference

Data APIs

MethodEndpointDescription
POST/customer/{Workspace_ID}Create or update user
POST/customers/exportGet user details
POST/customer/mergeMerge two users
POST/customer/delete/bulkDelete users in bulk
POST/event/{Workspace_ID}Track user events
POST/device/{appId}Create or update device
POST/transition/{Workspace_ID}Bulk import users and events

Campaigns and Messaging

MethodEndpointDescription
POST/campaignsCreate Push or Email campaign
POST/transaction/sendpushSend push notification
POST/alerts/sendSend transactional alert (SMS/Email/Push)

Catalog

MethodEndpointDescription
POST/catalogCreate catalog
PATCH/catalog/{catalog_id}/attributesAdd catalog attributes
POST/catalog/{catalog_id}/itemsIngest catalog items
PATCH/catalog/{catalog_id}/itemsUpdate catalog items
POST/catalog/{catalog_id}/items/bulk-deleteDelete catalog items

Templates

MethodEndpointDescription
POST/custom-templates/pushCreate Push template
PUT/custom-templates/pushUpdate Push template
POST/custom-templates/push/searchSearch Push templates
POST/custom-templates/smsCreate SMS template
PUT/custom-templates/smsUpdate SMS template
POST/custom-templates/sms/searchSearch SMS templates
POST/custom-templates/inappCreate In-App template
PUT/custom-templates/inappUpdate In-App template
POST/custom-templates/inapp/searchSearch In-App templates
POST/custom-templates/osmCreate OSM template
PUT/custom-templates/osmUpdate OSM template
POST/custom-templates/osm/searchSearch OSM templates
POST/email-templatesCreate Email template
PUT/email-templates/{template_id}Update Email template
GET/email-templatesGet all Email templates
GET/email-templates/{template_id}Get Email template by ID

Content Blocks

MethodEndpointDescription
POST/content-blocksCreate content block
PUT/content-blocksUpdate content block
POST/content-blocks/get-by-idsGet content blocks by IDs
POST/content-blocks/searchSearch content blocks

Segments and Audiences

MethodEndpointDescription
POST/v2/custom-segments/file-segmentCreate file segment
POST/v3/custom-segments/Create filter segment
GET/v3/custom-segmentsList custom segments
GET/v3/custom-segments/{id}Get segment by ID

Business Events

MethodEndpointDescription
POST/business_eventCreate business event
POST/business_event/triggerTrigger business event
POST/business_event/searchSearch business events

Live Activities (iOS)

MethodEndpointDescription
POST/live-activity/broadcast/startStart Live Activity
POST/live-activity/broadcast/updateUpdate Live Activity
POST/live-activity/broadcast/endEnd Live Activity

Support

Need help with the API?
  • Help Center: help.moengage.com
  • Support: Contact your Customer Success Manager or reach out via the dashboard.