https://linen.dev logo
Instagram Voice Messages - Cannot retrieve audio U...
# 🖥│support-forum
t
Hi ! I'm working on integrating Instagram Direct Messages and I'm facing an issue with retrieving voice message URLs. Problem: When I call INSTAGRAM_LIST_ALL_MESSAGES for a conversation, voice messages are returned with: message: "" (empty string) attachments: null This prevents me from accessing the audio file URL. What I've tried: Using field expansion in INSTAGRAM_LIST_ALL_MESSAGES: I tried passing fields: "attachments{type,payload{url}}" but Composio doesn't seem to support GraphQL-style nested field expansion The next URL in the response still shows fields=attachments without the nested expansion Direct API Graph call: I extracted the access token from the next URL and called https://graph.instagram.com/v24.0/{message_id}?fields=attachments{type,payload{url}} directly This works, but I'd prefer to use Composio actions if possible Questions: Does INSTAGRAM_LIST_ALL_MESSAGES support GraphQL-style field expansion (e.g.,attachments{type,payload{url}})? If yes, what's the correct parameter format? If no, is there another action to get a specific message with full attachment details? Is there a dedicated action to retrieve a single message by ID with all its attachments? Something like INSTAGRAM_GET_MESSAGE or similar? According to Instagram Graph API docs, voice messages should have their URL in attachments.data[0].payload.url when using field expansion. Is this supported through Composio? Context: Using Instagram Graph API v24.0 Account type: Business/Creator (has messaging permissions) Voice messages appear correctly in the Instagram app, but the API returns attachments: null Any guidance would be greatly appreciated! 🙏 Thanks!
u
Hey @talT, thanks for the information. We are checking this.
Hi @talT,
Copy code
Direct API Graph call:
I extracted the access token from the next URL and called 
https://graph.instagram.com/v24.0/%7Bmessage_id%7D?fields=attachments{type,payload{url}} directly
This works, but I'd prefer to use Composio actions if possible
Could you share the exact CUrl req and your screenshot of your response for our reference? We tried it on our end and were unable to get populated
message
object. Thanks!
t
Hi @Uday! đź‘‹ Here's the exact curl:
Copy code
bash
curl -X GET "https://graph.instagram.com/v24.0/{MESSAGE_ID}?fields=id%2Cmessage%2Cattachments%7Btype%2Cpayload%7Burl%2Cis_reusable%7D%7D&access_token={ACCESS_TOKEN}" \
  -H "Accept: application/json"
Decoded fields:
id,message,attachments{type,payload{url,is_reusable}}
What works: - Direct API call returns:
attachments.data[0].payload.url
âś… What doesn't work: -
INSTAGRAM_LIST_ALL_MESSAGES
returns:
attachments: null
❌ - Even when passing
fields: "attachments{type,payload{url}}"
, the
next
URL shows
fields=attachments
(no expansion) Response example (when it works):
Copy code
json
{
  "attachments": {
    "data": [{
      "type": "audio",
      "payload": {
        "url": "https://lookaside.fbsbx.com/ig_messaging_cdn/..."
      }
    }]
  }
}
Question: Can
INSTAGRAM_LIST_ALL_MESSAGES
support nested field expansion, or do I need separate calls for each voice message? Thanks! 🙏
u
Hey @talT, we just tried it on our end and were unable to reproduce the payload shared by you? Could you share the list of scopes configured to your access token and a screen-recording of the API execution? Thanks! https://cdn.discordapp.com/attachments/1455213947241107631/1455813548277235732/Screenshot_2025-12-31_at_12.12.13.png?ex=69561785&is=6954c605&hm=9ab02d6aa4f8638c162a1100a137d976c3f0bba0ffaab1583b7d844e520dc15b&