---
title: Instagram API Integration on Truto
slug: instagram
category: Marketing Automation
canonical: "https://truto.one/integrations/detail/instagram/"
---

# Instagram API Integration on Truto



**Category:** Marketing Automation  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 30 tools for Instagram that AI agents can call directly.

- **update_a_instagram_instagram_media_by_id** — Enable or disable comments on an Instagram Media by id. Returns: success. Required: id, comment_enabled. Live video Instagram Media not supported.
- **delete_a_instagram_instagram_media_by_id** — Delete an Instagram Media by id. Returns: success, deleted_id. Required: id. Only supports non-ad posts, Stories, Reels, and entire carousel albums; individual carousel child media cannot be deleted separately.
- **list_all_instagram_instagram_media** — List Instagram media objects on an IG User. Returns: id, uri, success. Required: ig_user_id.
- **create_a_instagram_instagram_media** — Create an Instagram media container (image, carousel, story, or reel) for later publishing via the media_publish endpoint. Returns: id, uri. Required: ig_user_id. Containers expire after 24 hours; an account can create up to 400 containers per rolling 24-hour period.
- **instagram_instagram_media_publish** — Publish a previously created IG Container (single media or carousel) on an Instagram Business account. Returns: id. Required: ig_user_id, creation_id. The container must reach FINISHED status before publishing and expires if not published within 24 hours.
- **instagram_instagram_hashtags_search** — Search for an Instagram hashtag by name to retrieve its static, global IG Hashtag ID. Returns: id. Required: user_id, q. Limited to 30 unique hashtag queries within a 7-day period; sensitive or offensive hashtags return a generic error.
- **create_a_instagram_access_token** — Exchange a short-lived Instagram User access token (expires in one hour) for a long-lived token valid for 60 days. Returns: access_token, token_type, expires_in. Required: grant_type, client_secret, access_token. Requests include the app secret and should only be made from server-side code.
- **update_a_instagram_access_token_by_id** — Refresh a long-lived Instagram User access token that is at least 24 hours old but not expired. Returns: access_token, token_type, expires_in. Required: grant_type, access_token. Refreshed tokens are valid for 60 days from the refresh date.
- **list_all_instagram_oauth** — Initiate the Business Login for Instagram OAuth authorization flow by redirecting the app user to Instagram's authorization window. Returns an authorization code via redirect to the configured redirect_uri (valid for 1 hour, single use). Required: client_id, redirect_uri, response_type, scope.
- **list_all_instagram_instagram_media_children** — List child IG Media objects on an Instagram album (carousel) IG Media. Returns: id, caption, media_type, media_url, timestamp, owner, comments_count, like_count. Required: ig_media_id. Some fields such as permalink are not available on photos within albums.
- **list_all_instagram_instagram_media_comments** — List comments on an Instagram media object. Returns: id, text, timestamp. Required: ig_media_id. Returns only top-level comments (replies not included); maximum 50 comments per query.
- **create_a_instagram_instagram_media_comment** — Create a comment on an Instagram media object. Returns: id. Required: ig_media_id, message. Comments on live video IG Media are not supported.
- **list_all_instagram_instagram_media_collaborators** — List collaborators and their invitation status on an Instagram IG Media object. Returns: id, username, invite_status. Required: ig_media_id. Supports Feed image, Reels, and Carousel (Stories not supported); up to 5 collaborator accounts per media object.
- **list_all_instagram_instagram_stories** — List Instagram stories (IG Media objects) for a given IG User. Returns: id, caption, media_type, media_url, permalink, timestamp, owner. Required: ig_user_id. Stories are only available for 24 hours; Live Video stories and reshared stories are not included. Only one caption is returned per story even if more than one exists.
- **list_all_instagram_instagram_tagged_media** — List Instagram IG Media objects in which an app user's professional account has been tagged by another Instagram user. Returns: id, username, caption, media_type, media_url, permalink, timestamp, comments_count, like_count. Required: ig_user_id. Private IG Media objects will not be returned. Use the fields parameter to request specific IG Media fields and edges.
- **list_all_instagram_instagram_live_media** — List live video IG Media on an Instagram IG User. Returns: id, media_type, media_product_type, owner, username, comments. Required: ig_user_id. Only live video IG Media being broadcast at the time of the request will be returned.
- **list_all_instagram_instagram_user_insights** — List insights metrics for an Instagram business or creator account. Returns: name, period, title, description, total_value, id. Required: ig_user_id, metric, period. Demographic metrics additionally require timeframe; some metrics need 100+ followers.
- **list_all_instagram_instagram_content_publishing_limits** — List Instagram content publishing limits for an IG User, showing how many IG Containers have been published within a given time period. Returns: quota_usage, config. Required: ig_user_id.
- **create_a_instagram_instagram_mention** — Create an Instagram comment reply when an IG User is @mentioned in a caption or comment. Returns: id. Required: ig_user_id, media_id, message; comment_id is also required when replying to a comment. Mentions on Stories are not supported.
- **list_all_instagram_instagram_recently_searched_hashtags** — List Instagram hashtags an IG User has searched for within the last 7 days. Returns: id, name. Required: ig_user_id. Returns up to 30 results per page (25 by default); users can query a maximum of 30 unique hashtags in a rolling 7-day period, and emojis in hashtag queries are not supported.
- **list_all_instagram_instagram_connected_threads_users** — List Threads accounts connected to an Instagram account in Instagram. Returns: threads_user_id. Required: ig_user_id. An Instagram account can have only one connected Threads account.
- **list_all_instagram_instagram_backed_threads_users** — List Instagram-backed Threads accounts for a given Instagram user. The API returns the Threads account ID; each item in the response contains threads_user_id. Required: ig_user_id. An Instagram account can have only one Instagram-backed Threads account.
- **create_a_instagram_instagram_backed_threads_user** — Create an Instagram-backed Threads account for running ads on Threads. Returns: threads_user_id. Required: ig_user_id. An Instagram account can have only one Instagram-backed Threads account — verify one does not already exist before creating.
- **create_a_instagram_instagram_subscription** — Subscribe an Instagram professional account to webhook notification fields by sending a POST to the subscribed_apps endpoint. Returns: success. Required: ig_user_id, subscribed_fields. The subscribed_fields value is a comma-separated list of webhook fields such as comments, live_comments, messages, story_insights.
- **list_all_instagram_instagram_comment_replies** — List all replies (IG Comments) on an Instagram IG Comment. Returns: id, text, timestamp. Required: ig_comment_id. You cannot get replies to a comment that has been deleted.
- **create_a_instagram_instagram_comment_reply** — Create a reply to an Instagram IG Comment. Returns: id. Required: ig_comment_id, message. You can only reply to top-level comments; you cannot reply to hidden comments or comments on a live video.
- **list_all_instagram_instagram_hashtag_recent_media** — List the most recently published Instagram media tagged with a specific hashtag. Returns: id, caption, children, comments_count, like_count, media_type, media_url, permalink, timestamp. Required: ig_hashtag_id, user_id. Only returns public media published within the last 24 hours; maximum 50 results per page.
- **list_all_instagram_instagram_hashtag_top_media** — List the most popular Instagram photo and video IG Media objects tagged with a hashtag, ranked by views and viewer interaction. Returns: id, caption, children, comments_count, like_count, media_type, media_url, permalink, timestamp. Required: ig_hashtag_id, user_id. Maximum 50 results per page; only public media is returned and promoted/ads media is excluded.
- **get_single_instagram_me_by_id** — Get fields and edges on an Instagram Business or Creator Account by id. Returns: id, followers_count, media_count. Required: id.
- **list_all_instagram_instagram_users** — Get the authenticated Instagram user's profile information. This endpoint examines the access token to determine the user ID and translates to GET /{user-id}. Returns: id, username, biography, followers_count, media_count, website.

