Chat Completions
Text conversations and caller-executed function calls in OpenAI Chat format.
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, malformed tool cycles and unsupported sampling/structured-output controls fail before provider dispatch.
Request example
Use your own customer key. Confirm the model is published and your API wallet is funded. Copying an example never sends a request.
curl https://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 production 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 1000 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 32. Maximum 4096.
max_completion_tokensintegerMinimum 32. Maximum 4096.
streambooleanDefault: false.
stream_optionsobjectUnknown fields rejected.
Show object fields
include_usagebooleanrequiredResponse schema
idstringrequiredobject"chat.completion"requiredcreatedintegerrequiredMinimum -9007199254740991. Maximum 9007199254740991.
modelstringrequiredchoicesarray<object>requiredUp to 1 items. At least 1 item.
Show item fields
index0requiredmessageobjectrequiredUnknown fields rejected.
Show object fields
role"assistant"requiredcontentstring | nullrequiredtool_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 -9007199254740991. Maximum 9007199254740991.
completion_tokensinteger | nullrequiredMinimum -9007199254740991. Maximum 9007199254740991.
total_tokensinteger | nullrequiredMinimum -9007199254740991. Maximum 9007199254740991.
prompt_tokens_detailsobjectUnknown fields rejected.
Show object fields
cached_tokensintegerrequiredMinimum 0. Maximum 9007199254740991.