Skip to main content
POST
/
v5
/
campaigns
/
search
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>' \
  --header 'X-MOE-Request-Id: <x-moe-request-id>' \
  --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": "[email protected]",
        "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 NameRate Limit
Search campaign per secondThe total number of search campaign requests per second per client allowed is 10.
Search campaign per minuteThe total number of search campaign requests per minute per client allowed is 100.
Search campaign per hourThe total number of search campaign requests per hour per client allowed is 6000.
Notes
  • 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

Authorization
string
header
required

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 SettingsAccountAPI 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

X-MOE-Tenant-ID
string

Workspace tenant ID. Set this to the workspace (App) ID from Settings > Account > APIs > Workspace ID.

This header is optional. When omitted, the API resolves the workspace from the Basic Auth credentials in the Authorization header.

In the V1 Campaigns API, the workspace ID was passed via the MOE-APPKEY request header. In V5, this header is renamed to X-MOE-Tenant-ID.

X-MOE-Request-Id
string
required

Correlates with response_id. Supply this header or request_id in the body; if both are set, they must match.

Idempotency-Key
string<uuid>
required

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

application/json

Provide the search criteria and pagination parameters for finding campaigns.

limit
integer
required

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.

Required range: 1 <= x <= 15
Example:

10

page
integer
required

The page number to retrieve (1-indexed).

For example, with 200 campaigns and a limit of 10, there are 20 pages.

Required range: x >= 1
Example:

1

request_id
string

An optional unique identifier for this search request (UUID v4 recommended).

  • In V1, request_id was 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.
Example:

"{{request_id}}"

campaign_fields
object

Filter criteria for searching campaigns.

The following filter field names changed from V1 to V5:

  • id (V1, string) is ids in V5 (array of strings). Pass a single-element array to replicate V1 single-ID filtering.
  • delivery_type (V1) is campaign_delivery_type in V5.

All other V1 filter fields (channels, created_by, created_date, name, status, tags) use the same names in V5.

include_child_campaigns
boolean
default:false

When true, includes child campaigns in results. Defaults to false.

Child campaign types included:

  • Periodic children: Carry parent_id in the response.
  • Flow-node campaigns: Carry flow_id and flow_name in the response.
include_archive_campaigns
boolean
default:false

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.

Response

Campaigns matching the filter criteria.

response_id
string
type
string
Example:

"campaign"

data
object

Search and meta list endpoints wrap rows under data.campaigns.