Skip to main content
Instagram is visually demanding. The API reflects that. If you don’t follow their rules on aspect ratios and media types, they will reject your content without mercy.

Supported Content Types

  • Posts: Single image, single video, or carousel (mixed images + videos). 1-10 files.
  • Reels: Video only. Must be vertical.
  • Stories: Image or video. Expire after 24 hours. Gone like your motivation on Monday morning.

Quirks & Gotchas

Aspect Ratios are Law

Instagram is very strict here.
  • Stories/Reels: Must be 9:16 (vertical). Technically the API accepts wider ratios, but they’ll look terrible.
  • Feed Posts: 4:5 (vertical) or 1:1 (square) for images. Videos are more flexible.
Don’t try to cheat. If you upload a 16:9 (landscape) video as a Reel, it might technically “work” but it will look terrible (awkwardly cropped) or be rejected entirely. Your marketing team will not be happy. Your users’ marketing teams will not be happy. Nobody will be happy.

Stories vs. Reels vs. Posts

  • Stories are ephemeral. They disappear after 24 hours. Great for FOMO content.
  • Reels are for growth. They’re public, discoverable, and the algorithm loves them.
  • Posts are for the feed grid. The permanent collection.

Media Limits

See Platform Limits for the full breakdown of file sizes, resolutions, and aspect ratios.

Analytics

For general analytics concepts (refresh rates, data retention, what “Returns 0” means), see the Analytics Overview.

Refresh Rate & Limits

  • Default Refresh: Every 24 hours.
  • Force Refresh: Available (max Teams × 5 per day).
  • Data Retention: 40 days. Details.

Profile Analytics

Period: Rolling window (30 days).
MetricDescriptionNote
impressionsTotal times profile content was shown
impressionsUniqueUnique accounts that saw contentCalled “Reach” by Instagram
viewsProfile views
viewsUnique-Returns 0 (not provided by API)
likesTotal likes
commentsTotal comments
postCountTotal posts published
followersTotal followers
followingTotal following

Post Analytics

Period: Lifetime (Snapshot).
MetricDescriptionNote
impressionsTotal viewsCalled “views” in Instagram API
impressionsUniqueUnique accounts reachedCalled “reach” in Instagram API
viewsVideo playsVideos/Reels only
viewsUnique-Returns 0 (not provided by API)
likesTotal likes
commentsTotal comments
sharesTotal sharesReels only
savesTotal saves

Raw Analytics - Demographics & Audience Data

Instagram provides some of the richest demographic data via raw analytics. Here’s what the raw payload looks like when enabled for your organization:
{
  "profileInfo": { /* basic account info */ },
  "totals30d": [ /* 30-day daily breakdown */ ],
  "demographics": {
    "follows_and_unfollows": {
      "data": [{
        "name": "follows_and_unfollows",
        "period": "day",
        "title": "Follows and unfollows",
        "total_value": { "value": { "follows": 142, "unfollows": 23 } }
      }]
    },
    "follower_demographics": {
      "country": {
        "data": [{
          "name": "follower_demographics",
          "total_value": {
            "breakdowns": [{
              "dimension_keys": ["country"],
              "results": [
                { "dimension_values": ["US"], "value": 4521 },
                { "dimension_values": ["GB"], "value": 1893 },
                { "dimension_values": ["DE"], "value": 1247 }
              ]
            }]
          }
        }]
      },
      "city": {
        "data": [{
          "name": "follower_demographics",
          "total_value": {
            "breakdowns": [{
              "dimension_keys": ["city"],
              "results": [
                { "dimension_values": ["New York, New York"], "value": 892 },
                { "dimension_values": ["London, England"], "value": 654 }
              ]
            }]
          }
        }]
      },
      "gender": {
        "data": [{
          "name": "follower_demographics",
          "total_value": {
            "breakdowns": [{
              "dimension_keys": ["gender"],
              "results": [
                { "dimension_values": ["M"], "value": 5234 },
                { "dimension_values": ["F"], "value": 4891 },
                { "dimension_values": ["U"], "value": 312 }
              ]
            }]
          }
        }]
      },
      "age": {
        "data": [{
          "name": "follower_demographics",
          "total_value": {
            "breakdowns": [{
              "dimension_keys": ["age"],
              "results": [
                { "dimension_values": ["18-24"], "value": 3421 },
                { "dimension_values": ["25-34"], "value": 4102 },
                { "dimension_values": ["35-44"], "value": 1893 },
                { "dimension_values": ["45-54"], "value": 721 }
              ]
            }]
          }
        }]
      }
    },
    "engaged_audience_demographics": {
      "country": { /* same structure as follower_demographics */ },
      "city": { /* same structure */ },
      "gender": { /* same structure */ },
      "age": { /* same structure */ }
    }
  }
}
Raw demographics include both follower demographics (lifetime, who follows you) and engaged audience demographics (this month, who interacts with your content). These are two different audiences and both are useful for understanding your reach.