Create a sender-scoped keyword exclusion that suppresses Whats91 internal automation.
Create Keyword Exclusion
Summary
Create a sender-scoped keyword exclusion that suppresses Whats91 internal automation.
Prerequisites
- Authorization: Bearer w91_live_xxx
- Content-Type: application/json for JSON requests
Related documentation
Keyword exclusions are message-scoped: the exclusion suppresses Whats91 internal automation for the matching inbound message, but it does not take ownership of the conversation. Acquire a session immediately afterwards so follow-up messages stay with your board.
| matchMode | Matching rule |
|---|---|
| EXACT | Normalized message text must equal the keyword. |
| CONTAINS | Normalized message text must contain the keyword. |
| WHOLE_WORD | Keyword must match as a whole word or phrase. |
| REGEX | Raw message text is tested against the supplied regular expression. |
/api/v3/custom-boards/keyword-exclusionsCreate a keyword exclusion.
| Parameter | Type | Required | Description |
|---|---|---|---|
senderId | string | Optional | WhatsApp registered sender phone number. |
phoneNumberId | string | Optional | Meta WhatsApp Business phone-number ID. |
boardUid | string | Required | Stable external board identifier controlled by the integrator. |
keyword | string | Required | Keyword or pattern to match. |
matchMode | string | Required | EXACT, CONTAINS, WHOLE_WORD, or REGEX. |
priority | integer | Optional | Evaluation priority among exclusions. |
status | string | Optional | ACTIVE or INACTIVE. |
curl -X POST "https://graph.whats91.com/api/v3/custom-boards/keyword-exclusions" \
-H "Authorization: Bearer w91_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"senderId": "913614068784",
"phoneNumberId": "486728586446799",
"boardUid": "external-board-1",
"keyword": "trackrod",
"matchMode": "WHOLE_WORD",
"priority": 10,
"status": "ACTIVE"
}'{
"success": true,
"message": "Custom board keyword exclusion created",
"data": {
"senderId": "913614068784",
"phoneNumberId": "486728586446799",
"keywordExclusion": {
"uid": "cbke_abc123",
"boardUid": "external-board-1",
"keyword": "trackrod",
"normalizedKeyword": "trackrod",
"matchMode": "WHOLE_WORD",
"priority": 10,
"status": "ACTIVE",
"createdAt": "2026-06-28T08:00:00.000Z",
"updatedAt": "2026-06-28T08:00:00.000Z"
}
},
"metadata": {
"apiVersion": "v3",
"requestId": "request-uuid"
}
}SDK Examples
Use these examples as starting points for server-side implementations.
curl -X POST "https://graph.whats91.com/api/v3/custom-boards/keyword-exclusions" \
-H "Authorization: Bearer w91_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"senderId": "913614068784",
"phoneNumberId": "486728586446799",
"boardUid": "external-board-1",
"keyword": "trackrod",
"matchMode": "WHOLE_WORD",
"priority": 10,
"status": "ACTIVE"
}'const response = await fetch("https://graph.whats91.com/api/v3/custom-boards/keyword-exclusions", {
method: "POST",
headers: {
"Authorization": "Bearer w91_live_xxx",
"Content-Type": "application/json"
},
body: JSON.stringify({
"senderId": "913614068784",
"phoneNumberId": "486728586446799",
"boardUid": "external-board-1",
"keyword": "trackrod",
"matchMode": "WHOLE_WORD",
"priority": 10,
"status": "ACTIVE"
})
});
const data = await response.json();
console.log(data);$ch = curl_init("https://graph.whats91.com/api/v3/custom-boards/keyword-exclusions");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer w91_live_xxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"senderId" => "913614068784",
"phoneNumberId" => "486728586446799",
"boardUid" => "external-board-1",
"keyword" => "trackrod",
"matchMode" => "WHOLE_WORD",
"priority" => 10,
"status" => "ACTIVE"
])
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;import requests
response = requests.request(
"POST",
"https://graph.whats91.com/api/v3/custom-boards/keyword-exclusions",
headers={
"Authorization": "Bearer w91_live_xxx",
"Content-Type": "application/json",
},
json={
"senderId": "913614068784",
"phoneNumberId": "486728586446799",
"boardUid": "external-board-1",
"keyword": "trackrod",
"matchMode": "WHOLE_WORD",
"priority": 10,
"status": "ACTIVE"
}
)
print(response.json())using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer w91_live_xxx");
var request = new HttpRequestMessage(HttpMethod.Post, "https://graph.whats91.com/api/v3/custom-boards/keyword-exclusions");
request.Content = new StringContent(
"""
{
"senderId": "913614068784",
"phoneNumberId": "486728586446799",
"boardUid": "external-board-1",
"keyword": "trackrod",
"matchMode": "WHOLE_WORD",
"priority": 10,
"status": "ACTIVE"
}
""",
Encoding.UTF8,
"application/json"
);
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());Related APIs
Custom Boards
Let an external board take over a WhatsApp conversation without duplicate Whats91 automation replies.
List Keyword Exclusions
List sender-scoped keyword exclusions with status filtering.
Update Keyword Exclusion
Change the board, keyword, match mode, priority, or status of an existing exclusion.
Delete Keyword Exclusion
Remove a keyword exclusion from active matching.