# gemma-4-31b, provider by provider - inferencecanary

All cells probed live; latest probe 2026-08-29.
HTML version: [https://inferencecanary.com/gemma-4-31b](https://inferencecanary.com/gemma-4-31b)

One model, many hosted endpoints. The capabilities below are defined by the
model's own chat template - the text program, shipped with the model, that turns a conversation
into the exact input the model reads. Every provider is graded on whether it delivers them.

## The grade sheet

| Provider | Dialect | Inference | Billing | Caching | 20K-token agentic turn - speed | 20K-token agentic turn - cost |
|---|---|---|---|---|---|---|
| [Lightning](https://inferencecanary.com/lightning/gemma-4-31b.md) | OpenAI chat/completions | A− | OK | Yes | 1.2s | 0.29¢ |
| [SambaNova](https://inferencecanary.com/sambanova/gemma-4-31b.md) | OpenAI chat/completions | A− | OK | No | 4.9s | 0.79¢ |
| [Google (native)](https://inferencecanary.com/google/gemma-4-31b.md) (reference) | generateContent - Google's own protocol | B | OK | Fail | 47s | FAIL (no paid tier) |
| [Parasail](https://inferencecanary.com/parasail/gemma-4-31b.md) | OpenAI chat/completions | B | OK | Sometimes | 17.4-25.1s | 0.13-0.31¢ |
| [Cerebras](https://inferencecanary.com/cerebras/gemma-4-31b.md) | OpenAI chat/completions | B | OK | Yes | 0.7s | 2.0¢ |
| [Together AI](https://inferencecanary.com/togetherai/gemma-4-31b.md) | OpenAI chat/completions | B | OK | Sometimes | 3.4-6.6s | 0.80¢ |
| [Novita](https://inferencecanary.com/novita/gemma-4-31b.md) | OpenAI chat/completions | B | OK | No | ~30s | 0.29¢ |
| [DeepInfra](https://inferencecanary.com/deepinfra/gemma-4-31b.md) | OpenAI chat/completions | C | OK | Sometimes | 24.8-29.7s | 0.27¢ |
| [AWS Bedrock (Chat Completions)](https://inferencecanary.com/aws/gemma-4-31b.md) | OpenAI chat/completions on Bedrock Mantle | D | OK | No | 3.3s | 0.29¢ |
| [AWS Bedrock (Responses)](https://inferencecanary.com/aws-responses/gemma-4-31b.md) | OpenAI Responses on Bedrock Mantle | D− | OK | No | - | 0.29¢ |
| [Google (OpenAI-compat)](https://inferencecanary.com/google-openai/gemma-4-31b.md) | OpenAI chat/completions shim over generateContent | F | OK | Fail | 48s | FAIL (no paid tier) |


## What the model can do - and who delivers it

- **Think in a separate channel.** The template defines a reasoning phase ahead of the answer,
  surfaced by every dialect as a structured reasoning field - except one: Google's own
  OpenAI-compat shim has no reasoning channel at all, leaking thought text into the answer
  field ([finding](https://inferencecanary.com/findings.md#google-openai-no-reasoning-channel)).
- **Keep its reasoning across tool calls.** The template renders the model's prior thinking
  back to it on later turns. Several providers delete it before the model can read it
  ([full writeup](https://inferencecanary.com/replayed-reasoning-dropped.md)).
- **Read images returned by tools.** The reference protocol delivers them and several
  OpenAI-compat providers prove the standard shape works - yet several providers
  reject or silently blind them, closing off agentic multimodal
  ([finding](https://inferencecanary.com/findings.md#tool-result-images)).
- **Call tools - several at once.** Every provider but the Bedrock APIs emits parallel
  calls; Bedrock never does ([finding](https://inferencecanary.com/findings.md#bedrock-parallel-tool-call)).
  Constraining the choice with `tool_choice` is honored on most providers and
  validated-but-unenforced on the rest.
- **Return byte-exact tool arguments.** Every other provider agrees with the reference; both Bedrock
  APIs apply an extra unescape pass, corrupting any argument whose bytes matter
  ([finding](https://inferencecanary.com/findings.md#bedrock-argument-corruption)).

## Every graded endpoint

- **A−** [Lightning](https://inferencecanary.com/lightning/gemma-4-31b.md) - OpenAI chat/completions
- **A−** [SambaNova](https://inferencecanary.com/sambanova/gemma-4-31b.md) - OpenAI chat/completions
- **B** [Google (native)](https://inferencecanary.com/google/gemma-4-31b.md) (reference) - generateContent - Google's own protocol
- **B** [Parasail](https://inferencecanary.com/parasail/gemma-4-31b.md) - OpenAI chat/completions
- **B** [Cerebras](https://inferencecanary.com/cerebras/gemma-4-31b.md) - OpenAI chat/completions
- **B** [Together AI](https://inferencecanary.com/togetherai/gemma-4-31b.md) - OpenAI chat/completions
- **B** [Novita](https://inferencecanary.com/novita/gemma-4-31b.md) - OpenAI chat/completions
- **C** [DeepInfra](https://inferencecanary.com/deepinfra/gemma-4-31b.md) - OpenAI chat/completions
- **D** [AWS Bedrock (Chat Completions)](https://inferencecanary.com/aws/gemma-4-31b.md) - OpenAI chat/completions on Bedrock Mantle
- **D−** [AWS Bedrock (Responses)](https://inferencecanary.com/aws-responses/gemma-4-31b.md) - OpenAI Responses on Bedrock Mantle
- **F** [Google (OpenAI-compat)](https://inferencecanary.com/google-openai/gemma-4-31b.md) - OpenAI chat/completions shim over generateContent

Vendor roll-ups: [Lightning AI](https://inferencecanary.com/lightning.md) · [SambaNova](https://inferencecanary.com/sambanova.md) · [Google](https://inferencecanary.com/google.md) · [Parasail](https://inferencecanary.com/parasail.md) · [Cerebras](https://inferencecanary.com/cerebras.md) · [Together AI](https://inferencecanary.com/togetherai.md) · [Novita AI](https://inferencecanary.com/novita.md) · [DeepInfra](https://inferencecanary.com/deepinfra.md) · [AWS](https://inferencecanary.com/aws.md)
