API and create payload

Three resources sit behind Smart Balancers: the balancer itself, the target groups it can route to, and the serving endpoints that wrap a single instance or balancer under a name.

API surface

OperationEndpoint
List smart balancersGET /smart-balancers
Create smart balancerPOST /smart-balancers
Update smart balancerPATCH /smart-balancers/{id}
Delete smart balancerDELETE /smart-balancers/{id}
List target groupsGET /target-groups
Create target groupPOST /target-groups
Update target groupPATCH /target-groups/{id}
Delete target groupDELETE /target-groups/{id}
List serving endpointsGET /serving-endpoints
Create serving endpointPOST /serving-endpoints

Create payload

The create payload mirrors the wizard. The intenttext on each route is what the router model uses to decide — write short, declarative sentences and keep the default route's intent deliberately generic.

smart-balancer.json
1{
2  "name": "support-router",
3  "display_name": "Support assistant router",
4  "workload_kind": "chat",
5  "enabled": true,
6  "routing_mode": "intent_classifier",
7  "router_model": {
8    "type": "public_model",
9    "ref": "Qwen/Qwen2.5-3B-Instruct"
10  },
11  "routes": [
12    {
13      "name": "billing",
14      "intent": "The user has a question about invoices, payments, or refunds.",
15      "destination": { "type": "instance", "ref": "billing-bot" },
16      "priority": 1,
17      "enabled": true
18    },
19    {
20      "name": "technical",
21      "intent": "The user reports a bug, an error, or an integration issue.",
22      "destination": { "type": "target_group", "ref": "tech-support-pool" },
23      "priority": 2,
24      "enabled": true
25    },
26    {
27      "name": "general",
28      "intent": "Catch-all for anything that does not match a specialised route.",
29      "destination": { "type": "instance", "ref": "general-bot" },
30      "priority": 99,
31      "is_default": true,
32      "enabled": true
33    }
34  ]
35}