---
title: "List Instagram posts to boost"
method: GET
path: "/v1/ads/instagram-posts"
tags: ["Ad Accounts"]
---

# List Instagram posts to boost

`GET /v1/ads/instagram-posts`

Lists the media of the Instagram account this Meta connection can reach, so an existing Instagram post can be boosted without connecting the Instagram account separately. Each `posts[].id` is the existing-post id to send as `platformPostId` when creating the ad; Meta turns it into `source_instagram_media_id` on the creative. Identity resolution reuses the same resolver as `/v1/ads/instagram-accounts`. `igUserId` is always checked against the identities the connection can reach and is never trusted as sent. When no identity is reachable the endpoint fails instead of returning an empty list, and the two causes stay apart: `403 reconnect_required` means the connection predates Instagram access (Meta then omits `instagram_business_account` from the Page read rather than erroring, so it looks identical to having no data) and the account must be reconnected granting Instagram access, while `422 instagram_business_account_unresolved` means the Page genuinely has no Instagram professional account linked.

## Query parameters

- `accountId` string, required
- `adAccountId` string
- `igUserId` string
- `limit` integer
- `after` string

## Response `200`

Instagram posts available to boost.

- object
  - `igUserId` string, required — Instagram identity the posts belong to.
  - `username` string, required — Instagram username; empty when Meta does not expose it.
  - `posts` object[], required
    - `id` string, required — Instagram media ID. Pass this as the existing-post id when creating an ad.
    - `caption` string — Caption, when the media has one.
    - `mediaType` string, required — Meta media_type, e.g. IMAGE, VIDEO or CAROUSEL_ALBUM.
    - `mediaUrl` string — Media URL. Meta omits it for some media types.
    - `thumbnailUrl` string — Thumbnail URL. Present for VIDEO, where mediaUrl may be absent.
    - `permalink` string — Public Instagram permalink.
    - `timestamp` string, required — Publish time as Meta reports it.
  - `paging` object, required
    - `after` string, nullable, required — Cursor for the next page, or null when this is the last one.

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — The connection predates Instagram access (code reconnect_required) and must be reconnected, or the Meta asset is not accessible.
- `404` — The account or requested resource was not found or is not accessible. An account ID may have been disconnected and removed. Read GET /v1/accounts for current account IDs.
- `409` — The account exists but is inactive or needs reconnection. Reconnect it, then read GET /v1/accounts for its current account ID before retrying. Code: ads_connection_required.
- `422` — The Facebook Page has no linked Instagram professional account (code instagram_business_account_unresolved), or the connection has no Page selected and no adAccountId was passed (code linked_account_required).
- `501` — Only supported on Meta Ads, Facebook and Instagram accounts.

## Changes

- **2026-09-25** `2c04683ce694` — 12 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/adAccountId` to the response with the `404` status
  - added the optional property `details/adAccountId` to the response with the `409` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - …8 more
- **2026-09-21** `339f59df69dd` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/instagram-posts/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/e0122970214f?raw)
