Chat and coding
Chat and coding run on POST https://ai.ollalink.com/v1/chat/completions with your GPU API key (X-NH-GPU-Key), in the
OpenAI request shape (model, messages, max_tokens, temperature, stream, tools, tool_choice, response_format).
Both are always on, and since 7 November 2026 both lanes are served by the same coding-grade model with the same
limits: use chat for everyday questions, explanations and instruction following, coding for code, bug fixes and agents.
Replies name the lane you sent (chat or coding).
| Setting | chat and coding |
|---|---|
| Default sampling | temperature 0.6, top-p 0.9, top-k 64, min-p 0.05, repeat penalty 1.1 (send your own to override) |
| Output | max_tokens 1–8,192 (default 8,192); max_completion_tokens means the same and has the same cap |
| Input | the whole request (messages, tools, formatting) plus max_tokens must fit the lane’s context (400 with the token counts if not); body at most 1 MiB |
- Answers directly: no reasoning part by default; small tasks typically take 0.4–2.5 s. To think first on a hard task, send
"chat_template_kwargs": {"enable_thinking": true}: the reasoning comes back inmessage.reasoning(streaming:delta.reasoning), the answer inmessage.content, and the reasoning counts towardsmax_tokens(expect roughly three times the tokens and time). - Tools (OpenAI format):
toolswithtool_callsreplies, streamed or not, several calls in one reply;tool_choiceauto,required,noneor one named function;response_formatjson_object/json_schema. Your client runs the tools; ranges, patterns and formats in your schema are not enforced by the model, so check them in your tool. - Image input: add
{"type": "image_url", "image_url": {"url": "data:image/png;base64,…"}}parts to a message — screenshots of terminal output, error dialogs, diagrams. Keep the body under 1 MiB (images under about 700 KB before base64). - Long answers: use
"stream": true. A non-streaming request is dropped if nothing arrives for three minutes. - Conversations: send the same
X-Conversation-Idheader (up to 128 characters) on every turn of one conversation, so follow-up turns reuse the cached prompt and start faster. - When busy, a request waits briefly, then answers
503withRetry-After; retry then. - Unfiltered: the model does not refuse requests; apply your own content rules if your product needs them.
- Usage is counted in tokens (prompt plus answer, reasoning included) and shows under Usage in the dashboard.
curl https://ai.ollalink.com/v1/chat/completions -H "X-NH-GPU-Key: $YOUR_GPU_KEY" -H "Content-Type: application/json" \ -d '{"model": "chat", "messages": [{"role": "user", "content": "Give me two tips for a job interview."}]}'
curl https://ai.ollalink.com/v1/chat/completions -H "X-NH-GPU-Key: $YOUR_GPU_KEY" -H "Content-Type: application/json" \ -d '{"model": "coding", "stream": true, "messages": [{"role": "user", "content": "Write a Python function is_valid_ipv4(s) that rejects leading zeros."}]}'Vision and OCR use the same route with an image part; see Models. For translation, use
POST /v1/translate — it keeps numbers and placeholders intact.
