curl --request POST \
--url https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update \
--header 'Content-Type: application/json' \
--header 'x-ti-app-id: <api-key>' \
--header 'x-ti-secret-code: <api-key>' \
--data '
{
"workspace_id": "2081651727503572992",
"scope": "workspace",
"rule_mode": "custom",
"rule_order": [
"page_reset",
"llm_judge"
]
}
'import requests
url = "https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update"
payload = {
"workspace_id": "2081651727503572992",
"scope": "workspace",
"rule_mode": "custom",
"rule_order": ["page_reset", "llm_judge"]
}
headers = {
"x-ti-app-id": "<api-key>",
"x-ti-secret-code": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-ti-app-id': '<api-key>',
'x-ti-secret-code': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
workspace_id: '2081651727503572992',
scope: 'workspace',
rule_mode: 'custom',
rule_order: ['page_reset', 'llm_judge']
})
};
fetch('https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update', 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://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update",
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([
'workspace_id' => '2081651727503572992',
'scope' => 'workspace',
'rule_mode' => 'custom',
'rule_order' => [
'page_reset',
'llm_judge'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-ti-app-id: <api-key>",
"x-ti-secret-code: <api-key>"
],
]);
$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://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update"
payload := strings.NewReader("{\n \"workspace_id\": \"2081651727503572992\",\n \"scope\": \"workspace\",\n \"rule_mode\": \"custom\",\n \"rule_order\": [\n \"page_reset\",\n \"llm_judge\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-ti-app-id", "<api-key>")
req.Header.Add("x-ti-secret-code", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update")
.header("x-ti-app-id", "<api-key>")
.header("x-ti-secret-code", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"workspace_id\": \"2081651727503572992\",\n \"scope\": \"workspace\",\n \"rule_mode\": \"custom\",\n \"rule_order\": [\n \"page_reset\",\n \"llm_judge\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-ti-app-id"] = '<api-key>'
request["x-ti-secret-code"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"workspace_id\": \"2081651727503572992\",\n \"scope\": \"workspace\",\n \"rule_mode\": \"custom\",\n \"rule_order\": [\n \"page_reset\",\n \"llm_judge\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"msg": "success",
"result": {
"workspace_id": "2081651727503572992",
"scope": "workspace",
"rule_mode": "custom",
"rule_order": [
"page_reset",
"llm_judge"
],
"constraint": "none",
"llm_prompt_mode": "default"
}
}Update Split Configuration
Update the split rules, constraints, and prompt for a workspace or category.
curl --request POST \
--url https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update \
--header 'Content-Type: application/json' \
--header 'x-ti-app-id: <api-key>' \
--header 'x-ti-secret-code: <api-key>' \
--data '
{
"workspace_id": "2081651727503572992",
"scope": "workspace",
"rule_mode": "custom",
"rule_order": [
"page_reset",
"llm_judge"
]
}
'import requests
url = "https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update"
payload = {
"workspace_id": "2081651727503572992",
"scope": "workspace",
"rule_mode": "custom",
"rule_order": ["page_reset", "llm_judge"]
}
headers = {
"x-ti-app-id": "<api-key>",
"x-ti-secret-code": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-ti-app-id': '<api-key>',
'x-ti-secret-code': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
workspace_id: '2081651727503572992',
scope: 'workspace',
rule_mode: 'custom',
rule_order: ['page_reset', 'llm_judge']
})
};
fetch('https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update', 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://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update",
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([
'workspace_id' => '2081651727503572992',
'scope' => 'workspace',
'rule_mode' => 'custom',
'rule_order' => [
'page_reset',
'llm_judge'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-ti-app-id: <api-key>",
"x-ti-secret-code: <api-key>"
],
]);
$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://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update"
payload := strings.NewReader("{\n \"workspace_id\": \"2081651727503572992\",\n \"scope\": \"workspace\",\n \"rule_mode\": \"custom\",\n \"rule_order\": [\n \"page_reset\",\n \"llm_judge\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-ti-app-id", "<api-key>")
req.Header.Add("x-ti-secret-code", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update")
.header("x-ti-app-id", "<api-key>")
.header("x-ti-secret-code", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"workspace_id\": \"2081651727503572992\",\n \"scope\": \"workspace\",\n \"rule_mode\": \"custom\",\n \"rule_order\": [\n \"page_reset\",\n \"llm_judge\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://docflow.textin.com/api/app-api/sip/platform/v2/split-config/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-ti-app-id"] = '<api-key>'
request["x-ti-secret-code"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"workspace_id\": \"2081651727503572992\",\n \"scope\": \"workspace\",\n \"rule_mode\": \"custom\",\n \"rule_order\": [\n \"page_reset\",\n \"llm_judge\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"msg": "success",
"result": {
"workspace_id": "2081651727503572992",
"scope": "workspace",
"rule_mode": "custom",
"rule_order": [
"page_reset",
"llm_judge"
],
"constraint": "none",
"llm_prompt_mode": "default"
}
}Body
Workspace ID. Requires WORKSPACE_CONFIG permission and access to this workspace.
Configuration scope: workspace or category. When scope is category, category_id is required.
workspace, category Rule source: workspaces support default (system defaults) or custom; categories support inherit (follow the workspace) or custom. An inheriting category uses workspace rules and prompts but retains its own constraint.
default, inherit, custom Rules saved for this scope, ordered from highest to lowest priority. Send an empty array for default/inherit. Custom mode accepts 0–7 unique rules. Inherited workspace rules are not expanded here.
7Split rule code. llm_judge asks the model to judge page continuity; configure its prompt with llm_prompt_mode and llm_prompt.
page_same, page_reset, invoice_diff, invoice_same, page_seq, table_continue, llm_judge Required for category scope and must belong to the specified workspace. Omit for workspace scope.
Category constraint: none; strict_single_page (single-page documents); strict_multi_page (multi-page documents); strict_once (one document in this category). Workspace scope only supports none.
none, strict_single_page, strict_multi_page, strict_once Prompt source for the llm_judge rule: default uses the system prompt; custom uses llm_prompt. This setting is not a split rule.
default, custom Custom instructions for llm_judge, for example: use titles and context to decide whether adjacent pages belong to the same document. Must be nonblank when this rule is enabled and llm_prompt_mode=custom.
Response
On success, code is 200 and result contains the split configuration. On failure, code identifies the error and msg explains the reason.
Business status code: 200 indicates success; other values indicate failure.
200
Response message; explains the reason when the request fails.
"success"
Saved split configuration on success; null or omitted on failure.
Show child attributes
Show child attributes

