Create Template: Sample Requests

Learn how to use the Netcore CE Create Template API V5 with multiple use cases.

Before You Begin

The Contacts API requires an API key to authenticate your request.

HeaderRequiredDescriptionExample
api-keyYesYour Netcore API key used to authenticate the request.YOUR_API_KEY
Content-TypeYesSpecifies that the request body is sent in JSON format.application/json
📘

Important: Replace YOUR_API_KEY with your actual API key.

Create a Basic APN Template

When to use: Create a standard APN template with a title, message, and landing page, without optional rich media or interactive elements.

What changes: Set channel_name to apn, template_type to regular, and provide the basic content fields.

Best for: Welcome messages, order updates, reminders, and simple promotional notifications.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Order Update",
        "category_name": "Transactional",
        "custom": {
          "os": "all",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "Order Confirmed",
          "description": "The order has been confirmed.",
          "landing_page_type": "app_homepage",
          "landing_page_url": ""
        }
      }
    ]
  }
}

Validation note: Confirm whether landing_page_url can be empty when landing_page_type is app_homepage.


Create Templates for Different Template Types

When to use: Create different APN experiences for different campaign requirements, such as a standard notification and a rich-media notification.

What changes: Set custom.template_type to the appropriate supported value for each template. Configure content.apn_interactions and its optional fields according to the selected type.

Best for: Building a reusable template library for promotional, informational, and interactive campaigns.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Standard Promotion",
        "category_name": "Promotional",
        "custom": {
          "os": "all",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "Special Offer",
          "description": "Explore the latest offers.",
          "landing_page_type": "app_homepage",
          "landing_page_url": ""
        }
      },
      {
        "channel_name": "apn",
        "template_name": "Rich Media Promotion",
        "category_name": "Promotional",
        "custom": {
          "os": "android",
          "template_type": "<SUPPORTED_TEMPLATE_TYPE>",
          "Personalisation": {}
        },
        "content": {
          "title": "Explore Our Collection",
          "description": "Discover products picked for you.",
          "landing_page_type": "app_homepage",
          "landing_page_url": "",
          "apn_interactions": [
            {
              "os_type": "android",
              "rich_media": {
                "media_type": "image",
                "media_url": "https://example.com/promotion.jpg",
                "layout": "portrait",
                "image_alignment": "left"
              }
            }
          ]
        }
      }
    ]
  }
}

Create an APN Timer Template

When to use: Create an APN template that displays a countdown timer for a limited-time offer or promotion.

What changes: Set channel_name to apn, template_type to timer, and configure the timer duration, appearance, and end message.

Best for: Flash sales, limited-time discounts, promotional campaigns, and offer expiry reminders.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Limited Time Offer Timer",
        "category_name": "Promotional",
        "custom": {
          "os": "all",
          "template_type": "timer"
        },
        "content": {
          "title": "Special Offer",
          "description": "Your exclusive offer is available for a limited time.",
          "landing_page_type": "app_homepage",
          "apn_interactions": [
            {
              "os_type": "android",
              "timer": {
                "end_message": "Offer has ended",
                "background_color": "#FF6600",
                "text_color": "#FFFFFF",
                "settings": {
                  "type": "duration",
                  "days": 0,
                  "hours": 2,
                  "minutes": 0,
                  "seconds": 0
                }
              }
            },
            {
              "os_type": "ios",
              "timer": {
                "end_message": "Offer has ended",
                "background_color": "#FF6600",
                "text_color": "#FFFFFF",
                "settings": {
                  "type": "duration",
                  "days": 0,
                  "hours": 2,
                  "minutes": 0,
                  "seconds": 0
                }
              }
            }
          ]
        }
      }
    ]
  }
}

Create Platform-Specific Templates

When to use: Create templates with different content or interaction settings for Android and iOS.

What changes: Configure custom.os and content.apn_interactions[].os_type for the intended platform. Add platform-specific settings only where supported.

