Skip to main content
Send a plain text reply. The recipient id is the IGSID you read from the inbound webhook’s sender.id.

Request

curl -X POST "${INSTAGRAM_GRAPH_API_URL}/${INSTAGRAM_USER_ID}/messages" \
  -H "Authorization: Bearer ${INSTAGRAM_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
  "recipient": {
    "id": "17841400000000001"
  },
  "message": {
    "text": "Hello from my app"
  }
}'
Instagram allows a plain text reply only within 24 hours of the user’s last message. Outside that window the send is rejected unless a message tag applies.
Both the sandbox (INSTAGRAM_API_URL) and your own account (INSTAGRAM_GRAPH_API_URL) point at the HookMyApp gateway and authenticate with your hmat_… token; the gateway swaps in the real Meta token server-side. The body is identical. See Overview for the full setup.