What
Instagram's Content Publishing API accepts a collaborators parameter when creating a media container. TryPost doesn't expose it, so posts published through TryPost can't invite collaborators — which for us means doing it by hand on every single Reel.
Why it matters
We publish a podcast (On The Ground) and our client requires both co-hosts to be invited as collaborators on every Instagram Reel. It's a condition of the engagement, not a nice-to-have.
We schedule ~14 clips a week through TryPost. Every one of them currently needs someone to open the Instagram app after it publishes and re-invite the same two accounts. That's 14 manual interventions a week on posts that are otherwise fully automated — and it's the single reason our pipeline isn't hands-off.
Collaborator posts also surface on each collaborator's profile and feed, so this is the difference between one account's reach and three. Any team posting on behalf of a multi-host show or a brand partnership hits the same wall.
The API shape
Container creation takes an array of usernames:
POST https://graph.facebook.com/{ig-user-id}/media
media_type=REELS
video_url=...
caption=...
collaborators=["username1","username2"]
Supported on Reels, single images and carousels. Not supported on Stories.
Notes from Meta's docs worth encoding:
- Max 3 collaborators per post.
- Private accounts can't be tagged as collaborators via the API.
- Invited users get a request and must accept; until they do, the tag isn't public. So a successful publish does not mean the collaborator is live — worth reflecting in any UI copy so users aren't confused.
- There's a companion endpoint that returns invite status (
Accepted / Pending / Declined), which would make a nice follow-up but isn't needed for v1.
Suggested scope
Smallest useful version — accept the field and pass it through:
-
app/Support/PostPlatformMetaRules.php — add an Instagram key alongside the existing aspect_ratio. Something like:
// Instagram / Facebook
'platforms.*.meta.aspect_ratio' => ['sometimes', 'nullable', 'string', Rule::enum(AspectRatio::class)],
'platforms.*.meta.collaborators' => ['sometimes', 'nullable', 'array', 'max:3'],
'platforms.*.meta.collaborators.*' => ['string', 'max:30'],
-
app/Services/Social/InstagramPublisher.php — thread it into the container payload in publishReel() (and publishFeed() / publishSingleImage() if you want parity). publishStory() should ignore it, since Stories don't support collaborators.
-
Surface it in the composer UI and in the API/MCP docs for platforms[].meta, next to TikTok's privacy_level and Pinterest's board_id.
Error handling: Instagram rejects the container when a username is invalid or private. InstagramPublishException already maps Meta error codes, so it'd be worth mapping that case to a clear "collaborator X can't be tagged" rather than a generic failure.
Happy to help
We're on TryPost Cloud and hit this every week. If a PR would be welcome, we can put one up against these three files — just let us know whether you'd want the status-check endpoint in the same change or kept separate.
What
Instagram's Content Publishing API accepts a
collaboratorsparameter when creating a media container. TryPost doesn't expose it, so posts published through TryPost can't invite collaborators — which for us means doing it by hand on every single Reel.Why it matters
We publish a podcast (On The Ground) and our client requires both co-hosts to be invited as collaborators on every Instagram Reel. It's a condition of the engagement, not a nice-to-have.
We schedule ~14 clips a week through TryPost. Every one of them currently needs someone to open the Instagram app after it publishes and re-invite the same two accounts. That's 14 manual interventions a week on posts that are otherwise fully automated — and it's the single reason our pipeline isn't hands-off.
Collaborator posts also surface on each collaborator's profile and feed, so this is the difference between one account's reach and three. Any team posting on behalf of a multi-host show or a brand partnership hits the same wall.
The API shape
Container creation takes an array of usernames:
Supported on Reels, single images and carousels. Not supported on Stories.
Notes from Meta's docs worth encoding:
Accepted/Pending/Declined), which would make a nice follow-up but isn't needed for v1.Suggested scope
Smallest useful version — accept the field and pass it through:
app/Support/PostPlatformMetaRules.php— add an Instagram key alongside the existingaspect_ratio. Something like:app/Services/Social/InstagramPublisher.php— thread it into the container payload inpublishReel()(andpublishFeed()/publishSingleImage()if you want parity).publishStory()should ignore it, since Stories don't support collaborators.Surface it in the composer UI and in the API/MCP docs for
platforms[].meta, next to TikTok'sprivacy_leveland Pinterest'sboard_id.Error handling: Instagram rejects the container when a username is invalid or private.
InstagramPublishExceptionalready maps Meta error codes, so it'd be worth mapping that case to a clear "collaborator X can't be tagged" rather than a generic failure.Happy to help
We're on TryPost Cloud and hit this every week. If a PR would be welcome, we can put one up against these three files — just let us know whether you'd want the status-check endpoint in the same change or kept separate.