Introduction
OpenAI-compatible chat for Gemini 3.5 Flash-Lite. A 1,048,576-token read window, four reasoning-effort levels that default to minimal, 128 tool schemas and JSON output on one synchronous call, with SSE streaming when you ask for it.
Gemini 3.5 Flash-Lite is Google's cost-focused chat model, published here as a single OpenAI-compatible endpoint. It reads up to 1,048,576 tokens in one request and answers in up to 65,536, and its reasoning effort starts at minimal - the cheapest, quickest level - so classification, translation and plain data shaping run at the bottom setting unless a call asks for more.
Key features & highlights
The lane for work that arrives by the thousand
When a job is ten thousand rows rather than one hard question, the price of a single call decides whether it runs at all. That is what this model is here for: cheap enough that every row can go through a model, fast enough that the queue drains while you watch it.
Four levels, and the cheapest one is the default
reasoning_effort takes minimal, low, medium or high and defaults to minimal. Sending nothing therefore buys the cheapest, quickest answer this model has; raise the level on the individual request that needs more deliberation rather than across the whole integration.
A whole document set in a single request
The read window is 1,048,576 tokens, so a long specification, a full transcript or a month of logs can go over in one call instead of being chopped into windows you then have to stitch back together. Input tokens are still billed as measured, so size the material, not just the call count.
Request parameters
| Parameter | Required | Description |
|---|---|---|
messages | Yes | Ordered turns, oldest first. Content is a string, or an array of text, |
max_tokens | No | Caps the reply at 65,536; the default is 4,096. |
reasoning_effort | No | minimal, low, medium or high; minimal is the default, so sending nothing gives you the cheapest and quickest level. |
stop | No | Up to 4 sequences, as a string or an array. The reply ends as soon as the model writes one of them, and the matched text itself is left out. at least 1 characters · at least 1 items · at most 4 items |
seed | No | Any integer. |
temperature | No | 0 to 2, default 1. |
top_p | No | 0.01 to 1. Adjust this or temperature, never both in the same comparison. |
tools | No | Up to 128 function definitions per request. at most 128 items |
tool_choice | No | auto, none, required, or an object naming one function. |
response_format | No | Ask for a JSON object and name every key in the system message - this is how free text comes back in the columns you already have. |
Pricing
Input $0.30 / Output $2.50 per 1 million tokens
Use cases
Bulk classification and labelling
Routing tickets, tagging chat logs, sorting inbound mail into owners. One fixed system message, one row per call, effort left at minimal, and the whole queue goes through a model instead of through a regular expression.
Translation passes
Product strings, support replies, catalogue copy. The instruction and the glossary sit in the system message, the source text goes in the user message, and the size of the run stops being the reason not to do it.
Free text into fixed fields
Ask for a JSON object with response_format, name every key in the system message, and let the model fold an unstructured note into the columns your database already has. Parsing and validation stay on your side.
The quiet steps of an agent loop
Most steps an agent takes are not the interesting one: re-reading a page, deciding whether a result is relevant, summarising what just happened. Send those here and keep the expensive model for the step that actually decides something.
Prompt guide & pro tips
Instruction in system, material in user
Put the task description, the output shape and the vocabulary in one system message, and send only the row, the passage or the document in the user message. Holding the system message steady across a batch is what makes the results comparable to each other.
Leave the effort level alone until one call needs more
minimal is the default and it is the setting the bulk of a batch should run on. When a particular item needs more deliberation, raise that one request to low, medium or high - it is a string on the same body, so nothing else in the integration changes.
Limits to plan around
The reply ceiling is 65,536 tokens and a max_tokens above it fails validation outright. Message content is text, images and video; audio parts are rejected. Video is sent as an uploaded file, and the video in one request can total 14 MB. A JSON response_format shapes the reply but your application still parses and validates it. Knowledge inside the model stops at March 2026, so anything later has to arrive in the prompt.
API quick start
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "google/gemini-3.5-flash-lite/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
See the API reference for authentication, the complete schema, polling, and error handling.












