curl --request POST \
--url https://api.siliconflow.com/v1/systemone \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "Kev-4B",
"state": "My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
}
}
}
'import requests
url = "https://api.siliconflow.com/v1/systemone"
payload = {
"model": "Kev-4B",
"state": "My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!",
"questions": { "is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
} }
}
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({
model: 'Kev-4B',
state: 'My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!',
questions: {is_urgent: {type: 'noul', instructions: 'Does this message convey urgency?'}}
})
};
fetch('https://api.siliconflow.com/v1/systemone', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"model": "Kev-4B",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.92
}
},
"usage": {
"input_tokens": 296,
"output_tokens": 20
}
}{
"code": 20012,
"message": "<string>",
"data": "<string>"
}"Invalid token""Invalid token""404 page not found"{
"message": "Request was rejected due to rate limiting. If you want more, please contact contact@siliconflow.com. Details:TPM limit reached.",
"data": "<string>"
}{
"code": 50505,
"message": "Model service overloaded. Please try again later.",
"data": "<string>"
}"<string>"Create System One (TypeSafe)
[Alpha] Make yes/no judgments, option selections, or scoring assessments based on the given input. Use this endpoint to call the TypeSafe decision model Kev-4B.
This API is still in a testing and validation stage; it may be adjusted or discontinued. Free of charge until 2026-10-08 (inclusive); if charging starts after that, it will be announced separately.
Send a shared state plus a map of typed questions. Question types (noul, choice, score) may be mixed in the same request. Response answers uses the same keys as the request questions.
curl --request POST \
--url https://api.siliconflow.com/v1/systemone \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "Kev-4B",
"state": "My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
}
}
}
'import requests
url = "https://api.siliconflow.com/v1/systemone"
payload = {
"model": "Kev-4B",
"state": "My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!",
"questions": { "is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
} }
}
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({
model: 'Kev-4B',
state: 'My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!',
questions: {is_urgent: {type: 'noul', instructions: 'Does this message convey urgency?'}}
})
};
fetch('https://api.siliconflow.com/v1/systemone', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"model": "Kev-4B",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.92
}
},
"usage": {
"input_tokens": 296,
"output_tokens": 20
}
}{
"code": 20012,
"message": "<string>",
"data": "<string>"
}"Invalid token""Invalid token""404 page not found"{
"message": "Request was rejected due to rate limiting. If you want more, please contact contact@siliconflow.com. Details:TPM limit reached.",
"data": "<string>"
}{
"code": 50505,
"message": "Model service overloaded. Please try again later.",
"data": "<string>"
}"<string>"POST /systemone. Send shared state plus a map of typed questions (noul for yes/no, choice for single select, score for rating). The response answers object uses the same keys.
Question types can be mixed in one request. Question map keys are labels for your answers only; they are not sent to the model. Put the actual question in instructions.
TypeSafe SDK
The official TypeSafe Python SDK appends/v1/systemone to base_url. It reads the API key from TYPESAFE_API_KEY, or you can pass a SiliconFlow API key with api_key.
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
with TypeSafeClient(
base_url="https://api.siliconflow.com",
model="Kev-4B",
) as client:
result = client.system_one(
"My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!",
{
"is_urgent": Noul(instructions="Does this message convey urgency?"),
"department": Choice(
instructions="Which team should handle this?",
criteria={
"billing": "Invoicing, refunds, and payment issues",
"technical": "Bugs, outages, and integrations",
"support": "Service attitude and response times",
},
),
"frustration": Score(
instructions="How frustrated is the customer?",
criteria=["Calm", "Slightly annoyed", "Clearly annoyed", "Very angry"],
),
},
)
print(result.nouls["is_urgent"].noul)
print(result.choices["department"].choice)
print(result.scores["frustration"].score)
Authorizations
Headers
Request trace ID. Optionally pass your own value to tag this request; if omitted, the platform generates one. When troubleshooting, you can provide either this value or the x-siliconcloud-trace-id response header.
Standard W3C Trace Context header. When provided, the platform uses its trace-id as the trace identifier for this request.
Body
- Noul
- Choice
- Score
The model handling this request. Currently supported: Kev-4B.
Kev-4B "Kev-4B"
The content all questions are evaluated against. It can be a string, a JSON object, or an array.
- A string suits a full text passage.
- An object suits structured fields, and can be referenced by field name in
instructions. - An array suits a list of texts or objects.
Nested structures inside objects and arrays are not restricted.
"My withdrawal has failed for three days in a row and support has not replied. Please handle this as soon as possible!"
A map of questions. Keys are chosen by the caller and only used to fill answers; the response answers uses the same keys. Question types may be mixed in one request.
Show child attributes
Show child attributes
{
"is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
}
}
Response
Model response. The response header includes x-siliconcloud-trace-id, the unique trace identifier for this request. Any X-Trace-Id request header you passed in is echoed back in this field. When troubleshooting, provide either trace ID.
- Noul
- Choice
- Score
The model that handled this request.
"Kev-4B"
An answer map keyed exactly like the request questions. No key missing, no key added.
Show child attributes
Show child attributes
{
"is_urgent": { "type": "noul", "noul": 0.92 }
}
Token usage for this request. Input tokens are billed; output tokens are currently free.
Show child attributes
Show child attributes