Skip to main content
POST

Rate Limit

The rate limit is 100 requests per minute, 300 requests per hour, and 600 requests per day per consumer.

承認

Authorization
string
header
必須

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.

ヘッダー

Idempotency-Key
string<uuid>
必須

UUID v4 idempotency token. Submitting the same key within 24 hours returns the original 201 response without re-creating the Offering. A different body hash on the same key returns 409 IDEMPOTENCY_CONFLICT. A concurrent in-progress request with the same key returns 409 DUPLICATE_IDEMPOTENCY_KEY.

X-MOE-Request-Id
string<uuid>

Client-supplied trace ID (UUID v4). Echoed back in the X-MOE-Request-Id response header. Use this to correlate client requests with server-side logs.

ボディ

application/json

Request body for creating an Offering via POST /v5/offers.

Required fields: display_name, priority, created_by, scheduling, segment_info, offer_content, variation_meta.

display_name
string
必須

Unique display name for this offering within the workspace. Names are case-sensitive and must be unique. Allowed characters: alphanumeric characters and underscores (_).

Required string length: 5 - 100
例:

"Summer_Sale_Promo_2026"

priority
integer
必須

Static priority score for offer ranking. Lower number means lower priority (1 is lowest priority, 100 is highest). This score is used when the Decision Policy ranking strategy is set to Offering Priority.

必須範囲: 1 <= x <= 100
created_by
string<email>
必須

Email address of the user creating this offering.

scheduling
object
必須

Scheduling window that determines when an offering is eligible for delivery. Both start_datetime and expiry_datetime are required when creating an offering.

segment_info
object
必須

Segment targeting configuration that controls which users are eligible to receive this offering.

included_filters: criteria a user MUST match to be eligible. excluded_filters: criteria that DISQUALIFY a user even if they match the included filters.

To target all users, use the built-in moe_all_users segment:

offer_content
object
必須

The core content payload delivered to the end-user. This object supports two mutually exclusive structures depending on whether your offering uses content variations or experimentation.

Mutually Exclusive: Do not provide both content_1 and locales in the same request payload. Doing so will result in a validation error.

1. Flat Format (No Content Variations)

Use this structure for simple offerings that do not require A/B testing or localization.

  • Payload Structure: Send a single content_1 object at the root level.
  • Behavior: The exact same content block is served universally to all eligible users.

2. Nested Format (Multiple Content Variations)

Use this structure when variation_meta.type is configured as either SMV (Static Multi-Variant) or DMV (Dynamic Multi-Variant).

  • Payload Structure: Send a structured locales map object.
  • Single-Locale Targeting: For single-locale offerings, you must use "0" as the literal locale key string.
  • Variations Mapping: Inside each locale, the nested variations map keys must exactly match the variation IDs defined in smv_distribution.split. Variation keys must follow the variation_N format (e.g. variation_1, variation_2).
例:
variation_meta
object
必須

Configuration for A/B testing content variations.

  • SMV: Fixed percentage splits across up to 5 variations.
  • DMV: The system automatically learns which variant performs best over time and shifts traffic toward the winner.
  • Offer Control Group: A configurable percentage of eligible users to be held out as a pure control group.

Lifecycle & Mutation Rules

variation_meta can be edited later via PATCH /v5/offers/{offer_id}, subject to status-based rules. Field mutability depends on both the offering status and the variation type. Attempting to modify a locked field returns a 400 IMMUTABLE_FIELD error.

例:
description
string

Optional free-text description of the offering's purpose, targeting rationale, or expected user experience. Visible in the MoEngage UI offering list.

Maximum string length: 500
例:

"20% discount for returning users who have not purchased in 30 days"

tags
string[]

Tags that provide context about the Offering's nature or theme. Each tag ID must already exist in the workspace — the service returns 400 INVALID_TAG_ID for any unknown tag ID.

Maximum array length: 10
例:
capping_rules
object

Frequency capping configuration that limits how often this offering is delivered. Two independent capping rules can be configured and enabled simultaneously.

overall: Limits the TOTAL number of times the offering is delivered across ALL users in the target segment within the capping schedule period.

user_level: Limits the number of times any SINGLE user can receive the offering within the capping schedule period.

例:
is_global_control_enabled
boolean
デフォルト:false

Whether the global control group is enabled.

imp_track_hours
integer

The attribution window in hours.

必須範囲: 1 <= x <= 240
例:

36

offering_attribute_configuration
object[]

Custom attributes assigned to this offering. These attributes are used in Decision Policy using the Custom formula ranking strategy.

Maximum array length: 5
conversion
object

Conversion goal configuration for measuring offering effectiveness. This can be set at creation time or later via PATCH while the offering is still in "scheduled" status. Once the offering goes "active", the conversion configuration is locked to preserve Thompson Sampling statistical integrity.

レスポンス

Offering created successfully.

Response returned by POST /v5/offers on successful creation.

response_id
string

Format: resp_<X-MOE-Request-Id> header value (auto-generated UUID if the X-MOE-Request-Id header was not part of the request body).

例:

"resp_c5f83262-3127-4e23-bc1b-9efd4c929e12"

type
enum<string>

Resource type discriminator. Always offer.

利用可能なオプション:
offer
data
object

Created offering summary.