curl --request PUT \
--url 'https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean"
},
"operator": "==",
"right": {
"value": true
}
}
]
}
],
"isEnabled": true
}'
const response = await fetch(
"https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public",
{
method: "PUT",
headers: {
Authorization: "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
conditions: [
{
scope: "SCALAR",
predicate: [
{
left: {
path: "alreadyEscalated",
dataType: "boolean",
},
operator: "==",
right: {
value: true,
},
},
],
},
],
isEnabled: true,
}),
}
);
const replyRule = await response.json();
import requests
response = requests.put(
"https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public",
headers={
"Authorization": "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
json={
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean",
},
"operator": "==",
"right": {"value": True},
}
],
}
],
"isEnabled": True,
},
)
reply_rule = response.json()
{
"id": "1c1d72e3-9239-4f43-ad81-2bbb0b7c0312",
"companyId": "228eb0c4-55d9-40c8-b9d1-dae413508164",
"replyType": "NO_REPLY",
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean"
},
"operator": "==",
"right": {
"value": true
}
}
]
}
],
"isEnabled": true,
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-08-27T16:42:15.000Z"
}
Reply Rules
Update reply rule
Create or update the conditions for one reply rule slot.
PUT
/
v2
/
reply-behavior
/
{replyType}
/
public
curl --request PUT \
--url 'https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean"
},
"operator": "==",
"right": {
"value": true
}
}
]
}
],
"isEnabled": true
}'
const response = await fetch(
"https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public",
{
method: "PUT",
headers: {
Authorization: "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
conditions: [
{
scope: "SCALAR",
predicate: [
{
left: {
path: "alreadyEscalated",
dataType: "boolean",
},
operator: "==",
right: {
value: true,
},
},
],
},
],
isEnabled: true,
}),
}
);
const replyRule = await response.json();
import requests
response = requests.put(
"https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public",
headers={
"Authorization": "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
json={
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean",
},
"operator": "==",
"right": {"value": True},
}
],
}
],
"isEnabled": True,
},
)
reply_rule = response.json()
{
"id": "1c1d72e3-9239-4f43-ad81-2bbb0b7c0312",
"companyId": "228eb0c4-55d9-40c8-b9d1-dae413508164",
"replyType": "NO_REPLY",
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean"
},
"operator": "==",
"right": {
"value": true
}
}
]
}
],
"isEnabled": true,
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-08-27T16:42:15.000Z"
}
Creates or updates one reply rule slot for the authenticated workspace. Use this
route to configure when Fini sends no reply, writes an internal comment, or
sends a direct reply.
Reply rules affect live channel behavior. Validate conditions with the fields
context endpoint before enabling a rule.
Headers
string
required
Bearer token containing your Fini workspace API key. Format:
Bearer fini_...
The key needs write scope.string
required
application/jsonPath parameters
string
required
Reply slot to update. Supported values are
NO_REPLY, INTERNAL_COMMENT,
and DIRECT_REPLY.Body parameters
array
required
Condition groups for this reply slot. Conditions use the same shape returned
by Get reply rule fields context.
boolean
Whether Fini should evaluate this reply slot. Omit to preserve the service
default for the upsert.
Response
Returns the updated reply rule slot.curl --request PUT \
--url 'https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean"
},
"operator": "==",
"right": {
"value": true
}
}
]
}
],
"isEnabled": true
}'
const response = await fetch(
"https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public",
{
method: "PUT",
headers: {
Authorization: "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
conditions: [
{
scope: "SCALAR",
predicate: [
{
left: {
path: "alreadyEscalated",
dataType: "boolean",
},
operator: "==",
right: {
value: true,
},
},
],
},
],
isEnabled: true,
}),
}
);
const replyRule = await response.json();
import requests
response = requests.put(
"https://api-prod.usefini.com/v2/reply-behavior/NO_REPLY/public",
headers={
"Authorization": "Bearer fini_your_api_key",
"Content-Type": "application/json",
},
json={
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean",
},
"operator": "==",
"right": {"value": True},
}
],
}
],
"isEnabled": True,
},
)
reply_rule = response.json()
{
"id": "1c1d72e3-9239-4f43-ad81-2bbb0b7c0312",
"companyId": "228eb0c4-55d9-40c8-b9d1-dae413508164",
"replyType": "NO_REPLY",
"conditions": [
{
"scope": "SCALAR",
"predicate": [
{
"left": {
"path": "alreadyEscalated",
"dataType": "boolean"
},
"operator": "==",
"right": {
"value": true
}
}
]
}
],
"isEnabled": true,
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-08-27T16:42:15.000Z"
}
Was this page helpful?

