Skip to main content
GET
/
v5
/
offers
List Offerings
curl --request GET \
  --url https://api-{dc}.moengage.com/v5/offers \
  --header 'Authorization: Basic <encoded-value>'
{
  "response_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "offer",
  "data": {
    "items": [
      {
        "id": "offer_683abc123def456789012345",
        "name": "Summer_Sale_Promo_2026",
        "status": "active",
        "tags": [
          "tag_summer_sale",
          "tag_returning_users"
        ],
        "created_at": "2026-06-01T08:30:00Z",
        "created_by": "[email protected]"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "has_more": true,
      "total_count": 42
    }
  }
}

Rate Limit

The rate limits are at the workspace level. Each endpoint allows 100 requests per minute, 300 requests per hour, and 600 requests per day.

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: Use your API Key, which you can find within the Personalize tile.

For more information on authentication and getting your credentials, refer here.

Headers

X-MOE-Request-Id
string<uuid>

Client-supplied trace ID (UUID v4). The server echoes it in the X-MOE-Request-Id response header and records it in its logs, so you can correlate a client request with server-side activity. If you omit it, the server generates one.

Query Parameters

id
string

Filter by exact offering ID, including the offer_ prefix.

name_contains
string

Case-insensitive substring match on the offering name. Maximum 100 characters; a longer value returns 400 OUT_OF_RANGE.

Maximum string length: 100
status_in
string

Comma-separated list of statuses to match (OR semantics — an offering is returned if its status matches any value). Case-insensitive. Valid values: active, scheduled, expired, archived, draft. Example: status_in=active,scheduled.

tags
string[]

Filter by tag ID (AND semantics — an offering is returned only if it has all specified tags). Repeat the parameter for each tag: tags=tag_summer_sale&tags=tag_loyalty.

created_date_gte
string<date>

Return offerings created on or after this date (YYYY-MM-DD).

created_date_lte
string<date>

Return offerings created on or before this date (YYYY-MM-DD).

created_by
string[]

Filter by creator email address. Repeat the parameter for multiple creators: [email protected]&[email protected].

fields
string

Comma-separated list of fields to include for each item. Case-sensitive. Defaults to all six fields: id, name, status, tags, created_at, created_by. An unrecognized field name returns 400 INVALID_FIELDS_PARAM. Example: fields=id,name,status.

page
integer
default:1

Page number to retrieve, starting at 1. Maximum 500; a higher value returns 400 OUT_OF_RANGE. When the page number exceeds the total number of available pages, returns an empty items array (not an error).

Required range: 1 <= x <= 500
limit
integer
default:20

Number of items per page. Default 20, maximum 100.

Required range: 1 <= x <= 100

Response

Paginated list of offerings.

response_id
string

Server-generated UUID for tracing this response.

type
enum<string>

Resource type discriminator. Always offer.

Available options:
offer
data
object