# 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.

**Note:** This feature is currently not available on desktop.

## Requirements

This guide assumes you have read the [Instagram Platform Overview](https://developers.facebook.com/documentation/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

- [`GET /<YOUR_APP_USERS_YOUR_APP_USERS_IG_ID>/messenger_profile`](https://developers.facebook.com/docs/instagram-platform/reference/ig-user)
- [`POST /<YOUR_APP_USERS_YOUR_APP_USERS_IG_ID>/messenger_profile`](https://developers.facebook.com/docs/instagram-platform/reference/ig-user)
- [`DELETE /<YOUR_APP_USERS_YOUR_APP_USERS_IG_ID>/messenger_profile`](https://developers.facebook.com/docs/instagram-platform/reference/ig-user)

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
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
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
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.

```json
{
   "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
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

```json
{
  "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](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-instagram-login/messaging-api).