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.