> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/instagram/v2-instagram-audio-audioid-media>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/instagram/v2-instagram-audio-audioid-media.mdx>

---

# Instagram audio Reels API

Page the public Reels that use a song or original sound, as the same media object every v2 endpoint returns, with the audio itself on the first page.

`GET /v2/instagram/audio/{audioId}/media` takes an audio id, the `id` of an audio search result or the `audio.id` of a Reel. Read `data.lookupStatus` first (`found` or `not_found`), then `data.media`: each Reel is the shared v2 media object (`id`, `shortcode`, `url`, `owner`, `metrics`, `videoUrl`, `audio`, `coauthors` and more), in Instagram's ranking for the audio, not chronological. The first page also has `data.audio`: the song or sound itself, with title, artist, length, `reelCount` and `isTrending`. Later pages have `audio` null.

When `data.page.hasMore` is true, pass `data.page.nextCursor` as the `cursor` query param on the next call. A cursor works only for the audio that issued it. Each page holds up to 12 Reels and is billed once, so read `meta.creditsCharged`. Use it to see who is using a sound, to find creators posting to a trending track, or to sample the Reels behind a song. For the audio alone, call `GET /v2/instagram/audio/{audioId}`. `meta.version` is `v2`.

## Request

- **Endpoint:** `GET /v2/instagram/audio/{audioId}/media`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by audio id
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v2/instagram/audio/audioid/media/get)
- **Platform page:** [/platforms/instagram](https://www.socialfetch.dev/platforms/instagram)

## FAQ

### How do I list the Reels that use an Instagram audio via API?

Call `GET /v2/instagram/audio/{audioId}/media` with your Social Fetch API key (`x-api-key`) and an audio id in the path. Read `data.lookupStatus`, then `data.media`, and keep following `data.page.nextCursor` while `data.page.hasMore` is true. See the API docs for parameters and examples.

### How much does the Instagram audio Reels API cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.

### Where do I get an audio id?

From `GET /v2/instagram/audio/search`, where each result's `id` is the audio id, or from the `audio.id` on a Reel returned by any v2 media endpoint.

### How many Reels come back per page?

Up to 12 Reels per page for licensed music and original audio alike. The last page can be shorter or empty, and `data.page.hasMore` is false on it. Instagram can report more pages than it has, so an empty page can end a list; like any served page, it costs 1 credit.

### Why is `audio` null on later pages?

Instagram describes the audio on the first page only, so `audio` is filled there and `null` after it. Call `GET /v2/instagram/audio/{audioId}` for the audio at any time.

### What does not_found mean?

Instagram doesn't know the id. The response is a normal `200` with `audio` null and an empty `media` list, billed as a page. Audio with no Reels is `found` with an empty list. An id from `GET /v2/instagram/audio/search` can occasionally resolve to `not_found`; then try that search result's `assetId` as the `audioId`.

### Can I page the list with a cursor from another audio?

No. The cursor is tied to the audio that issued it, so pass back the exact value you received with the same `audioId`. A cursor from another audio, or one that isn't ours, is a `400 bad_request`.
