Overview
Upload image, video, or document files for per-recipient WhatsApp template headers. POST multipart/form-data with field name file. Returns media_id for use as header_media_id in template send. DELETE /api/v2/whatsapp/media/{id} removes unused assets.
POST /api/v2/whatsapp/media
Send multipart/form-data with binary field file. Do not set Content-Type manually in fetch — the browser or FormData sets the boundary.
curl --request POST \
'https://app.buzzbip.com/api/v2/whatsapp/media' \
--header 'Authorization: Bearer YOUR_JWT' \
--form 'file=@/path/to/invoice-april.pdf'Usage notes
⚠️ Note: media_id values are user-scoped. A file uploaded by user A cannot be referenced in a send by user B. Always upload as the same user account that will send the message. 💡 Tip: Use the two-step flow — upload first to get media_id, then reference header_media_id in the template send call.
Note: media_id values are user-scoped. A file uploaded by user A cannot be referenced in a send by user B. Always upload as the same user account that will send the message.
Integration notes
When integrating the Buzzbip whatsapp endpoint into your application, treat https://app.buzzbip.com as the only production host. Obtain a JWT from POST /api/login_check and send Authorization: Bearer <token> on every request. Confirm User.hasApiAccess is enabled in Buzzbip Admin — without it, valid tokens still receive authorization errors. Parse JSend responses by reading status, message, and data together; do not rely on HTTP status codes alone. For ecommerce plugins, also send x-api-key, x-platform-type, and x-base-uri as described in the secret-key documentation. v2 WhatsApp routes do not use trailing slashes. Implement retries with exponential backoff when you encounter rate limits, and log full error bodies during development. Store credentials server-side, rotate secrets if exposed, and re-authenticate before the 3600-second JWT TTL expires in long-running workers. Queue bulk WhatsApp sends from your backend rather than client browsers. Test against a small set of contacts before enabling production campaigns.
Security
Security best practices for Buzzbip API clients include restricting API credentials to backend services, using TLS for every request, and monitoring failed authentication attempts. Separate staging and production Buzzbip accounts when possible so template tests do not message real customers. Document which templates and automations each integration triggers. When debugging, redact phone numbers and message bodies in application logs shared with third parties.
What's next?
Related pages: api/v2/whatsapp-templates/send-template api/v2/whatsapp-templates guides/whatsapp-v2-use-cases
