Appearance
Instagram User Profile API
Updated: Jan 21, 2025
The User Profile API allows your app to get an Instagram user's profile information using the user's Instagram-scoped ID received from an Instagram messaging webhook notification. Your app can use this information to create a personalized messaging experience for Instagram users who are interacting with your app users.
User Consent
User consent is required to access an Instagram user's profile.
User consent is set only when an Instagram user sends a message to your app user, or clicks an icebreaker or persistent menu. If an Instagram user comments on a post or comment but has not sent a message to your app user, and your app tries to send the Instagram user a message, your app will receive an error, User consent is required to access user profile.
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 your app user who received the webhook notification and who can manage messages on the Instagram professional account
Base URL
All endpoints can be accessed via the graph.instagram.com host.
Endpoints
/<IGSID>
IDs
- The Instagram-scoped ID (
<IGSID>) for the Instagram user interested in your app user; received from a webhook notification
Permissions
instagram_business_basicinstagram_business_manage_messages
Webhook event subscriptions
messagesmessaging_optinsmessaging_postbacksmessaging_referral
Limitations
- If the Instagram user has blocked your app user, your app will not be able to view the Instagram user's information.
Webhook notification
In order to get profile information for an Instagram user who has messaged your app user's Instagram professional account, you need the Instagram-scoped ID for the Instagram user that was sent in a message notification, the value of the messages.sender.id property.
{
"object": "instagram",
"entry": [
{
"id": "<YOUR_APP_USERS_IG_ID>", // Your app user's Instagram Professional account ID
"time": <UNIX_TIMESTAMP>,
"messaging": [
{
"sender": { "id": "<INSTAGRAM_SCOPED_ID>" }, // Instagram-scoped ID for the Instagram user who sent the message
...Get profile information
To get an the Instagram user's profile information, send a GET request to the /<INSTAGRAM_SCOPED_ID> endpoint, where <INSTAGRAM_SCOPED_ID> is the Instagram-scoped ID received in a messaging webhook notification, with the fields parameter set to a comma separated list of information you would like to view.
Sample Request
Formatted for readability.
curl -X GET "https://graph.instagram.com/v25.0/<INSTAGRAM_SCOPED_ID> \
?fields=name,username,profile_pic,follower_count,is_user_follow_business,is_business_follow_user \
&access_token=<INSTAGRAM_ACCESS_TOKEN>"On success, your app will receive the following JSON response:
{
"name": "Peter Chang",
"username": "peter_chang_live",
"profile_pic": "https://fbcdn-profile-...",
"follower_count": 1234
"is_user_follow_business": false,
"is_business_follow_user": true,
}Reference
| Field Name | Description |
|---|---|
access_tokenstring | The Instagram user access token from your app user who can manage messages on the Instagram professional account who received the webhook notification |
follower_countint | The number of followers the Instagram user has |
<IGSID> int | The Instagram-scoped ID returned in a webhook notification that represents the Instagram user who interacted with your app user's Instagram professional account and triggered the notification |
is_business_follow_user boolean | Indicates whether your app user follows the Instagram user (true) or not (false) |
is_user_follow_business boolean | Indicates whether the Instagram user follows your app user (true) or not (false) |
is_verified_userboolean | Indicates whether the Instagram user has a verified Instagram account (true) or not (false) |
namestring | The Instagram user's name (can be null if name not set) |
profile_picurl | The URL for the Instagram user's profile picture (can be null if profile pic not set). The URL will expire in a few days |
usernamestring | The Instagram user's username |
Next steps
Use this information to send a quick reply.