Create intent rule
curl --request POST \
--url https://api-prod.usefini.com/v2/hc-rules/public \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"name": "<string>",
"description": "<string>",
"type": "<string>",
"status": "<string>",
"flowConfig": {},
"botIds": [
"<string>"
]
}
'import requests
url = "https://api-prod.usefini.com/v2/hc-rules/public"
payload = {
"name": "<string>",
"description": "<string>",
"type": "<string>",
"status": "<string>",
"flowConfig": {},
"botIds": ["<string>"]
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
type: '<string>',
status: '<string>',
flowConfig: {},
botIds: ['<string>']
})
};
fetch('https://api-prod.usefini.com/v2/hc-rules/public', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-prod.usefini.com/v2/hc-rules/public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'type' => '<string>',
'status' => '<string>',
'flowConfig' => [
],
'botIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-prod.usefini.com/v2/hc-rules/public"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"type\": \"<string>\",\n \"status\": \"<string>\",\n \"flowConfig\": {},\n \"botIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-prod.usefini.com/v2/hc-rules/public")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"type\": \"<string>\",\n \"status\": \"<string>\",\n \"flowConfig\": {},\n \"botIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.usefini.com/v2/hc-rules/public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"type\": \"<string>\",\n \"status\": \"<string>\",\n \"flowConfig\": {},\n \"botIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodyIntent Rules
Create intent rule
Create a draft or published Rulebook intent rule.
POST
/
v2
/
hc-rules
/
public
Create intent rule
curl --request POST \
--url https://api-prod.usefini.com/v2/hc-rules/public \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"name": "<string>",
"description": "<string>",
"type": "<string>",
"status": "<string>",
"flowConfig": {},
"botIds": [
"<string>"
]
}
'import requests
url = "https://api-prod.usefini.com/v2/hc-rules/public"
payload = {
"name": "<string>",
"description": "<string>",
"type": "<string>",
"status": "<string>",
"flowConfig": {},
"botIds": ["<string>"]
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
type: '<string>',
status: '<string>',
flowConfig: {},
botIds: ['<string>']
})
};
fetch('https://api-prod.usefini.com/v2/hc-rules/public', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-prod.usefini.com/v2/hc-rules/public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'type' => '<string>',
'status' => '<string>',
'flowConfig' => [
],
'botIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-prod.usefini.com/v2/hc-rules/public"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"type\": \"<string>\",\n \"status\": \"<string>\",\n \"flowConfig\": {},\n \"botIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-prod.usefini.com/v2/hc-rules/public")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"type\": \"<string>\",\n \"status\": \"<string>\",\n \"flowConfig\": {},\n \"botIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.usefini.com/v2/hc-rules/public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"type\": \"<string>\",\n \"status\": \"<string>\",\n \"flowConfig\": {},\n \"botIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_bodyCreates an intent rule. Use
status: "DRAFT" for a reviewable draft or status: "PUBLISHED" for a live version.
Headers
string
required
Bearer token containing your Fini workspace API key. Format:
Bearer fini_... The key needs write scope.string
required
application/jsonBody parameters
string
required
Rule name.
string
required
Natural-language routing description used by the planner.
string
required
Send
intent.string
DRAFT or PUBLISHED. Defaults to PUBLISHED. ARCHIVED is rejected.RuleNodeConfig
Rule tree. See the shared RuleNodeConfig shape.
string[]
Agent IDs to assign to a published rule. Drafts cannot include agent assignments.
Response
Returns the createdRule. Draft responses have botIds: [].
Errors
400 Bad Request
400 Bad Request
The body is malformed, a draft includes agent assignments, an agent ID is invalid, or
flowConfig references a missing action or widget form.401 Unauthorized
401 Unauthorized
The API key is missing, malformed, revoked, or invalid.
403 Forbidden
403 Forbidden
The API key does not include the
write scope required for this route.Was this page helpful?
⌘I

