LLMTR Gemma 4 (Turkey)
Gemma 4 is a first-party model we host on our own hardware in Turkey. It is called through /v1/chat/completions with the canonical model id llmtr/gemma-4. Requests are never forwarded to a third-party provider, which makes it a fit for internal assistants, document analysis and tool-using agent flows with data-residency requirements.
| Property | Value |
|---|---|
| Model id | llmtr/gemma-4 |
| Underlying model | Gemma 4 26B-A4B-IT |
| Context window | 131,072 tokens (128K) |
| Price (input / output / cache read) | $2.00 / $5.00 / $0.50 per 1M tokens |
| Image input | Yes (base64 data URLs only) |
| Tool calling | Yes |
| Prompt cache | Yes |
| Reasoning | Yes, optional — off by default |
| Audio / video input | No |
| Image generation | No |
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "llmtr/gemma-4", "messages": [ { "role": "user", "content": "Summarise this contract clause in plain English." } ], "max_tokens": 1024 }'Reasoning is optional
Section titled “Reasoning is optional”By default the model answers without thinking, so no reasoning tokens are spent. For tasks that need step-by-step reasoning you can turn it on in either of two ways:
{ "model": "llmtr/gemma-4:think", "messages": [{ "role": "user", "content": "Solve this logic puzzle." }] }{ "model": "llmtr/gemma-4", "reasoning": true, "messages": [{ "role": "user", "content": "Solve this logic puzzle." }] }Use the :fast selector or reasoning: false to turn it off. When reasoning is on, the trace is returned in message.reasoning_content, is spent from your max_tokens budget and is billed as output. With a very small max_tokens the budget can be consumed by reasoning alone and content may come back empty.
Image input
Section titled “Image input”The model reads images, but accepts them only as base64 data URLs. Sending a remote https:// address returns a 400 unsupported_input.
{ "model": "llmtr/gemma-4", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What is in this image?" }, { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } } ] } ], "max_tokens": 1024}Image tokens are billed as ordinary input tokens; there is no separate image rate.
Tool calling
Section titled “Tool calling”The model supports the standard OpenAI tools schema and returns real tool_calls:
{ "choices": [ { "message": { "role": "assistant", "content": "", "tool_calls": [ { "id": "call_1", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\":\"Istanbul\"}" } } ] }, "finish_reason": "tool_calls" } ]}Prompt cache
Section titled “Prompt cache”Repeated prompt prefixes are served from cache. Cached tokens are reported in prompt_tokens_details.cached_tokens and billed at the cache read rate instead of input:
"usage": { "prompt_tokens": 1603, "completion_tokens": 2, "prompt_tokens_details": { "cached_tokens": 1579 }}Here 1,579 tokens are charged at $0.50/1M and the remaining 24 at $2.00/1M.
Speed and long prompts
Section titled “Speed and long prompts”Generation runs at roughly 30-45 tokens per second, and the 128K context window is usable in practice for long documents. On the client side:
- For long outputs use
stream: trueand keep your client read timeout at 120 seconds or more. The 60-second default in most HTTP clients is not enough for long answers. - Resend the same prefix (system instructions, document, conversation history): the prefix is cached, responses get noticeably faster, and cached tokens are billed at the cheaper rate.
- Response times can grow during busy periods, so do not keep read timeouts tight.
See Timeouts and slow models for details.