Skip to documentation

Chat Completions

Text conversations and caller-executed function calls in OpenAI Chat format.

Updated October 31, 2026 · Contract 0.2.0

POST/v1/chat/completions

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
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.

modelstringrequired

Up to 100 characters.

messagesarray<object | object | object>required

Up to 128 items. At least 1 item.

toolsarray<object>

Up to 8 items.

Show item fields
type"function"required

functionobjectrequired

Unknown fields rejected.

Show object fields
namestringrequired

descriptionstring

Default: "". Up to 1,000 characters.

parametersobjectrequired

tool_choice"auto" | "none" | "required" | object

Show accepted variants
Variant 1"auto" | "none" | "required"

Variant 2object

Unknown fields rejected.

Show object fields
type"function"required

functionobjectrequired

Unknown fields rejected.

Show object fields
namestringrequired

max_tokensinteger

Minimum 1. Maximum 512,000.

max_completion_tokensinteger

Minimum 1. Maximum 512,000.

reasoning_effort"off" | "none" | "low" | "high" | "max"

temperaturenumber

Minimum 0. Maximum 2.

top_pnumber

Minimum 0. Maximum 1.

stopstring | array<string>

Show accepted variants
Variant 1string

Up to 1,024 characters.

Variant 2array<string>

Up to 16 items. At least 1 item.

response_formatobject | object | object

Show accepted variants
Variant 1object

Unknown fields rejected.

Show object fields
type"text"required

Variant 2object

Unknown fields rejected.

Show object fields
type"json_object"required

Variant 3object

Unknown fields rejected.

Show object fields
type"json_schema"required

json_schemaobjectrequired

Unknown fields rejected.

Show object fields
namestringrequired

descriptionstring

Up to 1,000 characters.

schemaobjectrequired

strictboolean

effort"off" | "none" | "low" | "high" | "max"

prompt_tokensinteger

Minimum 0. Maximum 9,007,199,254,740,991.

streamboolean

Default: false.

stream_optionsobject

Unknown fields rejected.

Show object fields
include_usagebooleanrequired

Response schema

idstringrequired

object"chat.completion"required

createdintegerrequired

Minimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.

modelstringrequired

choicesarray<object>required

Up to 1 item. At least 1 item.

Show item fields
index0required

messageobjectrequired

Unknown fields rejected.

Show object fields
role"assistant"required

contentstring | nullrequired

reasoning_contentstring

tool_callsarray<object>

Show item fields
idstringrequired

type"function"required

functionobjectrequired

Unknown fields rejected.

finish_reason"stop" | "tool_calls" | "length"required

usageobjectrequired

Unknown fields rejected.

Show object fields
prompt_tokensinteger | nullrequired

Minimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.

completion_tokensinteger | nullrequired

Minimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.

total_tokensinteger | nullrequired

Minimum -9,007,199,254,740,991. Maximum 9,007,199,254,740,991.

prompt_tokens_detailsobject

Unknown fields rejected.

Show object fields
cached_tokensintegerrequired

Minimum 0. Maximum 9,007,199,254,740,991.

completion_tokens_detailsobject

Unknown fields rejected.

Show object fields
reasoning_tokensintegerrequired

Minimum 0. Maximum 9,007,199,254,740,991.