Messages and roles
The messages array carries context as an ordered sequence. System establishes task rules, user adds a request, and assistant and tool preserve execution history.
Do not build history by concatenating strings: retain the role and original order of every message.
curl --request POST https://cicora.ai/api/v1/chat/completions \
--header "Authorization: Bearer $CICORA_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "openai/gpt-5.6-sol",
"messages": [
{"role": "system", "content": "Be concise and cite assumptions."},
{"role": "user", "content": "Draft a release checklist."}
],
"temperature": 0.2
}'Control the output
- model identifies a model family and variant.
- temperature, top_p, and an output limit control response variance and size.
- Send only parameters listed as supported for the selected model.
Reliable loop
Separate a transport failure from a model response with a finish_reason. A refusal or context boundary is interface data, not a reason to substitute a result.
When your data-retention rules allow it, store the source request body and normalized response without credentials.