## How it works

1. **Link your customer's Instagram account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Instagram.** The Proxy API is a 1-to-1 mapping of the Instagram API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Ship Instagram publishing in your social scheduler** — Let your users schedule and publish Feed posts, Carousels, Reels, and Stories directly from your app. Truto handles OAuth, long-lived token refresh, and the two-step container-then-publish flow so you can focus on your scheduling UX.
- **Power a unified inbox for social customer support** — Ingest comments, replies, and mentions into your helpdesk and let agents respond without leaving your product. This turns Instagram into a first-class channel alongside email and chat for your support customers.
- **Automate UGC and hashtag campaign tracking** — Give influencer marketing and brand monitoring platforms the ability to track branded hashtags, tagged media, and top-performing posts. Aggregate that data into engagement dashboards and ROI reports for campaign managers.
- **Surface audience insights in your analytics product** — Pull account-level reach, demographics, and profile view metrics into your reporting suite. Marketers get a single view of Instagram performance alongside data from other channels in your platform.
- **Manage creator collaborations at scale** — For influencer platforms, expose collaborator invite status on Feed, Reels, and Carousels so brand managers can chase pending acceptances. Turn a manual check into an automated workflow inside your tool.

## What you can build

- **Two-step Reels and Carousel publisher** — Create media containers, poll for FINISHED status, and publish — with 24-hour expiry handling built in for Stories and Reels.
- **Comment and mention response workflows** — List top-level comments and replies on any media, then post replies or respond to @mentions directly from your app's UI.
- **Webhook-driven engagement ingestion** — Subscribe to Instagram events so new comments and mentions flow into your product in near real-time instead of being polled.
- **Hashtag listening dashboard** — Resolve hashtag IDs, then pull recent and top media for branded or campaign hashtags, with built-in awareness of the 30-hashtag-per-7-day cap.
- **Publishing quota guardrails** — Read the account's content publishing limits and throttle user scheduling actions before they hit Instagram's 400 containers per 24-hour ceiling.
- **Audience insights reporting** — Pull reach, profile views, and demographic breakdowns from user insights to power dashboards and exportable reports for marketers.

