---
updatedAt: 2025-11-03T17:12:42.000Z
agentTools:
  projectIndex: https://docs.gupshup.io/llms.txt
---

# Send Single Product Message

```curl Request
curl --location --request POST 'https://api.gupshup.io/wa/api/v1/msg' \
--header 'apikey: {{api_key}}' \
--header 'content-type: application/x-www-form-urlencoded' \
--data-urlencode 'channel=whatsapp' \
--data-urlencode 'source={{source_number}}' \
--data-urlencode 'destination={{destination_number}}' \
--data-urlencode 'message= {
      "type": "product_details",
      "subType": "product",
      "catalogId": "{{catalog_id}}",
      "productId": "{{product_id}}",
      "body": {
        "text":"body content!"
      },
      "footer": {
        "text":"footer content!"
      }		
}' \
--data-urlencode 'src.name=LiveAccessApp' \
```

## Meta Payloads Example

```json CAPI
{
   "messaging_product": "whatsapp",
   "recipient_type": "individual",
   "to": "PHONE_NUMBER",
   "type": "interactive",
   "interactive": {
     "type": "product",
     "body": {
       "text": "optional body text"
     },
     "footer": {
       "text": "optional footer text"
     },
     "action": {
       "catalog_id": "CATALOG_ID",
       "product_retailer_id": "ID_TEST_ITEM_1"
     }
   }
 }
```

```json On-Premise
{ 
  "recipient_type": "individual",
  "to" : "{{Recipient-WA-ID}}",
  "type": "interactive",
  "interactive": {
    "type": "product",
    "body": {
      "text": "body text"
    },
    "footer": {
      "text": "footer text"
    },
    "action": {
      "catalog_id": "catalog-ID",
      "product_retailer_id": "product-ID"
    }
  }
}
```

## Response

<Table align={["left", "left", "left"]}>
  <thead>
    <tr>
      <th style={{ textAlign: "left" }}>Status Code</th>
      <th style={{ textAlign: "left" }}>Response</th>
      <th style={{ textAlign: "left" }}>Comment</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style={{ textAlign: "left" }}>Success **200**</td>
      <td style={{ textAlign: "left" }}>
        {`{
          "status": "submitted",
          "messageId": "4bed9a90-9f7a-4584-be5b-8ee1cba61a01"
        }`}
      </td>
      <td style={{ textAlign: "left" }}></td>
    </tr>
    <tr>
      <td style={{ textAlign: "left" }}>Error **401**</td>
      <td style={{ textAlign: "left" }}>
        {`{
          "message": {
            "message": "Authentication Failed"
          },
          "status": "error"
        }`}
      </td>
      <td style={{ textAlign: "left" }}>When APIKey authentication fails or apikey is not sent</td>
    </tr>
  </tbody>
</Table>

## Request Parameters

| Key         | Description                                          | Constraints                         |
| :---------- | :--------------------------------------------------- | :---------------------------------- |
| apikey      | Apikey of the account where the app is to be created | Should be a valid gupshup.io apikey |
| source      | Source Phone Number                                  |                                     |
| src.name    | Source App Name                                      |                                     |
| destination | Destination phone number                             |                                     |
| message     | Catalog message payload                              |                                     |
| channel     | Channel to send messages to                          | - Must be whatsapp                  |

## Message Payload

| Key       | Description                           | Constraints                                                     |
| :-------- | :------------------------------------ | :-------------------------------------------------------------- |
| type      | Message type                          | Should be product\_details for product messages                 |
| sub\_type | Message Sub Type                      | Should be product\_details for product messages                 |
| body      | Message Body content                  |                                                                 |
| footer    | Message Footer content                | Optional                                                        |
| catalogId | Id of catalog to use the product from | Should be a valid catalog id from the catalog connected to Waba |
| productId | Id of product to be used              | Should be a valid product id from the catalog connected to Waba |

```
```