> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinkfish.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# wati

> Wati WhatsApp API

**Server path:** `/wati` | **Type:** Application | **PCID required:** Yes

## Tools

| Tool                                                                  | Description                 |
| --------------------------------------------------------------------- | --------------------------- |
| [`wati_add_contact`](#wati_add_contact)                               | Add a contact               |
| [`wati_assign_contact_teams`](#wati_assign_contact_teams)             | Assign contact to teams     |
| [`wati_assign_operator`](#wati_assign_operator)                       | Assign an operator          |
| [`wati_get_campaign`](#wati_get_campaign)                             | Get a campaign              |
| [`wati_get_contact`](#wati_get_contact)                               | Get a contact               |
| [`wati_get_contact_count`](#wati_get_contact_count)                   | Get contact count           |
| [`wati_get_messages`](#wati_get_messages)                             | Get conversation messages   |
| [`wati_get_template`](#wati_get_template)                             | Get a template              |
| [`wati_list_campaigns`](#wati_list_campaigns)                         | List broadcast campaigns    |
| [`wati_list_channels`](#wati_list_channels)                           | List channels               |
| [`wati_list_contacts`](#wati_list_contacts)                           | List contacts               |
| [`wati_list_templates`](#wati_list_templates)                         | List message templates      |
| [`wati_send_file_via_url`](#wati_send_file_via_url)                   | Send a file via URL         |
| [`wati_send_interactive`](#wati_send_interactive)                     | Send an interactive message |
| [`wati_send_message`](#wati_send_message)                             | Send a text message         |
| [`wati_send_template`](#wati_send_template)                           | Send template messages      |
| [`wati_update_contacts`](#wati_update_contacts)                       | Bulk update contacts        |
| [`wati_update_conversation_status`](#wati_update_conversation_status) | Update conversation status  |

***

## wati\_add\_contact

Add a contact

**Parameters:**

| Parameter         | Type      | Required | Default | Description                                                     |
| ----------------- | --------- | -------- | ------- | --------------------------------------------------------------- |
| `custom_params`   | object\[] | No       | —       | Optional custom parameter key-value pairs.                      |
| `name`            | string    | Yes      | —       | Contact display name.                                           |
| `whatsapp_number` | string    | Yes      | —       | Phone number with country code, no + prefix (e.g. 85264318721). |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "custom_params": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "The name value"
            },
            "value": {
              "type": "string",
              "description": "The value value"
            }
          }
        },
        "description": "Optional custom parameter key-value pairs."
      },
      "name": {
        "type": "string",
        "description": "Contact display name."
      },
      "whatsapp_number": {
        "type": "string",
        "description": "Phone number with country code, no + prefix (e.g. 85264318721)."
      }
    },
    "required": [
      "PCID",
      "name",
      "whatsapp_number"
    ]
  }
  ```
</Expandable>

***

## wati\_assign\_contact\_teams

Assign contact to teams

**Parameters:**

| Parameter | Type      | Required | Default | Description                                                |
| --------- | --------- | -------- | ------- | ---------------------------------------------------------- |
| `target`  | string    | Yes      | —       | Phone number or contact ID.                                |
| `teams`   | string\[] | Yes      | —       | List of team names to assign (e.g. \["Support", "Sales"]). |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "target": {
        "type": "string",
        "description": "Phone number or contact ID."
      },
      "teams": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "List of team names to assign (e.g. [\"Support\", \"Sales\"])."
      }
    },
    "required": [
      "PCID",
      "target",
      "teams"
    ]
  }
  ```
</Expandable>

***

## wati\_assign\_operator

Assign an operator

**Parameters:**

| Parameter        | Type   | Required | Default | Description                                                  |
| ---------------- | ------ | -------- | ------- | ------------------------------------------------------------ |
| `target`         | string | Yes      | —       | Phone number or conversation ID.                             |
| `assignee_email` | string | No       | —       | Operator's email address. Omit or set null to assign to bot. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "target": {
        "type": "string",
        "description": "Phone number or conversation ID."
      },
      "assignee_email": {
        "type": "string",
        "description": "Operator's email address. Omit or set null to assign to bot."
      }
    },
    "required": [
      "PCID",
      "target"
    ]
  }
  ```
</Expandable>

***

## wati\_get\_campaign

Get a campaign

**Parameters:**

| Parameter      | Type   | Required | Default | Description               |
| -------------- | ------ | -------- | ------- | ------------------------- |
| `broadcast_id` | string | Yes      | —       | The campaign's unique ID. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "broadcast_id": {
        "type": "string",
        "description": "The campaign's unique ID."
      }
    },
    "required": [
      "PCID",
      "broadcast_id"
    ]
  }
  ```
</Expandable>

***

## wati\_get\_contact

Get a contact

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                      |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------- |
| `target`  | string | Yes      | —       | Phone number with country code (e.g. 85264318721) or contact ID. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "target": {
        "type": "string",
        "description": "Phone number with country code (e.g. 85264318721) or contact ID."
      }
    },
    "required": [
      "PCID",
      "target"
    ]
  }
  ```
</Expandable>

***

## wati\_get\_contact\_count

Get contact count

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## wati\_get\_messages

Get conversation messages

**Parameters:**

| Parameter     | Type    | Required | Default | Description                                         |
| ------------- | ------- | -------- | ------- | --------------------------------------------------- |
| `target`      | string  | Yes      | —       | Phone number (e.g. 85264318721) or conversation ID. |
| `page_size`   | integer | No       | —       | Messages per page (max 100, default 20).            |
| `page_number` | integer | No       | —       | Page number, 1-based.                               |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "target": {
        "type": "string",
        "description": "Phone number (e.g. 85264318721) or conversation ID."
      },
      "page_size": {
        "type": "integer",
        "description": "Messages per page (max 100, default 20)."
      },
      "page_number": {
        "type": "integer",
        "description": "Page number, 1-based."
      }
    },
    "required": [
      "PCID",
      "target"
    ]
  }
  ```
</Expandable>

***

## wati\_get\_template

Get a template

**Parameters:**

| Parameter     | Type   | Required | Default | Description               |
| ------------- | ------ | -------- | ------- | ------------------------- |
| `template_id` | string | Yes      | —       | The template's unique ID. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "template_id": {
        "type": "string",
        "description": "The template's unique ID."
      }
    },
    "required": [
      "PCID",
      "template_id"
    ]
  }
  ```
</Expandable>

***

## wati\_list\_campaigns

List broadcast campaigns

**Parameters:**

| Parameter     | Type    | Required | Default | Description                               |
| ------------- | ------- | -------- | ------- | ----------------------------------------- |
| `page_size`   | integer | No       | —       | Campaigns per page (max 100, default 20). |
| `page_number` | integer | No       | —       | Page number, 1-based.                     |
| `channel`     | string  | No       | —       | Filter campaigns by channel.              |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "page_size": {
        "type": "integer",
        "description": "Campaigns per page (max 100, default 20)."
      },
      "page_number": {
        "type": "integer",
        "description": "Page number, 1-based."
      },
      "channel": {
        "type": "string",
        "description": "Filter campaigns by channel."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## wati\_list\_channels

List channels

**Parameters:**

| Parameter     | Type    | Required | Default | Description                              |
| ------------- | ------- | -------- | ------- | ---------------------------------------- |
| `page_size`   | integer | No       | —       | Channels per page (max 100, default 20). |
| `page_number` | integer | No       | —       | Page number, 1-based.                    |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "page_size": {
        "type": "integer",
        "description": "Channels per page (max 100, default 20)."
      },
      "page_number": {
        "type": "integer",
        "description": "Page number, 1-based."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## wati\_list\_contacts

List contacts

**Parameters:**

| Parameter     | Type    | Required | Default | Description                                        |
| ------------- | ------- | -------- | ------- | -------------------------------------------------- |
| `page_size`   | integer | No       | —       | Number of contacts per page (max 100, default 20). |
| `page_number` | integer | No       | —       | Page number, 1-based.                              |
| `channel`     | string  | No       | —       | Filter contacts by channel.                        |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "page_size": {
        "type": "integer",
        "description": "Number of contacts per page (max 100, default 20)."
      },
      "page_number": {
        "type": "integer",
        "description": "Page number, 1-based."
      },
      "channel": {
        "type": "string",
        "description": "Filter contacts by channel."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## wati\_list\_templates

List message templates

**Parameters:**

| Parameter     | Type    | Required | Default | Description                               |
| ------------- | ------- | -------- | ------- | ----------------------------------------- |
| `page_size`   | integer | No       | —       | Templates per page (max 100, default 20). |
| `page_number` | integer | No       | —       | Page number, 1-based.                     |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "page_size": {
        "type": "integer",
        "description": "Templates per page (max 100, default 20)."
      },
      "page_number": {
        "type": "integer",
        "description": "Page number, 1-based."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## wati\_send\_file\_via\_url

Send a file via URL

**Parameters:**

| Parameter  | Type   | Required | Default | Description                                                               |
| ---------- | ------ | -------- | ------- | ------------------------------------------------------------------------- |
| `caption`  | string | No       | —       | Optional caption for the file.                                            |
| `file_url` | string | Yes      | —       | Public URL of the file to send.                                           |
| `target`   | string | Yes      | —       | Recipient phone number with country code, no + prefix (e.g. 85264318721). |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "caption": {
        "type": "string",
        "description": "Optional caption for the file."
      },
      "file_url": {
        "type": "string",
        "description": "Public URL of the file to send."
      },
      "target": {
        "type": "string",
        "description": "Recipient phone number with country code, no + prefix (e.g. 85264318721)."
      }
    },
    "required": [
      "PCID",
      "file_url",
      "target"
    ]
  }
  ```
</Expandable>

***

## wati\_send\_interactive

Send an interactive message

**Parameters:**

| Parameter        | Type   | Required | Default | Description                                                               |
| ---------------- | ------ | -------- | ------- | ------------------------------------------------------------------------- |
| `button_message` | object | No       | —       | Button message payload (required when type is 'buttons').                 |
| `list_message`   | object | No       | —       | List message payload (required when type is 'list').                      |
| `target`         | string | Yes      | —       | Recipient phone number with country code, no + prefix (e.g. 85264318721). |
| `type`           | string | Yes      | —       | Type of interactive message.                                              |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "button_message": {
        "type": "object",
        "description": "Button message payload (required when type is 'buttons').",
        "properties": {
          "body": {
            "type": "string",
            "description": "Main message body text."
          },
          "header": {
            "type": "object",
            "description": "Optional header."
          },
          "footer": {
            "type": "string",
            "description": "Optional footer text."
          },
          "buttons": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "List of buttons (max 3)."
          }
        }
      },
      "list_message": {
        "type": "object",
        "description": "List message payload (required when type is 'list').",
        "properties": {
          "body": {
            "type": "string",
            "description": "Main message body text."
          },
          "header": {
            "type": "string",
            "description": "Optional header text."
          },
          "footer": {
            "type": "string",
            "description": "Optional footer text."
          },
          "button_text": {
            "type": "string",
            "description": "Text shown on the list button."
          },
          "sections": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "List sections."
          }
        }
      },
      "target": {
        "type": "string",
        "description": "Recipient phone number with country code, no + prefix (e.g. 85264318721)."
      },
      "type": {
        "type": "string",
        "description": "Type of interactive message.",
        "enum": [
          "buttons",
          "list"
        ]
      }
    },
    "required": [
      "PCID",
      "target",
      "type"
    ]
  }
  ```
</Expandable>

***

## wati\_send\_message

Send a text message

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                               |
| --------- | ------ | -------- | ------- | ------------------------------------------------------------------------- |
| `target`  | string | Yes      | —       | Recipient phone number with country code, no + prefix (e.g. 85264318721). |
| `text`    | string | Yes      | —       | The message text to send.                                                 |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "target": {
        "type": "string",
        "description": "Recipient phone number with country code, no + prefix (e.g. 85264318721)."
      },
      "text": {
        "type": "string",
        "description": "The message text to send."
      }
    },
    "required": [
      "PCID",
      "target",
      "text"
    ]
  }
  ```
