FetchPI
Log in

Instagram user_posts API

Instagram user_posts data in one REST call — normalized to the stable JSON schema shared across every FetchPI platform.

  • 1 documented endpoints
  • GET /v1/ig/users/{username}/posts

Contract summary (English): List recent posts of a user (capability ig.user_posts)

Normalized response entity
instagram/user_posts
capability
ig.user_posts

Every response also carries freshness (cache / default / live) and billing metadata.

Use cases

  • Monitor what a {{platform}} account publishes, in order, with normalized per-item metrics.
  • Detect new activity when scheduled jobs re-query the feed — ideal for alerting and digest workflows.
  • Benchmark publishing cadence and engagement across accounts with comparable, structured output.

Response fields

Instagram user posts response (normalized envelope)

Response envelope for GET /v1/ig/users/{username}/posts (capability ig.user_posts). Cursor is opaque and platform-independent; when the upstream provider is switched the old cursors become invalid.

FieldTypeRequiredDescription
datapost[]Required—
next_cursorstring | nullRequiredOpaque pagination cursor; null when the list is exhausted.
meta.request_idstringRequired—
meta.freshness.modecache | default | liveRequired—
meta.freshness.age_secondsinteger | nullOptional—
meta.freshness.source_layercache | db | upstreamRequired—
meta.freshness.stalebooleanOptional—
meta.billing.cache_hitbooleanRequired—
meta.billing.amount_creditsintegerRequiredCredits actually charged for this request (the settlement unit; 1 credit = $0.0001, permanent).

Field notes are shown in the contract's original English.

Response meta

FieldTypeRequiredDescription
modecache | default | liveRequiredEffective mode after merging param > max_age > source policy (D-004).
age_secondsinteger | nullOptionalAge of served data; null when unknown.
source_layercache | db | upstreamRequiredWhich layer served the response (PRD §10).
stalebooleanOptionalTrue when stale data was served under stale_if_error / SWR (D-004).
billing.amount_creditsintegerRequiredMicro-USD (1e-6 USD) actually charged for this request.
billing.cache_hitbooleanRequired—

Field notes are shown in the contract's original English.

Example request & response

GET/v1/ig/users/{username}/posts
curl -H "Authorization: Bearer $MESHDATA_API_KEY" \
  "https://api.fetchpi.com/v1/ig/users/newdev/posts"
{
  "data": [
    {
      "id": "CwxOne00001",
      "platform": "instagram",
      "type": "post",
      "author": {
        "id": "1295448945",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "Carousel dump",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 1204,
        "comments": 36,
        "views": 0
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/1.jpg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/2.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    },
    {
      "id": "CwxTwo00002",
      "platform": "instagram",
      "type": "post",
      "author": {
        "id": "1295448945",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "Reel day",
      "created_at": "2026-09-16T08:00:00Z",
      "metrics": {
        "likes": 640,
        "comments": 21,
        "views": 60110
      },
      "attachments": [
        {
          "type": "video",
          "url": "https://cdn.example.com/reel2.mp4",
          "duration_ms": 30100
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": "QVFBQ2daOTItcGxhdGZvcm0",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}

Free demo

Create a free account, grab an API key and call this endpoint from the browser-based Playground.

Try it in the Playground

Parameter tables, error codes and response semantics for this endpoint live in the API documentation.

Open the endpoint reference

Frequently asked questions

Can I poll the feed on a schedule?

Yes — the endpoint is a plain REST call, so any scheduler can re-query it. Use the freshness parameters to control how current each answer is and how it is billed.

Can I try this endpoint for free?

Yes — register an account, grab an API key and call it from the Playground in the console.

How is the user_posts capability billed?

Data API calls are billed per request in credits, with different cache/live freshness multipliers. Current per-capability prices live on the pricing page.

Pricing

Per-request credit billing with cache/live freshness options — current prices live on the pricing page.