Decisions
System One Decisions
Answer structured questions about your application state. Returns one typed answer per question, with probabilities. Gloo AI chooses the model, and any model you send is ignored.
POST
/
xds
/
v2
/
sys1
Post System One decision
curl --request POST \
--url https://platform.ai.gloo.com/xds/v2/sys1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"state": {
"ticket": "I was charged twice for my subscription this month.",
"customer_tier": "pro"
},
"questions": {
"category": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "Payments, invoices, refunds, or charges.",
"technical": "Bugs, errors, or how the product works.",
"account": "Login, profile, or account settings."
}
},
"wants_refund": {
"type": "noul",
"instructions": "The customer is asking for their money back."
}
}
}
'import requests
url = "https://platform.ai.gloo.com/xds/v2/sys1"
payload = {
"state": {
"ticket": "I was charged twice for my subscription this month.",
"customer_tier": "pro"
},
"questions": {
"category": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "Payments, invoices, refunds, or charges.",
"technical": "Bugs, errors, or how the product works.",
"account": "Login, profile, or account settings."
}
},
"wants_refund": {
"type": "noul",
"instructions": "The customer is asking for their money back."
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
state: {
ticket: 'I was charged twice for my subscription this month.',
customer_tier: 'pro'
},
questions: {
category: {
type: 'choice',
instructions: 'Which team should handle this ticket?',
criteria: {
billing: 'Payments, invoices, refunds, or charges.',
technical: 'Bugs, errors, or how the product works.',
account: 'Login, profile, or account settings.'
}
},
wants_refund: {type: 'noul', instructions: 'The customer is asking for their money back.'}
}
})
};
fetch('https://platform.ai.gloo.com/xds/v2/sys1', 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://platform.ai.gloo.com/xds/v2/sys1",
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([
'state' => [
'ticket' => 'I was charged twice for my subscription this month.',
'customer_tier' => 'pro'
],
'questions' => [
'category' => [
'type' => 'choice',
'instructions' => 'Which team should handle this ticket?',
'criteria' => [
'billing' => 'Payments, invoices, refunds, or charges.',
'technical' => 'Bugs, errors, or how the product works.',
'account' => 'Login, profile, or account settings.'
]
],
'wants_refund' => [
'type' => 'noul',
'instructions' => 'The customer is asking for their money back.'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://platform.ai.gloo.com/xds/v2/sys1"
payload := strings.NewReader("{\n \"state\": {\n \"ticket\": \"I was charged twice for my subscription this month.\",\n \"customer_tier\": \"pro\"\n },\n \"questions\": {\n \"category\": {\n \"type\": \"choice\",\n \"instructions\": \"Which team should handle this ticket?\",\n \"criteria\": {\n \"billing\": \"Payments, invoices, refunds, or charges.\",\n \"technical\": \"Bugs, errors, or how the product works.\",\n \"account\": \"Login, profile, or account settings.\"\n }\n },\n \"wants_refund\": {\n \"type\": \"noul\",\n \"instructions\": \"The customer is asking for their money back.\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://platform.ai.gloo.com/xds/v2/sys1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"state\": {\n \"ticket\": \"I was charged twice for my subscription this month.\",\n \"customer_tier\": \"pro\"\n },\n \"questions\": {\n \"category\": {\n \"type\": \"choice\",\n \"instructions\": \"Which team should handle this ticket?\",\n \"criteria\": {\n \"billing\": \"Payments, invoices, refunds, or charges.\",\n \"technical\": \"Bugs, errors, or how the product works.\",\n \"account\": \"Login, profile, or account settings.\"\n }\n },\n \"wants_refund\": {\n \"type\": \"noul\",\n \"instructions\": \"The customer is asking for their money back.\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.ai.gloo.com/xds/v2/sys1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"state\": {\n \"ticket\": \"I was charged twice for my subscription this month.\",\n \"customer_tier\": \"pro\"\n },\n \"questions\": {\n \"category\": {\n \"type\": \"choice\",\n \"instructions\": \"Which team should handle this ticket?\",\n \"criteria\": {\n \"billing\": \"Payments, invoices, refunds, or charges.\",\n \"technical\": \"Bugs, errors, or how the product works.\",\n \"account\": \"Login, profile, or account settings.\"\n }\n },\n \"wants_refund\": {\n \"type\": \"noul\",\n \"instructions\": \"The customer is asking for their money back.\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "gen-dec-1793981370-uOwFt34AIeyibLNhYu26",
"model": "typesafe/jev-1.13-20260917",
"provider": "TypeSafe",
"answers": {
"category": {
"type": "choice",
"choice": "billing",
"confidence": 1,
"probabilities": {
"account": 0,
"billing": 1,
"technical": 0
}
},
"wants_refund": {
"type": "noul",
"noul": 0.66
}
},
"usage": {
"input_tokens": 386,
"output_tokens": 58
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}Guide: System One Decisions
Quickstart, question types, writing questions, pricing, and errors.
Authorizations
Body
application/json
⌘I
Post System One decision
curl --request POST \
--url https://platform.ai.gloo.com/xds/v2/sys1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"state": {
"ticket": "I was charged twice for my subscription this month.",
"customer_tier": "pro"
},
"questions": {
"category": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "Payments, invoices, refunds, or charges.",
"technical": "Bugs, errors, or how the product works.",
"account": "Login, profile, or account settings."
}
},
"wants_refund": {
"type": "noul",
"instructions": "The customer is asking for their money back."
}
}
}
'import requests
url = "https://platform.ai.gloo.com/xds/v2/sys1"
payload = {
"state": {
"ticket": "I was charged twice for my subscription this month.",
"customer_tier": "pro"
},
"questions": {
"category": {
"type": "choice",
"instructions": "Which team should handle this ticket?",
"criteria": {
"billing": "Payments, invoices, refunds, or charges.",
"technical": "Bugs, errors, or how the product works.",
"account": "Login, profile, or account settings."
}
},
"wants_refund": {
"type": "noul",
"instructions": "The customer is asking for their money back."
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
state: {
ticket: 'I was charged twice for my subscription this month.',
customer_tier: 'pro'
},
questions: {
category: {
type: 'choice',
instructions: 'Which team should handle this ticket?',
criteria: {
billing: 'Payments, invoices, refunds, or charges.',
technical: 'Bugs, errors, or how the product works.',
account: 'Login, profile, or account settings.'
}
},
wants_refund: {type: 'noul', instructions: 'The customer is asking for their money back.'}
}
})
};
fetch('https://platform.ai.gloo.com/xds/v2/sys1', 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://platform.ai.gloo.com/xds/v2/sys1",
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([
'state' => [
'ticket' => 'I was charged twice for my subscription this month.',
'customer_tier' => 'pro'
],
'questions' => [
'category' => [
'type' => 'choice',
'instructions' => 'Which team should handle this ticket?',
'criteria' => [
'billing' => 'Payments, invoices, refunds, or charges.',
'technical' => 'Bugs, errors, or how the product works.',
'account' => 'Login, profile, or account settings.'
]
],
'wants_refund' => [
'type' => 'noul',
'instructions' => 'The customer is asking for their money back.'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://platform.ai.gloo.com/xds/v2/sys1"
payload := strings.NewReader("{\n \"state\": {\n \"ticket\": \"I was charged twice for my subscription this month.\",\n \"customer_tier\": \"pro\"\n },\n \"questions\": {\n \"category\": {\n \"type\": \"choice\",\n \"instructions\": \"Which team should handle this ticket?\",\n \"criteria\": {\n \"billing\": \"Payments, invoices, refunds, or charges.\",\n \"technical\": \"Bugs, errors, or how the product works.\",\n \"account\": \"Login, profile, or account settings.\"\n }\n },\n \"wants_refund\": {\n \"type\": \"noul\",\n \"instructions\": \"The customer is asking for their money back.\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://platform.ai.gloo.com/xds/v2/sys1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"state\": {\n \"ticket\": \"I was charged twice for my subscription this month.\",\n \"customer_tier\": \"pro\"\n },\n \"questions\": {\n \"category\": {\n \"type\": \"choice\",\n \"instructions\": \"Which team should handle this ticket?\",\n \"criteria\": {\n \"billing\": \"Payments, invoices, refunds, or charges.\",\n \"technical\": \"Bugs, errors, or how the product works.\",\n \"account\": \"Login, profile, or account settings.\"\n }\n },\n \"wants_refund\": {\n \"type\": \"noul\",\n \"instructions\": \"The customer is asking for their money back.\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.ai.gloo.com/xds/v2/sys1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"state\": {\n \"ticket\": \"I was charged twice for my subscription this month.\",\n \"customer_tier\": \"pro\"\n },\n \"questions\": {\n \"category\": {\n \"type\": \"choice\",\n \"instructions\": \"Which team should handle this ticket?\",\n \"criteria\": {\n \"billing\": \"Payments, invoices, refunds, or charges.\",\n \"technical\": \"Bugs, errors, or how the product works.\",\n \"account\": \"Login, profile, or account settings.\"\n }\n },\n \"wants_refund\": {\n \"type\": \"noul\",\n \"instructions\": \"The customer is asking for their money back.\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "gen-dec-1793981370-uOwFt34AIeyibLNhYu26",
"model": "typesafe/jev-1.13-20260917",
"provider": "TypeSafe",
"answers": {
"category": {
"type": "choice",
"choice": "billing",
"confidence": 1,
"probabilities": {
"account": 0,
"billing": 1,
"technical": 0
}
},
"wants_refund": {
"type": "noul",
"noul": 0.66
}
},
"usage": {
"input_tokens": 386,
"output_tokens": 58
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": 123,
"fault": "<string>",
"retryable": true
}
}
