PublicAI Apertus
Apertus models are called with the publicai/... canonical model id. Three models from the Apertus v1.5 family are in the public catalog:
| Model | Context | Image input | Tool calling | Reasoning | Input / Output (1M tokens) |
|---|---|---|---|---|---|
publicai/apertus-v1.5-8b | 262,144 | Yes | Yes | No | $0.10 / $0.20 |
publicai/apertus-v1.5-8b-thinking | 262,144 | Yes | No | On by default, can be turned off | $0.10 / $0.20 |
publicai/apertus-v1.5-70b | 262,144 | Yes | Yes | No | $0.82 / $2.92 |
All three take text and image input, produce text output, support JSON mode, and offer a 262,144-token context window.
The previous-generation publicai/apertus-8b-instruct and publicai/apertus-70b-instruct models keep working. Their context window is 65,536 tokens and they do not accept image input; use the v1.5 versions for new integrations.
Chat Completions
Section titled “Chat Completions”curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "publicai/apertus-v1.5-70b", "messages": [ { "role": "user", "content": "What are the official languages of Switzerland?" } ], "max_tokens": 600 }'Turning reasoning on and off
Section titled “Turning reasoning on and off”Reasoning is only available on publicai/apertus-v1.5-8b-thinking, where it is on by default. The reasoning trace is not mixed into the answer; it comes back separately in message.reasoning_content.
To turn it off, append :fast to the model id:
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "publicai/apertus-v1.5-8b-thinking:fast", "messages": [ { "role": "user", "content": "What is 2 + 2?" } ], "max_tokens": 200 }'The reasoning body field achieves the same result:
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "publicai/apertus-v1.5-8b-thinking", "messages": [ { "role": "user", "content": "What is 2 + 2?" } ], "reasoning": false, "max_tokens": 200 }'The :think suffix keeps reasoning on and matches the default behaviour. With reasoning on, output token consumption rises noticeably, and reasoning tokens are billed as output. For short, single-step requests :fast lowers both latency and cost.
Turning reasoning off applies only to the -thinking model. The other two models do not support reasoning; do not send a reasoning suffix to them.
Tool calling
Section titled “Tool calling”publicai/apertus-v1.5-8b and publicai/apertus-v1.5-70b support the OpenAI-compatible tools schema:
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "publicai/apertus-v1.5-8b", "messages": [ { "role": "user", "content": "What is the weather in Ankara?" } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a city", "parameters": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] } } } ] }'publicai/apertus-v1.5-8b-thinking does not support tool calling. Sending tools or tool_choice to that model is rejected with 400 unsupported_input. Use publicai/apertus-v1.5-8b for tool-calling flows.
See Tool calling for the general tool-calling flow.
Image input
Section titled “Image input”All three v1.5 models read images. Images can only be supplied as base64 data URLs:
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "publicai/apertus-v1.5-70b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What is in this image?" }, { "type": "image_url", "image_url": { "url": "data:image/png;base64,BASE64_CONTENT" } } ] } ], "max_tokens": 400 }'Remote https:// image URLs are not supported and are rejected with 400 unsupported_input. Download the image and send it base64-encoded. Image tokens are reported inside usage.prompt_tokens and billed at the normal input token price; there is no separate image charge.
See Images for the general image flow.
JSON mode
Section titled “JSON mode”All three models produce JSON output with response_format:
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "publicai/apertus-v1.5-8b", "messages": [ { "role": "user", "content": "Return JSON with the city name and country for Ankara." } ], "response_format": { "type": "json_object" }, "max_tokens": 200 }'Prompt cache
Section titled “Prompt cache”Apertus models have no prompt cache. Responses do not include a usage.prompt_tokens_details field and all input tokens are billed at the normal price.
Data policy
Section titled “Data policy”Requests are processed on PublicAI / Swiss AI infrastructure. These are not Turkey-hosted LLMTR models. Take that into account for production flows that carry sensitive data.