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. RequirementsThis 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
Access tokens
Base URLAll endpoints can be accessed via the Endpoints
You can also use the | ![]() |
instagram_business_basic instagram_business_manage_messages messagesmessaging_postbacksTo 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.
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.
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>"
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.
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>",
}
]
}
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.
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.
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 accounttime set to when the notification was sentmessaging.sender.id set to the Instagram-scoped ID for the Instagram user who click a questionmessaging.recipient.id set to our app user's Instagram professional account who is receiving the notificationmessaging.timestamp set to when the user clicked on the questionmessaging.postback.title set to the question the Instagram user selectedmessaging.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>",
}
}
]
}
]
}
You've received a notification that an Instagram user clicked on an ice breaker, now send the user a response.