Best for: Campaigns where the notification experience differs between Android and iOS.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Platform Specific Offer",
        "category_name": "Promotional",
        "custom": {
          "os": "android",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "A Special Offer",
          "description": "Open the app to explore the offer.",
          "landing_page_type": "app_homepage",
          "landing_page_url": "",
          "apn_interactions": [
            {
              "os_type": "android",
              "rich_media": {
                "media_type": "image",
                "media_url": "https://example.com/android-offer.jpg",
                "layout": "portrait",
                "image_alignment": "left"
              }
            }
          ]
        }
      }
    ]
  }
}

Good to know: If a campaign requires both Android and iOS experiences, confirm whether the API expects separate templates or multiple entries in apn_interactions within the same template.


Create a Carousel Template with Multiple Products

When to use: Display multiple products, offers, or recommendations in a single notification.

What changes: Configure rich_media.media_type as carousel and provide multiple objects in carousel_metadata. Each item can include an image, title, description, and call-to-action.

Best for: Product discovery, cross-sell campaigns, seasonal promotions, and recommendation campaigns.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Product Carousel",
        "category_name": "Promotional",
        "custom": {
          "os": "android",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "Recommended for You",
          "description": "Explore these selected products.",
          "landing_page_type": "app_homepage",
          "landing_page_url": "",
          "apn_interactions": [
            {
              "os_type": "android",
              "rich_media": {
                "media_type": "carousel",
                "media_url": "",
                "layout": "portrait",
                "carousel_metadata": [
                  {
                    "image_url": "https://example.com/product-1.jpg",
                    "title": "Product One",
                    "description": "Explore product one.",
                    "call_to_action": {
                      "type": "url",
                      "url": "https://example.com/product-1"
                    }
                  },
                  {
                    "image_url": "https://example.com/product-2.jpg",
                    "title": "Product Two",
                    "description": "Explore product two.",
                    "call_to_action": {
                      "type": "url",
                      "url": "https://example.com/product-2"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    ]
  }
}

Good to know: Confirm whether media_url is required for carousel templates and whether there is a maximum number of carousel items.


Create a Template with Multiple Action Buttons

When to use: Provide multiple actions directly from a notification.

What changes: Add multiple objects to apn_interactions[].action_button, configuring each button's label, colors, and call-to-action.

Best for: Order updates with actions such as Track Order and View Details, or promotions with Shop Now and View Offer.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Order Actions",
        "category_name": "Transactional",
        "custom": {
          "os": "android",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "Your Order Is on Its Way",
          "description": "Choose an action to continue.",
          "landing_page_type": "app_homepage",
          "landing_page_url": "",
          "apn_interactions": [
            {
              "os_type": "android",
              "action_button": [
                {
                  "action_title": "Track Order",
                  "background_color": "#FFFFFF",
                  "text_color": "#000000",
                  "call_to_action": {
                    "type": "url",
                    "url": "https://example.com/track-order"
                  }
                },
                {
                  "action_title": "View Details",
                  "background_color": "#FFFFFF",
                  "text_color": "#000000",
                  "call_to_action": {
                    "type": "url",
                    "url": "https://example.com/order-details"
                  }
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

Good to know: Confirm the maximum supported number of action buttons and the allowed call_to_action.type values.


Create a Template with Personalisation

When to use: Create a template that uses dynamic values to tailor messages to individual recipients.

What changes: Configure custom.Personalisation according to the supported personalisation schema and use the corresponding placeholders in the content.

Best for: Personalised greetings, loyalty messages, product recommendations, and customer-specific offers.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Personalised Greeting",
        "category_name": "Promotional",
        "custom": {
          "os": "all",
          "template_type": "regular",
          "Personalisation": {
            "<SUPPORTED_KEY>": "<SUPPORTED_VALUE>"
          }
        },
        "content": {
          "title": "A Special Message",
          "description": "A personalised message for the recipient.",
          "landing_page_type": "app_homepage",
          "landing_page_url": ""
        }
      }
    ]
  }
}

Create a Template with a Countdown Timer

When to use: Display a countdown for a time-sensitive offer, sale, or event.

What changes: Add the timer object under apn_interactions and configure its text, colors, and settings.

Best for: Flash sales, limited-time offers, and event reminders.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Limited Time Offer",
        "category_name": "Promotional",
        "custom": {
          "os": "android",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "Offer Ends Soon",
          "description": "Shop before the offer expires.",
          "landing_page_type": "app_homepage",
          "landing_page_url": "",
          "apn_interactions": [
            {
              "os_type": "android",
              "timer": {
                "text": "Offer ends in",
                "end_message": "Offer ended",
                "background_color": "#FFFFFF",
                "text_color": "#000000",
                "settings": {
                  "type": "date_time",
                  "end_date_time": "2026-12-31T23:59:59",
                  "days": 0,
                  "hours": 0,
                  "minutes": 0,
                  "seconds": 0
                }
              }
            }
          ]
        }
      }
    ]
  }
}

Good to know: Confirm the accepted date-time format and whether duration-based settings or date-time settings are mutually exclusive.


Create a Template with Quick Reply

When to use: Allow recipients to respond directly from the notification using a quick-reply interaction.

What changes: Add quick_reply with the button text, placeholder text, and submission text.

Best for: Feedback collection, simple responses, and conversational campaigns.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Customer Feedback",
        "category_name": "Engagement",
        "custom": {
          "os": "android",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "How Was Your Experience?",
          "description": "Share feedback about your recent experience.",
          "landing_page_type": "app_homepage",
          "landing_page_url": "",
          "apn_interactions": [
            {
              "os_type": "android",
              "quick_reply": {
                "button_text": "Reply",
                "placeholder_text": "Enter feedback",
                "submission_text": "Thank you for your feedback."
              }
            }
          ]
        }
      }
    ]
  }
}