## FAQs

### How does authentication work for Instagram through Truto?

Truto handles the OAuth flow for Instagram Business and Creator accounts. Short-lived tokens are automatically exchanged for 60-day long-lived tokens, and Truto refreshes them before expiry so your end users don't have to reconnect.

### Can we publish Reels, Stories, and Carousels — not just single images?

Yes. The integration supports the full two-step publishing pipeline (create container, then publish) for single images, Carousels, Stories, and Reels. Your app is responsible for polling container status before publishing, since Stories and Reels containers expire after 24 hours.

### What are the key rate limits we need to design around?

Instagram enforces a maximum of 400 published containers per 24-hour rolling window per account, and hashtag search is capped at 30 unique hashtags per 7-day rolling window. You can read the current publishing quota via the content publishing limits endpoint to throttle actions in your UI.

### How do we get real-time comments and mentions instead of polling?

You can create Instagram subscriptions through Truto to receive webhook events for comments and mentions. This is the recommended pattern for unified inboxes and support workflows so events land in your app without constant polling.

### Are there restrictions on the user insights we can pull?

Yes. Instagram requires most demographic and audience insights to be requested with specific timeframes and metric definitions, and demographic breakdowns generally require the account to have at least 100 followers. Post-level and account-level reach and profile view metrics are available more broadly.

### Does the integration cover Threads workflows?

Partially. You can list Threads accounts connected to an Instagram user, list Instagram-backed Threads users, and provision Instagram-backed Threads users for cross-platform use cases like advertising. Full Threads content APIs are a separate product.

## Related reading

- [Connect Instagram to ChatGPT: Automate Media Publishing via MCP](https://truto.one/blog/connect-instagram-to-chatgpt-automate-media-publishing-and-posts/) — Learn how to connect Instagram to ChatGPT using a managed MCP server. Automate media publishing, reply to comments, and extract hashtag insights via AI agents.
- [Connect Instagram to Claude: Manage Comments and User Interactions](https://truto.one/blog/connect-instagram-to-claude-manage-comments-and-user-interactions/) — Learn how to securely connect Instagram to Claude using a managed MCP server. Automate comments, manage tags, and orchestrate content publishing workflows.
- [Connect Instagram to AI Agents: Analyze Insights and Hashtag Data](https://truto.one/blog/connect-instagram-to-ai-agents-analyze-insights-and-hashtag-data/) — Learn how to connect Instagram to AI Agents using Truto's /tools API. Automate media publishing, hashtag analysis, and comment management with LangChain.
