πŸ¦€ Showcase: `whatsapp-business-rs` – A full-featured WhatsApp Business SDK in Rust

Hey Rustaceans! :waving_hand:

I've been building a lot around the WhatsApp Business Cloud API lately β€” and got tired of the pain:

  • Sparse docs
  • Repetitive HTTP calls
  • SDKs in other languages that feel... clunky
  • No type safety, no async, no fun

So I did the Rust thing:

:backhand_index_pointing_right: whatsapp-business-rs
An async-native, type-safe, extensible SDK for the WhatsApp Business Platform β€” built for real apps, bots, CRMs, and e-commerce workflows.

:white_check_mark: Key Features

  • :small_blue_diamond: Rich message support (text, media, buttons, reactions, etc.)
  • :small_blue_diamond: Ergonomic, fluent client API (.send().await?, .builder(), etc.)
  • :small_blue_diamond: Webhook server built-in (signature verification + async handlers)
  • :small_blue_diamond: Catalog management with streaming support
  • :small_blue_diamond: Multi-tenant friendly β€” override auth per request
  • :small_blue_diamond: Everything typed: no "field": string_or_struct_or_maybe_nothing

It’s built on reqwest, tokio, and axum (internally), and tries to feel "right" in Rust.
Inspired by DX-first principles, builder patterns, and a whole lot of real-world use cases.


:package: Crate

β†’ https://crates.io/crates/whatsapp-business-rs

:wrench: Example: Send a Message

client.message("BUSINESS_ID")
      .send("+2348012345678", "Hello from Rust!")
      .await?;

Or start a webhook server in minutes:

server.serve(handler, client).await?;

Or manage catalogs:

client.catalog("CATALOG_ID")
      .create_product(product_data)
      .await?;

It’s still early, but I’m actively improving coverage (templates, contacts, docs) and would love feedback, issues, PRs β€” or just a β€œhey, this helped” :folded_hands:

Thanks for reading, and big ups to the Rust community for making DX like this even possible.

– Victor

:rocket: whatsapp-business-rs v0.2.0 released!

whatsapp-business-rs is a type-safe Rust SDK for the WhatsApp Business API.

This release focuses on batch requests β€” one of the API’s trickiest features β€” with Rust-y ergonomics:

  • :white_check_mark: Batch API with compile-time safe response references (no more fragile stringly JSON paths).
  • :white_check_mark: Bulk messaging support made easy.
  • :white_check_mark: Multi-tenant ready (great for SaaS platforms).

If you’ve touched Meta’s API, you know the docs are… :sweat_smile:. This crate smooths that pain with Rust’s type-safety, correctness, and speed.

:package: Crate: crates.io
:open_book: Docs: docs.rs
:laptop: Repo: github.com/veecore/whatsapp-business-rs

Would love feedback (or contributions!) from fellow Rustaceans :raising_hands:

I ended up connecting this with our SIP trunk provider setup and it worked better than expected. Calls and messages sync up nicely once you handle the webhooks right. Also, I ran into some issues with long-lived tokens but switching to a scheduled refresh fixed it. If you're using sessions across multiple devices, make sure your store handles updates properly to avoid weird state bugs.

1 Like

I like how you've made batch requests type-safe, makes handling larger message loads much cleaner. Curious if you're planning to support media uploads or interactive message types next?

1 Like

Nice! Glad to hear it integrated smoothly β€” and thanks for the heads-up about session state; that’s great feedback

Thanks! :blush:
Yup β€” both media uploads and interactive message types are already supported (since v0.1.0). I’ll be adding more examples soon so it’s easier to spot those features in the docs.

I love it, I'm going to make an integration with SpringRS, very useful crate :eyes::+1:

1 Like