Skip to content

Marketing Automation · Beta

Instagram
API integration

Ship Marketing Automation features without building the integration. Full Instagram API access via Proxy and 30+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Instagram

Use Cases

Why integrate with Instagram

Common scenarios for SaaS companies building Instagram integrations for their customers.

01

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.

02

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.

03

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.

04

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.

05

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

Ship these features with Truto + Instagram

Concrete product features your team can ship faster by leveraging Truto’s Instagram integration instead of building from scratch.

01

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.

02

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.

03

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.

04

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.

05

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.

06

Audience insights reporting

Pull reach, profile views, and demographic breakdowns from user insights to power dashboards and exportable reports for marketers.

SuperAI

Instagram AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

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.

Why Truto

Why use Truto’s MCP server for Instagram

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 600+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Instagram in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Instagram account

Use Truto’s frontend SDK to connect your customer’s Instagram account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Instagram

Truto’s Proxy API is a 1-to-1 mapping of the Instagram API. You call us, we call Instagram, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Instagram’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Instagram on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

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.

Instagram

Get Instagram integrated into your app

Our team understands what it takes to make a Instagram integration successful. A short, crisp 30 minute call with folks who understand the problem.