This document contains the requirements for sending freeform messages from your Instagram Professional account to your customers or people interested in your account using the Messenger Platform from Meta.
On July 23, 2024 we launched the new Instagram API with Instagram Login. An Instagram professional account – Business or Creator account – will no longer need to be linked to a Facebook Page in order to have conversations with customers, followers, or Instagram users interested in their business or Instagram account, manage comments, or publish media. Learn more about this new version in our blog post.
You can send a freeform message that contains:
This guide assumes you have read the Messenger Platform Overview and implemented the needed components such as a Facebook Page linked your Instagram Professional account (or test Page), registered as a Meta developer, and created a Business App ID with the Messenger > Instagram Messaging product in the App Dashboard.
You may also want to check the status of the Meta Developer Platform to ensure there are no issues.
MESSAGE task on the Facebook Page linked to your Instagram Professional accountinstagram_manage_messages permission| Media Type | Supported Format | Supported Size Maximum |
|---|---|---|
Audio | aac, m4a, wav, mp4 | 25MB |
Image | png, jpeg | 8MB |
Video | mp4, ogg, avi, mov, webm | 25MB |
For more information about media attachments, see Upload Media for Instagram Messaging.
To send a message that contains text or a link, send a POST request to the /PAGE-ID/messages endpoint with the recipient parameter containing the Instagram-scoped ID (IGSID) and the message parameter containing the text or link.
Message text must be UTF-8 and be a 1000 bytes or less. Links must be valid formatted URLs.
Formatted for readability.
curl -i -X POST \
"https://graph.facebook.com/LATEST-API-VERSION/me/messages?access_token=PAGE-ACCESS-TOKEN" \
--data 'recipient={"id":"IGSID"}&message={"text":"TEXT-OR-LINK"}'Upon success, your app will receive the following JSON response:
{
"recipient_id": "IGSID",
"message_id": "MESSAGE-ID"
}To send images, send a POST request to the /me/messages endpoint with the recipient parameter containing the Instagram-scoped ID (<IGSID>) and the message parameter containing up to ten attachment objects with type set to image and payload containing url set to the URL for the image.
Formatted for readability.
curl -X POST "https://graph.facebook.com/LATEST-API-VERSION/me/messages?access_token=PAGE-ACCESS-TOKEN
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"message":{
"attachment": {
"type":"image",
"payload":{
"url":"<IMAGE_URL>"
}
}
}
}'
Formatted for readability.
November 4, 2025: Multi-image send is a Beta feature that will be rolled out incrementally over a few weeks. While the feature is rolled out, you can handle the error response (see error response with subcode 2534068 below)
curl -X POST "https://graph.facebook.com/LATEST-API-VERSION/me/messages?access_token=PAGE-ACCESS-TOKEN
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"message":{
"attachments":[
{
"type":"image",
"payload":{
"url":"<IMAGE_URL>"
}
},
{
"type":"image",
"payload":{
"url":"<IMAGE_URL>"
}
},
{
...
}
]
}
}'
Upon success, your app will receive the following JSON response:
{
"recipient_id": "IGSID",
"message_id": "MESSAGE-ID"
}{
"error": {
"message": "The requested feature isn't available yet. Please check back later.",
"type": "IGApiException",
"is_transient": true,
"code": 2,
"error_subcode": 2534068,
"fbtrace_id": "AligRrOm344Dy7MGyP0Ua_C"
}
}To send a message that contains a post you published to Instagram, send a POST request to the /PAGE-ID/messages endpoint with the recipient parameter containing the Instagram-scoped ID (IGSID) and the message parameter containing an attachment object with the type set to MEDIA_SHARE and payload containing the Meta ID for the post.
Your business must own the media to be used in the message.
curl -i -X POST \
"https://graph.facebook.com/LATEST-API-VERSION/me/messages?access_token=PAGE-ACCESS-TOKEN" \
--data 'recipient={"id":"IGSID"}&message={
"attachment":
{
"type":"MEDIA_SHARE",
"payload":{"id":"POST-ID"}
}
}’Upon success, your app will receive the following JSON response:
{
"recipient_id": "IGSID",
"message_id": "MESSAGE-ID"
}To send a heart sticker, send a POST request to the /PAGE-ID/messages endpoint with the recipient parameter containing the Instagram-scoped ID (IGSID) and the message parameter containing an attachment object with the type set to like_heart.
Formatted for readability.
curl -i -X POST \
"https://graph.facebook.com/LATEST-API-VERSION/me/messages?access_token=PAGE-ACCESS-TOKEN" \
--data 'recipient={"id":"IGSID"}&message={
"attachment":
{
"type":"like_heart"
}
}’Upon success, your app will receive the following JSON response:
{
"recipient_id": "IGSID",
"message_id": "MESSAGE-ID"
}To send a reaction, send a POST request to the /PAGE-ID/messages endpoint with the recipient parameter containing the Instagram-scoped ID (IGSID) and the sender_action parameter to react with the payload containing the message_id set to the ID for the message to apply the reaction to and reaction to love.
Formatted for readability.
curl -i -X POST \
"https://graph.facebook.com/LATEST-API-VERSION/me/messages?access_token=PAGE-ACCESS-TOKEN" \
--data 'recipient={"id":"IGSID"}&sender_action=react&payload={
"message_id":"MESSAGE-ID",
"reaction":"love",
}'To remove a reaction from a message, send a POST request to the /PAGE-ID/messages endpoint with the recipient parameter containing the Instagram-scoped ID (IGSID) and the sender_action parameter to unreact with the payload containing the message_id set to the ID for the message from which to remove the reaction.
curl -i -X POST \
"https://graph.facebook.com/LATEST-API-VERSION/me/messages?access_token=PAGE-ACCESS-TOKEN" \
--data 'recipient={"id”:”IGSID”}&sender_action="unreact"&payload={
“message_id":"MESSAGE-ID",
}'Upon success, your app will receive the following JSON response for react and unreact requests:
{
"recipient_id": "IGSID"
}
Upload media such as audio, or image to Meta servers to be used in multiple messages.
Send a structured message such as a generic template, a product template, or a persistent menu.
to check for the status and outages of Meta business products.
to report bugs and view reported bugs, get help with Ads or Business Manager, and more.
to view more resources for Messenger Platform support.