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
| Operation | Endpoint |
|---|---|
| List smart balancers | GET /smart-balancers |
| Create smart balancer | POST /smart-balancers |
| Update smart balancer | PATCH /smart-balancers/{id} |
| Delete smart balancer | DELETE /smart-balancers/{id} |
| List target groups | GET /target-groups |
| Create target group | POST /target-groups |
| Update target group | PATCH /target-groups/{id} |
| Delete target group | DELETE /target-groups/{id} |
| List serving endpoints | GET /serving-endpoints |
| Create serving endpoint | POST /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}