threads_publish_image
Publish image posts on Threads with caption, alt text, topic tags, quote posts, spoiler flags, location tagging, reply controls, cross-sharing to Instagram Stories, and geo-gating by country codes.
Instructions
Publish an image post on Threads. Supports topic tag, quote post, alt text, spoiler flag, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and location tagging via location_id.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Caption text | |
| alt_text | No | Alt text for accessibility (max 1000 chars) | |
| image_url | Yes | Public HTTPS URL of the image (JPEG/PNG, max 8MB) | |
| topic_tag | No | Topic tag for the post (1-50 chars, no periods or ampersands) | |
| is_spoiler | No | Mark content as spoiler | |
| location_id | No | Location ID for tagging the post. Use threads_search_locations to find IDs. Requires the threads_location_tagging permission on the access token. | |
| quote_post_id | No | ID of a post to quote | |
| reply_control | No | Who can reply to this post. One of: 'everyone' (default — anyone can reply), 'accounts_you_follow' (only profiles the author follows), 'mentioned_only' (only profiles @-mentioned in the post), 'parent_post_author_only' (only the author of the post being replied to — applies when this post is itself a reply, not a quote), or 'followers_only' (only the author's followers). See https://developers.facebook.com/docs/threads/reply-management/ for the authoritative list. | |
| share_to_ig_story | No | Cross-share this post to linked Instagram as a Story. 'light' = normal, 'dark' = dark mode. Requires threads_share_to_instagram permission and a linked Instagram account. The Threads post still publishes even if cross-share fails. | |
| allowlisted_country_codes | No | ISO 3166-1 alpha-2 country codes (e.g., ['US','CA','GB']) restricting post visibility to those countries (geo-gating). Requires the account to be eligible — check `is_eligible_for_geo_gating` via `threads_get_profile`. The creator can always see their own posts regardless. Codes are normalized to uppercase and sent comma-joined (e.g., 'US,CA') as required by the API. |