Instagram media_publish config_issue CAPTION_NOT_ATTACHED
A media_publish call can succeed with the caption dropped. The response then carries config_issue CAPTION_NOT_ATTACHED. What it means and a burned-in fallback.

config_issue: CAPTION_NOT_ATTACHED means the media published without its caption. The changelog says the publish still succeeds, the field is omitted when there is nothing to report, and the issue arises most often when the caption fails an integrity check. Treat it as a warning to check, not an error to retry blindly.
Instagram details are from the Instagram platform changelog, dated Sep 28, 2026, read 2026-09-30.
What values can config_issue return?
| Value | Meaning |
|---|---|
| CAPTION_NOT_ATTACHED | The media published without its caption |
| USER_TAGGING_FAILURE | The media published without its user tags |
| (field absent) | Nothing to report |
Why does a caption get dropped?
The page names a failed integrity check as the most common cause and does not list the checks. Review the caption text for what a platform might reject, and compare the post afterward instead of assuming it matches your request.
How do I keep key text on screen anyway?
Text burned into the video is part of the file, so it does not depend on the caption field. Sume video captions accept cues with text, start and end; a silent clip fails as caption_no_speech unless you pass authored overlay cues. See Video captions. Burned text does not replace the post caption; it only keeps a message in the picture.
How do I check what was published?
Extract a still from your own output and look at it before posting. Frame extraction is unbilled per the Video frames docs. For the AI-disclosure parameter on the same publish flow, see is_ai_generated on Reels.
Sources
Related posts
More in Developers
- Instagram oEmbed: embed HTML vs Sume's instagram_media read
Instagram oEmbed is meant only for embedding, at up to 1,000 requests per hour. Sume's instagram_media returns media candidates for a post or reel URL.
- Lambda 90-minute timeout: does it change AI video jobs?
AWS raised Lambda's async timeout to 90 minutes on Managed Instances. A Sume job still fits best as submit, then poll or webhook, and sync waits stay 30 s.
- LangGraph interrupt response_schema for paid video approval
LangGraph 1.2.12 adds response_schema to interrupt(). Use a typed approve, edit or reject reply with max spend to drive a Sume dry_run, then submit.
- List music models by API: GET /v1/music-router/models
The Music Router catalog endpoints list routable music model ids and a provider list price. Routable ids today: sume/music-auto, lyria-3.5, lyria-3-pro.
Written by Sume