Is it possible, AI send product image to user

Describe the problem/error/question

I have a workflow in n8n where the first AI agent handles user questions like product price inquiries.
Now I want to make it smarter:
If the user asks for a product picture after getting the price,
a second AI agent should automatically send the product image to the Facebook Messenger user.
Is this possible to implement in n8n?
If yes, what would be the best approach for handling this flow between two agents and sending the image through Facebook Messenger API? and I am using Airtable for product information.
Thanks in advance!

What is the error message (if any)?

Please share your workflow

Share the output returned by the last node

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

@Abidul_Haque_Shohel definitely possible but the two-agent split isnt really the right pattern for this — adds latency and gives u two failure points instead of one. cleaner setup is a single AI agent that emits structured JSON, then u route in the workflow based on what the model says it wants to do. flow ends up being Messenger Webhook → AI Agent → Switch on intent → Airtable lookup → Messenger Send API.

have the agent output something like:

{
  "intent": "image_request",
  "product_id": "rec123abc",
  "message_text": "here's the photo of the Black Cycle Pro you asked about"
}

then Switch on intent, do an Airtable lookup by product_id to get the image url, send to Messenger.

one big gotcha — Airtable attachment urls are SIGNED and expire after about 2 hours since their security change a while back. if u pass the raw Airtable url straight to Messenger it works for immediate sends but breaks intermittently when Messenger lazy-loads the image and the signature is already dead. cleanest fix is uploading to Messenger’s attachment_upload endpoint first, get back a permanent attachment_id, then reference that id in subsequent sends. faster alternative is re-hosting on stable storage (s3, cloudflare r2, supabase storage) and putting that stable url in Airtable instead of the native attachment field.

the Messenger Send API call for an image looks like:

{
  "recipient": {"id": "<user_psid>"},
  "message": {
    "attachment": {
      "type": "image",
      "payload": {
        "url": "https://your-cdn/product-123.jpg",
        "is_reusable": true
      }
    }
  }
}

setting is_reusable to true makes FB cache it server-side so repeat sends of the same product image dont re-download each time, big latency win once ur catalog gets built up.

Hi, I’m Jay, I am a Verified n8n Creator from Vietnam.

I actually built and shared a free workflow that covers this exact use case:

Build a Facebook Messenger customer service AI chatbot with Google Gemini

It is one of the more foundational Messenger + AI workflows I have published, and it reached around 2,600 uses in just 2 months. That tells me many builders are trying to solve the same problem.

In my case, I handled it with a simpler architecture. Instead of splitting the logic across multiple AI agents, I forced a single AI Agent to return structured JSON with three fields: text, image, and video.

{

“text”: “Hello!”

“image”: “https://nguyenthieutoan.com/image.png”

“video”: “https://nguyenthieutoan.com/video.mp4”

}

With this setup, whenever the AI needs to send a reply with product images or videos, it only needs to populate the relevant fields in one response. That means a single agent can send text and multiple media assets in the same execution, which helps reduce latency, keeps the workflow cleaner, and makes it easier to store the full interaction in conversation history.

You may find this approach helpful for your use case.