Skip to content

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:

ModelContextImage inputTool callingReasoningInput / Output (1M tokens)
publicai/apertus-v1.5-8b262,144YesYesNo$0.10 / $0.20
publicai/apertus-v1.5-8b-thinking262,144YesNoOn by default, can be turned off$0.10 / $0.20
publicai/apertus-v1.5-70b262,144YesYesNo$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.

Terminal window
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
}'

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:

Terminal window
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:

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

publicai/apertus-v1.5-8b and publicai/apertus-v1.5-70b support the OpenAI-compatible tools schema:

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

All three v1.5 models read images. Images can only be supplied as base64 data URLs:

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

All three models produce JSON output with response_format:

Terminal window
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
}'

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.

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.