Documentation
Sending media
Photos, videos, audio and documents up to 100 MB per message. There is no separate upload step: you pass a URL, TextMeFlow fetches the file and delivers it via WhatsApp.
1. One extra field
Add media_url to a normal POST /v1/messages call. The text becomes the caption:
POST https://api.textmeflow.eu/v1/messages
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"to": "+32470000000",
"text": "Your invoice for July is attached.",
"media_url": "https://example.com/invoices/2026-07.pdf"
}
The URL must be publicly reachable over HTTPS (max 2,000 characters). Signed, short-lived URLs — S3 presigned links, Laravel signed routes — work fine and are the recommended way to share private files.
2. What renders as what
- Images (JPEG, PNG, WebP) — inline photo with your text as caption
- Video (MP4) — inline playable video with caption
- Audio (MP3, OGG) — voice-note style player
- Everything else (PDF, DOCX, XLSX, ZIP, …) — document attachment with filename
The type is derived from the file's content type. A PDF invoice, a photo of a finished repair, a PDF boarding pass — they all go through the same field.
3. Limits and quota accounting
- Maximum file size: 100 MB
- A media message counts as one message against your monthly quota — same as plain text
- Per-number rate limits apply unchanged (1 msg/sec, 60/min, 1,000/hour)
4. Common use cases
- Invoices and receipts as PDF straight from your billing system
- "Your car is ready" photos from a garage workflow
- Booking confirmations with a PDF itinerary or door-code instructions
- Product photos in order updates from a webshop
All of these work from no-code tools too — the Make.com, n8n and Zapier HTTP modules just include the extra JSON field. See integrations for ready-made examples.
TL;DR
Host the file on an HTTPS URL, add media_url to your message, done. Up to 100 MB, counts as one message. Try it on the free plan.