Chat Completions
Text conversations and caller-executed function calls in OpenAI Chat format.
Updated October 31, 2026 · Contract 0.2.0
Request contract
Send 1–128 ordered system, user, assistant or tool messages. Use one of max_tokens or max_completion_tokens, never both. Each request is bounded by the configured model ceiling and shared serialized-input limits.
Function calls
Up to eight declared functions and bounded call results are supported. tool_choice can be auto, none, required or a named function. The caller executes returned functions; a function named shell never authorizes execution on NotHoly hosts.
Streaming
Set stream:true. Chunks preserve a stable ID and indexed tool-argument fragments. include_usage emits a final usage-only chunk. [DONE] appears only after successful completion; partial output may be followed by an error.
Response and limitations
Read choices[0].message and finish_reason. Content can be null for tool-only turns. Unknown fields and malformed tool cycles fail before dispatch. Optional effort, sampling and response-format fields require an explicitly enabled model capability; the generated schema documents their exact accepted shape.
Request example
Use your customer key and a published model. Copying an example does not send a request.
curl https://api.notholy.com/v1/chat/completions \
-H "Authorization: Bearer $NOTHOLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "notholy-pulse",
"messages": [
{
"role": "user",
"content": "Explain least privilege."
}
],
"max_tokens": 256
}'HTTP contract fixture. Fixture checks are separate from live model availability.
Request fields
Generated from the versioned contract. Refinement rules above still apply.
modelstringrequiredUp to 100 characters.
messagesarray<object | object | object>requiredUp to 128 items. At least 1 item.
toolsarray<object>Up to 8 items.
Show item fields
type"function"requiredfunctionobjectrequiredUnknown fields rejected.
Show object fields
namestringrequireddescriptionstringDefault: "". Up to 1,000 characters.
parametersobjectrequiredtool_choice"auto" | "none" | "required" | objectShow accepted variants
Variant 1"auto" | "none" | "required"Variant 2objectUnknown fields rejected.
Show object fields
type"function"requiredfunctionobjectrequiredUnknown fields rejected.
Show object fields
namestringrequiredmax_tokensintegerMinimum 1. Maximum 512,000.
max_completion_tokensintegerMinimum 1. Maximum 512,000.
reasoning_effort"off" | "none" | "low" | "high" | "max"temperaturenumberMinimum 0. Maximum 2.
top_pnumberMinimum 0. Maximum 1.
stopstring | array<string>Show accepted variants
Variant 1stringUp to 1,024 characters.
Variant 2array<string>Up to 16 items. At least 1 item.
response_formatobject | object | objectShow accepted variants
Variant 1objectUnknown fields rejected.
Show object fields
type"text"requiredVariant 2objectUnknown fields rejected.
Show object fields
type"json_object"requiredVariant 3objectUnknown fields rejected.
Show object fields
type"json_schema"requiredjson_schemaobjectrequiredUnknown fields rejected.
Show object fields
namestringrequireddescriptionstringUp to 1,000 characters.
schemaobjectrequiredstrictbooleaneffort"off" | "none" | "low" | "high" | "max"prompt_tokensintegerMinimum 0. Maximum 9,007,199,254,740,991.
streambooleanDefault: false.
stream_optionsobjectUnknown fields rejected.
Show object fields
include_usagebooleanrequiredResponse schema
idstringrequiredobject"chat.completion"requiredcreatedintegerrequiredMinimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.
modelstringrequiredchoicesarray<object>requiredUp to 1 item. At least 1 item.
Show item fields
index0requiredmessageobjectrequiredUnknown fields rejected.
Show object fields
role"assistant"requiredcontentstring | nullrequiredreasoning_contentstringtool_callsarray<object>Show item fields
idstringrequiredtype"function"requiredfunctionobjectrequiredUnknown fields rejected.
finish_reason"stop" | "tool_calls" | "length"requiredusageobjectrequiredUnknown fields rejected.
Show object fields
prompt_tokensinteger | nullrequiredMinimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.
completion_tokensinteger | nullrequiredMinimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.
total_tokensinteger | nullrequiredMinimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.
prompt_tokens_detailsobjectUnknown fields rejected.
Show object fields
cached_tokensintegerrequiredMinimum 0. Maximum 9,007,199,254,740,991.
completion_tokens_detailsobjectUnknown fields rejected.
Show object fields
reasoning_tokensintegerrequiredMinimum 0. Maximum 9,007,199,254,740,991.