Ice Breakers

Ice Breakers provide a way for your app users to start a conversation with a business with a list of frequently asked questions. A maximum of 4 questions can be set via the Ice Breaker API.

This feature is currently not available on desktop.

Requirements

This guide assumes you have read the Instagram Platform Overview and implemented the needed components for using this API, such as a Meta login flow and a webhooks server to receive notifications.

You will need the following:

Access Level

  • Advanced Access if your app serves Instagram professional accounts you don't own or manage
  • Standard Access if your app serves Instagram professional accounts you own or manage and have added to your app in the App Dashboard

Access tokens

  • An Instagram User access token requested from a person who can manage comments on the Instagram professional account

Base URL

All endpoints can be accessed via the graph.instagram.com host.

Endpoints

You can also use the /me/messenger_profile endpoints.

IDs

  • The ID for your app user's Instagram professional account

Permissions

  • instagram_business_basic
  • instagram_business_manage_messages

Webhook event subscriptions

  • messages
  • messaging_postbacks

Create Ice Breakers

To create ice breakers, send a POST request to the /<YOUR_APP_USERS_IG_ID>/messenger_profile endpoint, where <YOUR_APP_USERS_IG_ID> is the ID for your app user's Instagram professional account, and include the platform property set to instagram and the ice_breakers property with a call_to_actions array of question and payload objects.

Sample request

Formatted for readability.

curl -X POST -H "Content-Type: application/json" 
     -d '{
          "platform": "instagram",
          "ice_breakers":[
            {
              "call_to_actions":[
                {
                  "question":"<QUESTION_1>",
                  "payload":"<PAYLOAD_FOR_QUESTION_1>"
                },
                {
                  "question":"<QUESTION_2>",
                  "payload":"<PAYLOAD_FOR_QUESTION_2>"
                }
              ],
            },
          ]
        }' "https://graph.instagram.com/v25.0/<YOUR_APP_USERS_IG_ID>/messenger_profile?access_token=<INSTAGRAM_USER_ACCESS_TOKEN>"

You can set a call_to_actions array for each locale you include.

On success your app receives a JSON response with success set to true.

Sample request with multiple locales

To create ice breakers for multiple locales, include the locale property and call_to_actions array for each locale.

Formatted for readability.

curl -X POST -H "Content-Type: application/json" 
     -d '{
          "platform": "instagram",
          "ice_breakers":[
            {
              "call_to_actions":[
                {
                  "question":"<QUESTION_1>",
                  "payload":"<PAYLOAD_FOR_QUESTION_1>"
                },
                {
                  "question":"<QUESTION_2>",
                  "payload":"<PAYLOAD_FOR_QUESTION_2>"
                }
              ],
              "locale": "zh_CN",
              "call_to_actions":[
                {
                  "question":"<QUESTION_1_zh_CN>",
                  "payload":"<PAYLOAD_FOR_QUESTION_1_zh_CN>"
                },
                {
                  "question":"<QUESTION_2_zh_CN>",
                  "payload":"<PAYLOAD_FOR_QUESTION_2_zh_CN>"
                }
              ]
            }
          ]
        }' "https://graph.instagram.com/v25.0/<YOUR_APP_USERS_IG_ID>/messenger_profile?access_token=<INSTAGRAM_USER_ACCESS_TOKEN>"

List Ice Breakers

To get a list of your ice breakers, send a GET request to the /me/messenger_profile endpoint, where me is the ID for your app user's Instagram professional account, with the fields parameter set to ice_breakers.

Sample request

Formatted for readability.

curl -X GET "https://graph.instagram.com/v25.0/me/messenger_profile
     ?fields=ice_breakers
     &access_token=<INSTAGRAM_USER_ACCESS_TOKEN>"

On success your app receives a JSON response with an array of call_to_actions properties that include questions and payloads and locales, if applicable.

{
   "data": [
        {
          "call_to_actions" : [
               {
                "question": "<QUESTION_1>",
                "payload": "<PAYLOAD_1>",
             
               },
               {
                "question": "<QUESTION_2>",
                "payload": "<PAYLOAD_2>",
             
               },
          ],
          "locale": "<LOCALE_1>",
      },
      {
          "call_to_actions" : [
               {
                "question": "<QUESTION_3>",
                "payload": "<PAYLOAD_3>",
             
               },
               {
                "question": "<QUESTION_4>",
                "payload": "<PAYLOAD_4>",
             
               },
          ],
          "locale": "<LOCALE_2>",
      }
   ]
}

Delete ice breakers

To delete ice breakers, send a DELETE request to the /<YOUR_APP_USERS_IG_ID>/messenger_profile endpoint, where <YOUR_APP_USERS_IG_ID> is the ID for your app user's Instagram professional account, with the fields parameter set to an array that includes ice_breakers.

Sample request

Formatted for readability.

curl -X DELETE -H "Content-Type: application/json" -d '{
    "fields": [
      "ice_breakers",
    ]
  }' "https://graph.instagram.com/v25.0/me/messenger_profile?access_token=<INSTAGRAM_USER_ACCESS_TOKEN>"

On success your app receives a JSON response with success set to true.

Webhook Notifications

When the messaging_postback event webhook is triggered, we will send your webhook server a notification with a JSON object that includes the following:

  • id set to your app user's Instagram professional account
  • time set to when the notification was sent
  • messaging.sender.id set to the Instagram-scoped ID for the Instagram user who click a question
  • messaging.recipient.id set to our app user's Instagram professional account who is receiving the notification
  • messaging.timestamp set to when the user clicked on the question
  • messaging.postback.title set to the question the Instagram user selected
  • messaging.postback.payload set to the content associated with the question that was chosen
{
  "object": "instagram",
  "entry": [
    {
      "id": "<YOUR_APP_USERS_IG_ID>",
      "time": <UNIX_TIMESTAMP>,
      "messaging": [
        {
          "sender": {
            "id": "<IGSID>"
          },
          "recipient": {
            "id": "<YOUR_APP_USERS_IG_ID>"
          },
          "timestamp": <UNIX_TIMESTAMP>,
          "postback": {
            "title": "<USER_SELECTED_ICEBREAKER_QUESTION>",
            "payload": "<QUESTION_PAYLOAD>",
          }
        }
      ]
    }
  ]
}

Next steps

You've received a notification that an Instagram user clicked on an ice breaker, now send the user a response.