> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefini.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Update reply rule
> Create or update the conditions for one reply rule slot.
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.
<Warning>
Reply rules affect live channel behavior. Validate conditions with the fields
context endpoint before enabling a rule.
</Warning>
## Headers
<ParamField header="Authorization" type="string" required>
Bearer token containing your Fini workspace API key. Format: `Bearer fini_...`
The key needs `write` scope.
</ParamField>
<ParamField header="Content-Type" type="string" required>
`application/json`
</ParamField>
## Path parameters
<ParamField path="replyType" type="string" required>
Reply slot to update. Supported values are `NO_REPLY`, `INTERNAL_COMMENT`,
and `DIRECT_REPLY`.
</ParamField>
## Body parameters
<ParamField body="conditions" type="array" required>
Condition groups for this reply slot. Conditions use the same shape returned
by [Get reply rule fields context](/en/api-reference/get-reply-rule-fields-context).
</ParamField>
<ParamField body="isEnabled" type="boolean">
Whether Fini should evaluate this reply slot. Omit to preserve the service
default for the upsert.
</ParamField>
## Response
Returns the updated [reply rule](/en/api-reference/reply-rules#replyrule-object)
slot.
<RequestExample>
~~~bash cURL theme={null}
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
}'
~~~
~~~javascript Node.js theme={null}
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();
~~~
~~~python Python theme={null}
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()
~~~
</RequestExample>
<ResponseExample>
~~~json 200 OK theme={null}
{
"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"
}
~~~
</ResponseExample>
## Related topics
- [Overview](/en/api-reference/reply-rules.md)
- [Reply Rules](/en/automations/reply-behavior.md)
- [API overview](/en/api-reference/overview.md)
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.
Reply Rules

