Sign inGet started

Receiving WhatsApp stickers

A sticker a contact taps from their tray arrives as an inbound message carrying sticker: a WebP file reference, plus an animated flag.

What an inbound sticker carries

Ejemplo de código
{
  "id": "wam_01kye7t1rgyw9u5l8p2zaf7sid",
  "direction": "inbound",
  "from": { "phone_number": "+14155550100" },
  "to": { "phone_number": "+13124495569" },
  "status": "received",
  "sticker": {
    "id": "waf_01kye6r7as0zkv3g1q6suy9whc",
    "url": "https://platform.bird.com/v1/whatsapp/messages/wam_01kye7t1rgyw9u5l8p2zaf7sid/media/waf_01kye6r7as0zkv3g1q6suy9whc",
    "mime_type": "image/webp",
    "animated": false
  },
  "created_at": "2026-08-25T09:19:37Z"
}
FieldWhat it carries
idThe stored file, to pass as media_id when fetching the bytes
urlA Bird URL, fetched with your API key
mime_typeThe media type WhatsApp reported, image/webp for a sticker
animatedWhether the sticker animates; present only on an inbound sticker
The arm carries no caption in either direction, and no name for the sticker or the pack it came from. A sticker is the whole message.
animated distinguishes an animated WebP from a static one, which matters when you render the file yourself: an animated sticker is a multi-frame WebP that a still-image renderer flattens to its first frame.

Fetching the bytes

Pass the message ID and the media id to the channel's media method. The hub's fetching inbound media carries that call in every language, along with the redirect and header rules it follows, and owns the retention window the file lives in.
Most integrations never fetch a sticker. It usually carries sentiment rather than information, so an agent inbox can show a placeholder and an automated flow can treat the message as a window-resetting acknowledgement without downloading anything.

The webhook payload

whatsapp.received carries the sticker arm on the event envelope:
Ejemplo de código
{
  "type": "whatsapp.received",
  "timestamp": "2026-08-25T09:19:37.882Z",
  "data": {
    "whatsapp_id": "wam_01kye7t1rgyw9u5l8p2zaf7sid",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
    "direction": "inbound",
    "from": { "phone_number": "+14155550100" },
    "to": { "phone_number": "+13124495569" },
    "sticker": {
      "id": "waf_01kye6r7as0zkv3g1q6suy9whc",
      "url": "https://platform.bird.com/v1/whatsapp/messages/wam_01kye7t1rgyw9u5l8p2zaf7sid/media/waf_01kye6r7as0zkv3g1q6suy9whc",
      "mime_type": "image/webp",
      "animated": false
    },
    "tags": null,
    "metadata": null
  }
}

Things to watch

  • A sticker still resets the service window. It is an inbound message like any other, so it buys another 24 hours of free-form replies even though it carries no text to act on.
  • A sticker is not a reaction. An emoji reaction a contact adds to one of your messages is not modelled as content and arrives as an unsupported type with type: "reaction".

Next steps