📋 Bug Description
Environment
- Evolution API: v2.3.7
- Chatwoot: latest
- Integration: WhatsApp Business Cloud API
- Storage: IDrive E2 (S3 compatible)
- Docker deployment
Problem
Sending an audio attachment from Chatwoot to a WhatsApp Cloud API instance fails with:
TypeError: t.mimetype?.startsWith is not a function
at Ls.audioWhatsapp
at ut.sendAttachment
at ut.receiveWebhook
Text messages, images and PDFs are sent successfully. Only audio attachments are affected.
Reproduction
- Configure Chatwoot with Evolution API.
- Configure a WhatsApp Business Cloud API instance.
- Open a conversation.
- Send an audio message from the Chatwoot interface.
- The request fails before reaching Meta.
Comparison
Scenario A — audio sent directly using the Evolution API endpoint
Result: ✅ No mimetype?.startsWith exception. Evolution continues processing normally.
Scenario B — the exact same audio sent from Chatwoot
Result: ❌ Exception thrown immediately, before the request reaches Meta:
TypeError: t.mimetype?.startsWith is not a function
Payload comparison (anonymized)
Works — direct Evolution API call:
{
"mimetype": "audio/ogg"
// ...
}
Fails — via Chatwoot:
{
"mimetype": null
// or {}, or the actual captured value — TO FILL IN
}
(placeholder — replace with the real captured object once logged; see note below)
Expected behavior
Evolution should correctly detect or normalize the attachment MIME type received from Chatwoot before calling audioWhatsapp(). Since ?. only guards against null/undefined, a non-null, non-string mimetype (object, array, etc.) reaches .startsWith() unguarded and throws.
Additional information
This appears to affect only the Chatwoot → Cloud API attachment flow. The direct Evolution API → Cloud API flow works correctly.
If necessary, I can provide the complete stack trace, the Chatwoot payload, the Evolution payload, and a full comparison between both requests.
🔄 Steps to Reproduce
- Configure Chatwoot with Evolution API.
- Configure a WhatsApp Business Cloud API instance.
- Open a conversation in Chatwoot.
- Send an audio message from the Chatwoot interface.
- Request fails with TypeError before reaching Meta:
TypeError: t.mimetype?.startsWith is not a function
at Ls.audioWhatsapp
at ut.sendAttachment
at ut.receiveWebhook
Note: sending the same audio directly via the Evolution API endpoint (bypassing Chatwoot) works fine — no exception.
✅ Expected Behavior
Evolution should correctly detect or normalize the attachment MIME type received from Chatwoot before calling audioWhatsapp()
❌ Actual Behavior
TypeError: t.mimetype?.startsWith is not a function
at Ls.audioWhatsapp
at ut.sendAttachment
at ut.receiveWebhook
🌍 Environment
- OS: [e.g. Ubuntu 20.04, Windows 10, macOS 12.0]
- Node.js version: [e.g. 18.17.0]
- Evolution API version: [e.g. 2.3.7]
- Database: [e.g. PostgreSQL 14, MySQL 8.0]
- Connection type: [e.g. Baileys, WhatsApp Business API]
📋 Logs
📝 Additional Context
No response
📋 Bug Description
Environment
Problem
Sending an audio attachment from Chatwoot to a WhatsApp Cloud API instance fails with:
Text messages, images and PDFs are sent successfully. Only audio attachments are affected.
Reproduction
Comparison
Scenario A — audio sent directly using the Evolution API endpoint
Result: ✅ No
mimetype?.startsWithexception. Evolution continues processing normally.Scenario B — the exact same audio sent from Chatwoot
Result: ❌ Exception thrown immediately, before the request reaches Meta:
Payload comparison (anonymized)
Works — direct Evolution API call:
{ "mimetype": "audio/ogg" // ... }Fails — via Chatwoot:
{ "mimetype": null // or {}, or the actual captured value — TO FILL IN }(placeholder — replace with the real captured object once logged; see note below)
Expected behavior
Evolution should correctly detect or normalize the attachment MIME type received from Chatwoot before calling
audioWhatsapp(). Since?.only guards againstnull/undefined, a non-null, non-stringmimetype(object, array, etc.) reaches.startsWith()unguarded and throws.Additional information
This appears to affect only the Chatwoot → Cloud API attachment flow. The direct Evolution API → Cloud API flow works correctly.
If necessary, I can provide the complete stack trace, the Chatwoot payload, the Evolution payload, and a full comparison between both requests.
🔄 Steps to Reproduce
TypeError: t.mimetype?.startsWith is not a function
at Ls.audioWhatsapp
at ut.sendAttachment
at ut.receiveWebhook
Note: sending the same audio directly via the Evolution API endpoint (bypassing Chatwoot) works fine — no exception.
✅ Expected Behavior
Evolution should correctly detect or normalize the attachment MIME type received from Chatwoot before calling audioWhatsapp()
❌ Actual Behavior
TypeError: t.mimetype?.startsWith is not a function
at Ls.audioWhatsapp
at ut.sendAttachment
at ut.receiveWebhook
🌍 Environment
📋 Logs
📝 Additional Context
No response