Skip to main content
You send the conversation so far as a list of messages; the model appends its reply. Non-streaming returns the whole reply as one JSON document. For piece-by-piece delivery, see Stream Your First Response.

The Call

The Python and TypeScript examples use the official OpenAI SDK pointed at Nito. For most apps the change is the base URL and the key.

Request Fields

system (or developer) sets instructions, user is the human turn, assistant replays a previous model turn, and tool carries a function result and must reference its call via tool_call_id. Name a model explicitly so behavior does not change when defaults change.

Response

  • choices[0].message.content is the answer. There is exactly one choice.
  • finish_reason: stop, length (token cap), tool_calls, or error.
  • usage: prompt_tokens, completion_tokens, total_tokens. Reasoning models add reasoning_tokens.
  • system_fingerprint is always null.

Attested Hardware

Nothing else changes. A model that cannot serve the level is rejected. Afterwards, fetch and verify the attestation evidence: How Attestation Works, attestation endpoint.

Errors

  • Empty messages. At least one is required.
  • A tool message without tool_call_id.
  • Expecting several choices. Nito returns one. For several models on one prompt, use Model Fusion in the Browser App or Plugin.

Stream Your First Response

Streaming.

Check Usage

What a call used.

Chat Completions Endpoint

Full reference.