</Expandable>

***

## wati\_send\_template

Send template messages

**Parameters:**

| Parameter        | Type      | Required | Default | Description                                                             |
| ---------------- | --------- | -------- | ------- | ----------------------------------------------------------------------- |
| `broadcast_name` | string    | Yes      | —       | Name for this broadcast batch.                                          |
| `channel`        | string    | No       | —       | Optional channel name or phone number. Omit to use the default channel. |
| `recipients`     | object\[] | Yes      | —       | List of recipients with optional template variable values.              |
| `template_name`  | string    | Yes      | —       | Name of the approved template.                                          |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "broadcast_name": {
        "type": "string",
        "description": "Name for this broadcast batch."
      },
      "channel": {
        "type": "string",
        "description": "Optional channel name or phone number. Omit to use the default channel."
      },
      "recipients": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "phone_number": {
              "type": "string",
              "description": "Recipient phone number with country code."
            },
            "custom_params": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  }
                }
              },
              "description": "Template variable values."
            }
          }
        },
        "description": "List of recipients with optional template variable values."
      },
      "template_name": {
        "type": "string",
        "description": "Name of the approved template."
      }
    },
    "required": [
      "PCID",
      "broadcast_name",
      "recipients",
      "template_name"
    ]
  }
  ```
</Expandable>

***

## wati\_update\_contacts

Bulk update contacts

**Parameters:**

| Parameter  | Type      | Required | Default | Description                 |
| ---------- | --------- | -------- | ------- | --------------------------- |
| `contacts` | object\[] | Yes      | —       | List of contacts to update. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "contacts": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "target": {
              "type": "string",
              "description": "Phone number or contact ID."
            },
            "customParams": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  }
                }
              },
              "description": "Custom parameter key-value pairs to update."
            }
          }
        },
        "description": "List of contacts to update."
      }
    },
    "required": [
      "PCID",
      "contacts"
    ]
  }
  ```
</Expandable>

***

## wati\_update\_conversation\_status

Update conversation status

**Parameters:**

| Parameter    | Type   | Required | Default | Description                      |
| ------------ | ------ | -------- | ------- | -------------------------------- |
| `target`     | string | Yes      | —       | Phone number or conversation ID. |
| `new_status` | string | Yes      | —       | New conversation status.         |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "target": {
        "type": "string",
        "description": "Phone number or conversation ID."
      },
      "new_status": {
        "type": "string",
        "description": "New conversation status.",
        "enum": [
          "open",
          "solved",
          "pending",
          "block"
        ]
      }
    },
    "required": [
      "PCID",
      "target",
      "new_status"
    ]
  }
  ```
</Expandable>