Good to know: Confirm platform compatibility and any character limits for quick-reply fields.


Create a Template with Custom Key-Value Parameters

When to use: Attach additional key-value data to a notification for supported downstream processing or application-specific use.

What changes: Add entries to content.custom_key_values, specifying the platform scope, key, and value.

Best for: Passing campaign identifiers, product references, or supported application metadata.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Product Notification",
        "category_name": "Promotional",
        "custom": {
          "os": "all",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "A Product Update",
          "description": "Explore the latest product information.",
          "landing_page_type": "app_homepage",
          "landing_page_url": "",
          "custom_key_values": [
            {
              "ostype": "android",
              "key": "campaign_id",
              "value": "campaign_123"
            },
            {
              "ostype": "android",
              "key": "product_id",
              "value": "product_456"
            }
          ]
        }
      }
    ]
  }
}

Good to know: Confirm whether duplicate keys are allowed, whether values must be strings, and how ostype interacts with custom.os.


Create Multiple Templates in a Single Request

When to use: Create several templates together instead of making separate API calls for each one.

What changes: Add multiple template objects to data.templates. Each object can have its own name, category, platform, and content.

Best for: Initial template setup, bulk onboarding, and synchronising a template library from an external system.

{
  "data": {
    "templates": [
      {
        "channel_name": "apn",
        "template_name": "Welcome Notification",
        "category_name": "Engagement",
        "custom": {
          "os": "all",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "Welcome",
          "description": "Welcome to our app.",
          "landing_page_type": "app_homepage",
          "landing_page_url": ""
        }
      },
      {
        "channel_name": "apn",
        "template_name": "Order Notification",
        "category_name": "Transactional",
        "custom": {
          "os": "all",
          "template_type": "regular",
          "Personalisation": {}
        },
        "content": {
          "title": "Order Update",
          "description": "There is an update on your order.",
          "landing_page_type": "app_homepage",
          "landing_page_url": ""
        }
      }
    ]
  }
}

Good to know: Document the maximum number of templates per request and how the API reports partial success or failure if one template in the batch is invalid.