curl --request POST \
--url "https://api-prod.usefini.com/v2/guardrail-policies/public" \
--header "Authorization: Bearer $FINI_API_KEY" \
--header "Content-Type: application/json" \
--data '{"botId": "11111111-1111-4111-8111-111111111111", "checkType": "banned_terms", "config": {"terms": ["guaranteed approval"]}, "enabled": true, "sources": ["widget"]}'
const response = await fetch("https://api-prod.usefini.com/v2/guardrail-policies/public", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.FINI_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({"botId": "11111111-1111-4111-8111-111111111111", "checkType": "banned_terms", "config": {"terms": ["guaranteed approval"]}, "enabled": true, "sources": ["widget"]}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
import os
import requests
response = requests.post(
"https://api-prod.usefini.com/v2/guardrail-policies/public",
headers={"Authorization": f"Bearer {os.environ['FINI_API_KEY']}"},
json={'botId': '11111111-1111-4111-8111-111111111111', 'checkType': 'banned_terms', 'config': {'terms': ['guaranteed approval']}, 'enabled': True, 'sources': ['widget']},
timeout=30,
)
response.raise_for_status()
print(response.json())
{
"id": "22222222-2222-4222-8222-222222222222",
"companyId": "33333333-3333-4333-8333-333333333333",
"botId": "11111111-1111-4111-8111-111111111111",
"checkType": "banned_terms",
"config": {
"terms": [
"guaranteed approval"
]
},
"enabled": true,
"sources": [
"widget"
],
"createdAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-01T08:00:00.000Z"
}
Guardrails
Create guardrail policy
Create guardrail policy through the workspace-scoped public API.
POST
/
v2
/
guardrail-policies
/
public
curl --request POST \
--url "https://api-prod.usefini.com/v2/guardrail-policies/public" \
--header "Authorization: Bearer $FINI_API_KEY" \
--header "Content-Type: application/json" \
--data '{"botId": "11111111-1111-4111-8111-111111111111", "checkType": "banned_terms", "config": {"terms": ["guaranteed approval"]}, "enabled": true, "sources": ["widget"]}'
const response = await fetch("https://api-prod.usefini.com/v2/guardrail-policies/public", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.FINI_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({"botId": "11111111-1111-4111-8111-111111111111", "checkType": "banned_terms", "config": {"terms": ["guaranteed approval"]}, "enabled": true, "sources": ["widget"]}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
import os
import requests
response = requests.post(
"https://api-prod.usefini.com/v2/guardrail-policies/public",
headers={"Authorization": f"Bearer {os.environ['FINI_API_KEY']}"},
json={'botId': '11111111-1111-4111-8111-111111111111', 'checkType': 'banned_terms', 'config': {'terms': ['guaranteed approval']}, 'enabled': True, 'sources': ['widget']},
timeout=30,
)
response.raise_for_status()
print(response.json())
{
"id": "22222222-2222-4222-8222-222222222222",
"companyId": "33333333-3333-4333-8333-333333333333",
"botId": "11111111-1111-4111-8111-111111111111",
"checkType": "banned_terms",
"config": {
"terms": [
"guaranteed approval"
]
},
"enabled": true,
"sources": [
"widget"
],
"createdAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-01T08:00:00.000Z"
}
Creates a saved policy directly. It is enabled by default; use
enabled: false to configure it without enabling evaluation. Duplicate built-in types return 409; exceeding 10 custom rules returns 400.
See the Guardrails overview for shared schemas and runtime limitations.
string
required
Bearer workspace API key. The key needs
write scope.string
required
Agent UUID.
string
required
One of the six check types.
object
required
Complete check-specific configuration. See configuration schemas.
boolean
Defaults to
true on creation.array
Unique supported channel names. Omit or send an empty array on creation for all channels.
Response
string
Policy UUID.
string
Owning workspace UUID.
string
Agent UUID.
string
Check type from the catalogue.
object
Check-specific definition. See the configuration schemas.
boolean
Whether the policy is enabled.
array
Channel names, or
null for all channels.datetime
Creation timestamp.
datetime
Last update timestamp.
curl --request POST \
--url "https://api-prod.usefini.com/v2/guardrail-policies/public" \
--header "Authorization: Bearer $FINI_API_KEY" \
--header "Content-Type: application/json" \
--data '{"botId": "11111111-1111-4111-8111-111111111111", "checkType": "banned_terms", "config": {"terms": ["guaranteed approval"]}, "enabled": true, "sources": ["widget"]}'
const response = await fetch("https://api-prod.usefini.com/v2/guardrail-policies/public", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.FINI_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({"botId": "11111111-1111-4111-8111-111111111111", "checkType": "banned_terms", "config": {"terms": ["guaranteed approval"]}, "enabled": true, "sources": ["widget"]}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
import os
import requests
response = requests.post(
"https://api-prod.usefini.com/v2/guardrail-policies/public",
headers={"Authorization": f"Bearer {os.environ['FINI_API_KEY']}"},
json={'botId': '11111111-1111-4111-8111-111111111111', 'checkType': 'banned_terms', 'config': {'terms': ['guaranteed approval']}, 'enabled': True, 'sources': ['widget']},
timeout=30,
)
response.raise_for_status()
print(response.json())
{
"id": "22222222-2222-4222-8222-222222222222",
"companyId": "33333333-3333-4333-8333-333333333333",
"botId": "11111111-1111-4111-8111-111111111111",
"checkType": "banned_terms",
"config": {
"terms": [
"guaranteed approval"
]
},
"enabled": true,
"sources": [
"widget"
],
"createdAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-01T08:00:00.000Z"
}
Was this page helpful?

