Send Messages |
This guide shows you how to send a message to an Instagram user from your Instagram professional account using the Instagram API with Instagram Login.
The Instagram API with Instagram Login enables your app users to send and receive messages between their Instagram professional account and their customers, potential customers, and followers.
Conversations only begin when an Instagram user sends a message to your app user through your app user's Instagram Feed, posts, story mentions, and other channels.
An Instagram professional account has a messaging inbox that allows the user to organize messages and control message notifications however when using the API the behavior will be a little different.
Learn more about the Instagram Inbox.
When an Instagram user sends a message to your app user, an event is triggered, and a webhook notification is sent to your webhook server. The notification contains the Instagram user's Instagram-scoped ID and their message. Your app user can use this information to respond.
Only after an Instagram user has sent your app user's Instagram professional account a message can your app send a message to the Instagram user. Your app has 24 hours to respond to any message sent from an Instagram user to your app user.
Messages can contain the following:
|
|
|
You can provide an escalation path for automated messaging experiences using one of the following:
Lorsque les lois applicables l’exigent, les agents de discussion automatisée doivent informer les utilisateur·ices qu’ils ou elles interagissent avec un service automatisé :
Une attention particulière doit être portée à cette exigence lorsque les expériences de discussion automatisée sont destinées aux groupes suivants :
Cette indication peut être formulée comme suit, entre autres : « Je suis le bot de [Nom de la page] », « Vous interagissez avec un service automatisé », « Vous parlez à un bot » ou « Je suis un bot de discussion automatisée ».
Même si cela n’est pas exigé par la loi, nous recommandons d’informer les utilisateur·ices lorsqu’ils ou elles interagissent avec un agent de discussion automatisée, car cela permet de gérer leurs attentes concernant leur interaction avec votre expérience de messagerie.
Consultez nos Politiques développeur pour plus d’informations.
If your app user uses a human agent to respond to messages and therefore may need more time to respond, your app can tag the response to allow your app to send the message outside the 24 hour messaging window.
You can provide an escalation path for human agent only messaging experiences with a custom inbox. Your messaging app must be able to:
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:
All endpoints can be accessed via the graph.instagram.com
host.
/<IG_ID>/messages
or /me/messages
The following are required parameters for each API request:
recipient:{id:<IGSID>}
message:{<MESSAGE_ELEMENTS>}
<IG_ID>
) that received the message<IGSID>
) for the Instagram user who sent the message to your app user, received from an Instagram messaging webhook notificationinstagram_business_basic
instagram_business_manage_messages
|
|
|
Media Type | Supported Format | Supported Size Maximum |
---|---|---|
Audio | aac, m4a, wav, mp4 | 25MB |
Image | png, jpeg, gif | 8MB |
Video | mp4, ogg, avi, mov, webm | 25MB |
To send a message that contains text or a link, send a POST
request to the /<IG_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 -X POST "https://graph.instagram.com/v24.0
/<IG_ID>/messages"
-H "Authorization: Bearer <INSTAGRAM_USER_ACCESS_TOKEN>"
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"message":{
"text":"<TEXT_OR_LINK>"
}
}'
To send an image or gif, send a POST
request to the /<IG_ID>/messages
endpoint with the recipient
parameter containing the Instagram-scoped ID (<IGSID>
) and the message
parameter containing an attachment
object with type
set to image
and payload
containing url
set to the URL for the image or GIF.
Formatted for readability.
curl -X POST "https://graph.instagram.com/v24.0
/<IG_ID>/messages"
-H "Authorization: Bearer <INSTAGRAM_USER_ACCESS_TOKEN>"
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"message":{
"attachment":{
"type":"image",
"payload":{
"url":"<IMAGE_OR_GIF_URL>",
}
}
}
}'
To send an audio message, send a POST
request to the /<IG_ID>/messages
endpoint with the recipient
parameter containing the Instagram-scoped ID (<IGSID>
) and the message
parameter containing the attachment
object with type
as audio
or video
and payload
containing url
set to the URL for the audio or video file.
Formatted for readability.
curl -X POST "https://graph.instagram.com/v24.0
/<IG_ID>/messages"
-H "Authorization: Bearer <INSTAGRAM_USER_ACCESS_TOKEN>"
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"message":{
"attachment":{
"type":"audio", // Or set to video
"payload":{
"url":"<AUDIO_OR_VIDEO_FILE_URL>",
}
}
}
}'
To send a heart sticker, send a POST
request to the /<IG_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 -X POST "https://graph.instagram.com/v24.0
/<IG_ID>/messages"
-H "Authorization: Bearer <INSTAGRAM_USER_ACCESS_TOKEN>"
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"message":{
"attachment":{
"type":"like_heart",
}
}
}'
To send a reaction, send a POST
request to the /<IG_ID>/messages
endpoint with the recipient
parameter containing the Instagram-scoped ID (<IGSID>
) and the sender_action
parameter set to react
and payload
containing the message_id
set to the ID for the message to apply the reaction to and reaction
set to love
.
To remove a reaction, repeat this request with the sender_action
parameter to unreact
with the payload
containing message_id
parameter only. Omit reaction
.
Formatted for readability.
curl -X POST "https://graph.instagram.com/v24.0
/<IG_ID>/messages"
-H "Authorization: Bearer <INSTAGRAM_USER_ACCESS_TOKEN>"
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"sender_action":"react", // Or set to unreact to remove the reaction
"payload":{
"message_id":"<MESSAGE_ID>",
"reaction":"love", // Omit if removing a reaction
}
}'
To send a message that contains an app user's Instagram post, send a POST
request to the /<IG_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.
The app user must own the post to be used in the message. Learn how to
get your app user's Instagram posts.
Learn how to fetch the media owned by the business.
Formatted for readability.
curl -X POST "https://graph.instagram.com/v24.0
/<IG_ID>/messages"
-H "Authorization: Bearer <INSTAGRAM_USER_ACCESS_TOKEN>"
-H "Content-Type: application/json"
-d '{
"recipient":{
"id":"<IGSID>"
},
"message":{
"attachment":{
"type":"MEDIA_SHARE",
"payload":{
"id":"<POST_ID>",
}
}
}
}'
Learn how to send a private reply, quick reply, or template.