Skip to main content

WhatsApp Message Types

Plati AI supports all WhatsApp Business API message types, allowing you to create rich, interactive conversations. This guide covers all available message formats and when to use each one.
What you’ll learn: How to send different types of WhatsApp messages including text, buttons, lists, media, location, contacts, and interactive elements.

Overview

WhatsApp Business API supports multiple message types that can be combined to create engaging user experiences. Each message type has specific use cases and limitations.

Text Messages

Simple text responses with formatting support

Interactive Buttons

Up to 3 buttons for quick responses and actions

Media Messages

Images, videos, audio, and documents with captions

Location & Contacts

Share locations and contact information

Message Types

1. Text Messages

Use for: Simple conversations, explanations, and direct responses. Features:
  • Support for WhatsApp text formatting
  • Emoji support
  • Maximum 4096 characters
Example:
{
  "type": "text",
  "body": "Hello! 😊 How can I help you today?"
}
Text Formatting:
  • Bold: *text*
  • Italic: _text_
  • Strikethrough: ~text~
  • Monospace: text
  • Quote: > text

2. Interactive Buttons

Use for: Confirmation dialogs, simple choices, call-to-action buttons. Limitations:
  • Maximum 3 buttons
  • 20 characters per button text
  • 60 characters for header/footer
Example - Confirmation:
{
  "type": "buttons",
  "body": "Do you want to continue with this order?",
  "buttons": [
    {
      "id": "confirm_yes",
      "text": "Yes",
      "type": "reply"
    },
    {
      "id": "confirm_no",
      "text": "No", 
      "type": "reply"
    }
  ],
  "footer": "Choose an option"
}
Example - Call-to-Action with URL:
{
  "type": "buttons",
  "body": "Check out our special offer!",
  "header": {
    "type": "image",
    "media": "https://example.com/image.jpg"
  },
  "buttons": [
    {
      "id": "visit_site",
      "text": "Visit Site",
      "type": "url",
      "url": "https://example.com"
    }
  ],
  "footer": "Limited time offer"
}

3. Interactive Lists

Use for: Menus, catalogs, multiple choice options (more than 3). Limitations:
  • Maximum 10 sections
  • 10 items per section
  • 24 characters for titles
  • 72 characters for descriptions
  • No image headers supported
Example:
{
  "type": "list",
  "body": "Here are our available product categories:",
  "list": {
    "button_text": "View Products",
    "sections": [
      {
        "title": "Electronics",
        "rows": [
          {
            "id": "smartphones",
            "title": "Smartphones",
            "description": "iPhone, Samsung, Xiaomi"
          },
          {
            "id": "notebooks",
            "title": "Notebooks",
            "description": "Dell, HP, Lenovo"
          }
        ]
      }
    ]
  },
  "footer": "Free shipping nationwide"
}

4. Media Messages

Use for: Sharing images, videos, audio, and documents with context. Supported Types:
  • Images (JPG, PNG)
  • Videos (MP4, 3GP)
  • Audio (MP3, OGG)
  • Documents (PDF, DOC, XLS)
Example - Image:
{
  "type": "image",
  "body": "Here's the product you requested!",
  "media": {
    "type": "image",
    "id": "media_id_123",
    "caption": "iPhone 15 Pro - Blue Titanium"
  }
}
Example - Document:
{
  "type": "document",
  "body": "Here's the product manual in PDF:",
  "media": {
    "type": "document",
    "id": "doc_id_456",
    "caption": "Complete product manual",
    "filename": "product_manual.pdf"
  }
}

5. Location Messages

Use for: Sharing business locations, meeting points, delivery addresses. Example:
{
  "type": "location",
  "body": "Our store is located here:",
  "location": {
    "latitude": "-23.550520",
    "longitude": "-46.633308",
    "name": "Main Store",
    "address": "Flower Street, 123 - Downtown, São Paulo - SP"
  }
}

6. Contact Messages

Use for: Sharing contact information, support details. Example:
{
  "type": "contact",
  "body": "Here are our support contacts:",
  "contacts": [
    {
      "name": {
        "formatted_name": "Technical Support",
        "first_name": "Technical",
        "last_name": "Support"
      },
      "phones": [
        {
          "phone": "+5511999999999",
          "type": "WORK",
          "wa_id": "5511999999999"
        }
      ],
      "emails": [
        {
          "email": "[email protected]",
          "type": "WORK"
        }
      ]
    }
  ]
}

7. Location Request

Use for: Asking users to share their current location for delivery, nearby services. Example:
{
  "type": "location_request",
  "body": "Please share your current location so we can find the nearest store to you."
}

Multiple Messages

You can send multiple messages in sequence by returning an array:
[
  {
    "type": "text",
    "body": "Hello! I'll show you some available options. 😊"
  },
  {
    "type": "image",
    "body": "Here's our featured product:",
    "media": {
      "type": "image",
      "id": "product_image_123",
      "caption": "Premium Product - Available now!"
    }
  },
  {
    "type": "buttons",
    "body": "What would you like to do?",
    "buttons": [
      { "id": "buy_now", "text": "Buy Now", "type": "reply" },
      { "id": "more_info", "text": "More Details", "type": "reply" },
      { "id": "talk_human", "text": "Talk to Human", "type": "reply" }
    ],
    "footer": "Choose an option to continue"
  }
]

Best Practices

  • Text: Normal conversations, simple explanations
  • Buttons: Confirmations, 2-3 choice options, call-to-action
  • List: Menus, catalogs, more than 3 options
  • Media: Show products, visual explanations
  • Location: Addresses, meeting points
  • Contact: Contact information sharing
  • Button text: 20 characters maximum
  • List titles: 24 characters maximum
  • List descriptions: 72 characters maximum
  • Headers/Footers: 60 characters maximum
  • Text messages: 4096 characters maximum
  • Use buttons for quick responses
  • Combine media with text for context
  • Use location requests sparingly
  • Keep messages concise and direct
  • Use emojis moderately for human touch

Error Handling

Important: Always validate your message structure before sending. Invalid messages will fall back to simple text.
Common validation errors:
  • Button text exceeding 20 characters
  • List titles exceeding 24 characters
  • Missing required fields for specific message types
  • Invalid media IDs or URLs
  • Exceeding maximum limits for buttons/lists

Testing Your Messages

Use the API to test different message types:
curl -X POST https://api.plati.ai/conversation/{identity_id}/chat/{channel_id} \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Send me a message with buttons"
  }'

Next Steps