Text model · Google
Gemini 3.8 Flash API
Gemini 3.8 Flash is Google's fast multimodal Gemini model. On TokenRa it answers through OpenAI Chat Completions and Anthropic Messages. It thinks before answering but does not return the reasoning text.
- Model ID
gemini-3.8-flash- API formats
- Chat Completions, Messages
- Input
- Text, image
- Output
- Text
Capabilities
Capabilities & endpoints
Chat generation through two API formats. Each was called successfully on tokenra.io on 2026-10-23; pick one to switch the code examples.
POSThttps://tokenra.io/v1/chat/completionsTested
OpenAI SDK with
base_url="https://tokenra.io/v1". Auth: Authorization: Bearer. Recommended.POSThttps://tokenra.io/v1/messagesTested
Anthropic SDK or Claude Code with base URL
https://tokenra.io. Auth: x-api-key (or Bearer) plus anthropic-version.Format not available
- OpenAI Responses (
/v1/responses) is not available for this model: requests fail with HTTP 400contents is required.
Request
Request parameters
Fields for POST /v1/chat/completions. Everything listed was accepted by the model in testing.
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | The model ID to call, for example gemini-3.8-flash. |
messages | array | Yes | Conversation messages in order (system, user, assistant, tool). For multi-turn chat, send the earlier turns back in this array. content can be a string or an array of text and image_url parts. |
stream | boolean | No | Return the answer as server-sent events. Default false. |
stream_options | object | No | With {"include_usage": true}, the last chunk carries usage and an empty choices array. |
max_tokens | integer | No | Upper limit for generated tokens. Reasoning tokens count toward it: if it is too low the model can spend it all on reasoning and return no text (finish_reason: "length"). |
max_completion_tokens | integer | No | Upper limit for all generated tokens, reasoning included. If it is too low the answer can be empty (finish_reason: "length"). |
temperature | number | No | Sampling temperature. |
top_p | number | No | Nucleus sampling threshold. Usually tune either this or temperature. |
presence_penalty | number | No | Penalises tokens that already appeared, nudging the model toward new topics. |
frequency_penalty | number | No | Penalises frequent tokens to reduce repetition. |
reasoning_effort | string | No | Reasoning depth such as low, medium or high. The model accepted it in testing; how much it changes the reasoning varies by model. |
user | string | No | Your own end-user identifier for auditing or abuse handling. It is not part of the conversation. |
Not supported by this model
- Neither
json_objectnorjson_schemais enforced: plain text, or JSON inside a Markdown code block, came back. Ask for JSON in the prompt and strip Markdown code fences before parsing. - Function calling is not available: requests with
toolsreturn HTTP 400 from the upstream.
Other formats
| Format | Required fields | Answer location |
|---|---|---|
| Anthropic Messages | model, max_tokens, messages | content[] blocks of type text |
Response
Response format
{
"id": "chatcmpl-1792766122484",
"object": "chat.completion",
"created": 1792766122,
"model": "gemini-3.8-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "An API gateway is the single entry point that receives client requests and routes them to the right backend service. It also handles shared concerns such as authentication, rate limiting and logging."
},
"finish_reason": "STOP"
}
],
"usage": {
"prompt_tokens": 26,
"completion_tokens": 58,
"total_tokens": 84,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
}| Field | Type | Description |
|---|---|---|
id | string | Completion ID. Include it when you contact support. |
object | string | chat.completion, or chat.completion.chunk when streaming. |
created | integer | Unix timestamp in seconds. |
model | string | The model that produced the answer. |
choices[].message.content | string | The answer text. |
choices[].finish_reason | string | stop, length or tool_calls. |
usage | object | prompt_tokens, completion_tokens, total_tokens, plus prompt_tokens_details.cached_tokens and completion_tokens_details.reasoning_tokens. |
With stream: true the answer arrives as data: lines of chat.completion.chunk objects and ends with data: [DONE].
Errors
Errors & limits
Common errors
| HTTP | error.code | Meaning | What to do |
|---|---|---|---|
401 | — | Missing, wrong or deleted API key. The message is Invalid token. | Check the Authorization: Bearer header and the key in the console. |
400 | — | The body is not valid JSON. | Fix the JSON and send Content-Type: application/json. |
500 | invalid_request | A required field is missing, for example messages. | Add the field named in the message. Retrying will not help. |
403 | insufficient_user_quota | Your balance or plan quota is used up. | Top up in the console, then retry. |
503 | model_not_found | Unknown model ID, or no channel serves it for your group. | Check the ID in the model list or with GET /v1/models. |
429 | — | Too many requests. | Back off exponentially and retry. |
5xx | — | The upstream provider failed or timed out. | Retry a few times; keep the request id if it persists. |
Limits and notes
- Image input was tested with an
image_urlpart that points to a public HTTPS image. - The model reasons before answering but returns no reasoning text.
usage.completion_tokens_details.reasoning_tokensshows how many reasoning tokens were used; they count towardmax_tokensand are billed as output. - Some requests in testing failed with HTTP 504 (
bad_response_status_code) and a few took about two minutes. Retry 504 responses and use a client timeout of at least 180 seconds. finish_reasoncomes back in upper case (STOP) instead ofstop.