curl --request GET \
--url https://api-{dc}.moengage.com/v5/offers/templates/{template_id} \
--header 'Authorization: Basic <encoded-value>'{
"response_id": "resp_<trace-id>",
"type": "template",
"data": {
"id": "app_small",
"value": "app_small",
"label": "App small",
"template_config": {
"title": {
"label": "Title",
"outputKeyName": "title",
"value": "Life happens. Stay covered.",
"dataType": "md",
"validations": {
"REQUIRED": true
}
},
"lightMode": {
"label": "Light Mode",
"outputKeyName": "lightMode",
"value": "https://image.moengage.com/.../light-mode.jpg",
"dataType": "string",
"validations": {
"REQUIRED": true
}
},
"aspectRatio": {
"label": "Aspect Ratio",
"outputKeyName": "aspectRatio",
"value": "4x3",
"dataType": "dropdown",
"validations": {
"REQUIRED": true
},
"options": [
{
"id": "4x3",
"value": "4x3",
"label": "4x3"
},
{
"id": "16x9",
"value": "16x9",
"label": "16x9"
}
]
}
},
"template_html": "<!DOCTYPE html> ... ${config.lightMode.value} ... </html>",
"template_meta": {}
}
}"{\"code\":\"ER001\",\"target\":\"Authentication Invalid\",\"message\":\"Auth validation failed.\"}"{
"error": {
"code": "TEMPLATE_NOT_FOUND",
"message": "Template not found.",
"target": "offering",
"details": [
{
"code": "TEMPLATE_NOT_FOUND",
"target": "template_id",
"message": "Template not found."
}
],
"doc_url": "https://www.moengage.com/docs/api/offerings/offerings-overview"
},
"response_id": "resp_<trace-id>"
}{
"response_id": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"doc_url": "https://www.moengage.com/docs/api/offerings/offerings-overview",
"target": "<string>",
"details": [
{
"code": "<string>",
"target": "<string>",
"message": "<string>"
}
]
}
}{
"response_id": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"doc_url": "https://www.moengage.com/docs/api/offerings/offerings-overview",
"target": "<string>",
"details": [
{
"code": "<string>",
"target": "<string>",
"message": "<string>"
}
]
}
}"<html><body><h1>503 Service Temporarily Unavailable</h1></body></html>"Get Offer Template
Retrieve a single personalization template by its ID. The response returns the template’s full field schema — every field, its type, whether it’s required, and the valid options for dropdown fields — along with the template’s preview HTML.
Use this before building template-type offering content: fetch the template to see exactly which fields it needs and what values are valid, then supply those values in Create Offering. To find template IDs, use List Offer Templates.
curl --request GET \
--url https://api-{dc}.moengage.com/v5/offers/templates/{template_id} \
--header 'Authorization: Basic <encoded-value>'{
"response_id": "resp_<trace-id>",
"type": "template",
"data": {
"id": "app_small",
"value": "app_small",
"label": "App small",
"template_config": {
"title": {
"label": "Title",
"outputKeyName": "title",
"value": "Life happens. Stay covered.",
"dataType": "md",
"validations": {
"REQUIRED": true
}
},
"lightMode": {
"label": "Light Mode",
"outputKeyName": "lightMode",
"value": "https://image.moengage.com/.../light-mode.jpg",
"dataType": "string",
"validations": {
"REQUIRED": true
}
},
"aspectRatio": {
"label": "Aspect Ratio",
"outputKeyName": "aspectRatio",
"value": "4x3",
"dataType": "dropdown",
"validations": {
"REQUIRED": true
},
"options": [
{
"id": "4x3",
"value": "4x3",
"label": "4x3"
},
{
"id": "16x9",
"value": "16x9",
"label": "16x9"
}
]
}
},
"template_html": "<!DOCTYPE html> ... ${config.lightMode.value} ... </html>",
"template_meta": {}
}
}"{\"code\":\"ER001\",\"target\":\"Authentication Invalid\",\"message\":\"Auth validation failed.\"}"{
"error": {
"code": "TEMPLATE_NOT_FOUND",
"message": "Template not found.",
"target": "offering",
"details": [
{
"code": "TEMPLATE_NOT_FOUND",
"target": "template_id",
"message": "Template not found."
}
],
"doc_url": "https://www.moengage.com/docs/api/offerings/offerings-overview"
},
"response_id": "resp_<trace-id>"
}{
"response_id": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"doc_url": "https://www.moengage.com/docs/api/offerings/offerings-overview",
"target": "<string>",
"details": [
{
"code": "<string>",
"target": "<string>",
"message": "<string>"
}
]
}
}{
"response_id": "<string>",
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"doc_url": "https://www.moengage.com/docs/api/offerings/offerings-overview",
"target": "<string>",
"details": [
{
"code": "<string>",
"target": "<string>",
"message": "<string>"
}
]
}
}"<html><body><h1>503 Service Temporarily Unavailable</h1></body></html>"Rate Limit
The rate limit is 150 requests per minute, 500 requests per hour, and 1000 requests per day per consumer.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.
Path Parameters
The ID of the personalization template to retrieve (for example, app_small). This is the template's natural key, not a prefixed ObjectId. You can fetch template IDs using the List Offer Templates API.
Response
Template retrieved successfully.
Full detail for a single personalization template.
Trace identifier for the response.
"resp_<trace-id>"
Object type of the response. Always template for this endpoint.
template A personalization template's identity, its field-level configuration, and its preview HTML.
Show child attributes
Show child attributes