curl --request POST \
--url https://api-{dc}.moengage.com/v5/campaigns/search \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"request_id": "{{request_id}}",
"limit": 15,
"page": 1,
"campaign_fields": {
"channels": [
"EMAIL"
]
}
}
'{
"response_id": "resp-search-001",
"type": "campaign",
"data": {
"campaigns": [
{
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"campaign_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"status": "ACTIVE",
"channel": "PUSH",
"campaign_delivery_type": "PERIODIC",
"created_by": "marketer@example.com",
"created_at": "2024-01-01 08:00:00.000000",
"updated_at": "2024-06-01 10:00:00.000000",
"basic_details": {
"name": "Weekly Engagement Push",
"platforms": [
"ANDROID",
"IOS"
],
"tags": [
"engagement"
],
"team": "Growth Team"
}
}
]
}
}Returns the full V5 campaign payload for all campaigns that match the specified filters. Supports pagination and filtering by channel, status, tags, name, IDs, dates, delivery type, and creator.
curl --request POST \
--url https://api-{dc}.moengage.com/v5/campaigns/search \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"request_id": "{{request_id}}",
"limit": 15,
"page": 1,
"campaign_fields": {
"channels": [
"EMAIL"
]
}
}
'{
"response_id": "resp-search-001",
"type": "campaign",
"data": {
"campaigns": [
{
"id": "64a1b2c3d4e5f6a7b8c9d0e1",
"campaign_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"status": "ACTIVE",
"channel": "PUSH",
"campaign_delivery_type": "PERIODIC",
"created_by": "marketer@example.com",
"created_at": "2024-01-01 08:00:00.000000",
"updated_at": "2024-06-01 10:00:00.000000",
"basic_details": {
"name": "Weekly Engagement Push",
"platforms": [
"ANDROID",
"IOS"
],
"tags": [
"engagement"
],
"team": "Growth Team"
}
}
]
}
}Rate Limits
| Rate Limit Name | Rate Limit |
|---|---|
| Search campaign per second | The total number of search campaign requests per second per client allowed is 10. |
| Search campaign per minute | The total number of search campaign requests per minute per client allowed is 100. |
| Search campaign per hour | The total number of search campaign 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). Find it in the MoEngage dashboard at Settings > Account > API keys.
- Password: Use an API key from Settings > Account > API keys.
Refer to API Key Dashboard for details on creating and managing API keys.
Headers
Your MoEngage Workspace ID (App ID). Optional — Basic Auth already carries the Workspace ID as the username, so this header is not required. Find it in the dashboard at Settings > Account > API keys.
Client-supplied trace ID for tracing. 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.
Body
Provide the search criteria and pagination parameters for finding campaigns.
The number of campaigns to return per page.
Maximum: 15. The response does not include a total_count field - to determine
the total number of results, keep paginating until a response returns fewer items
than limit.
1 <= x <= 1510
The page number to retrieve (1-indexed).
For example, with 200 campaigns and a limit of 10, there are 20 pages.
x >= 11
An optional unique identifier for this search request (UUID v4 recommended).
- In V1,
request_idwas required on every search call. In V5, it is optional. - Providing it is recommended for traceability and debugging. MoEngage support can use the value to locate the specific request in server logs.
"{{request_id}}"
Filter criteria for searching campaigns.
The following filter field names changed from V1 to V5:
id(V1, string) isidsin V5 (array of strings). Pass a single-element array to replicate V1 single-ID filtering.delivery_type(V1) iscampaign_delivery_typein V5.
All other V1 filter fields (channels, created_by, created_date, name, status, tags) use the same names in V5.
Show child attributes
Show child attributes
When true, includes child campaigns in results. Defaults to false.
Child campaign types included:
- Periodic children: Carry
parent_idin the response. - Flow-node campaigns: Carry
flow_idandflow_namein the response.
When true, includes campaigns in ARCHIVED status in search results.
By default, archived campaigns are excluded even if ARCHIVED is not in
campaign_fields.status.
Defaults to false.