
How to Use Gemini 3.8 Flash on EvoLink: Production Guide

Quick Start
https://direct.evolink.ai/v1/chat/completions, and set model to gemini-3.8-flash.curl https://direct.evolink.ai/v1/chat/completions \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.8-flash",
"messages": [
{"role": "user", "content": "Return three rollout risks for an AI API migration."}
],
"max_tokens": 500
}'gemini-3.8-flash. The hyphenated form gemini-3-8-flash is the model-page URL, not the API model value.gemini-3.8-flash in the model enum of both endpoints. This guide still does not treat a documentation listing or page launch as proof of a successful billable call in every account or region.What You Need
- An EvoLink account and API key stored in an environment variable, never committed to source control.
- A client capable of HTTPS JSON requests, or an OpenAI-compatible SDK with a custom
base_url. - A small representative evaluation set and measurable acceptance rules.
- Logging for model ID, status, latency, token usage, retries, and application-level acceptance.
- A fallback model such as Gemini 3.7 Flash during rollout.
Gemini 3.8 Flash accepts text, image, video, audio, and PDF input and returns text. Google documents a 1,048,576-token input context and up to 65,536 output tokens. Treat those limits as capacity, not a reason to fill every request.
Choose the API Surface
EvoLink exposes two useful request styles for Gemini workloads:
| Surface | Endpoint | Best fit |
|---|---|---|
| OpenAI-compatible Chat Completions | https://direct.evolink.ai/v1/chat/completions | Existing OpenAI clients, unified multi-model routing, text and agent applications |
Gemini-native generateContent | https://direct.evolink.ai/v1beta/models/gemini-3.8-flash:generateContent | Gemini-shaped content payloads and native request semantics |
messages with Gemini-native contents in the same payload.OpenAI-Compatible Python Example
Install the OpenAI Python package, then point it at EvoLink:
pip install openaiimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["EVOLINK_API_KEY"],
base_url="https://direct.evolink.ai/v1",
)
response = client.chat.completions.create(
model="gemini-3.8-flash",
messages=[
{
"role": "system",
"content": "Answer with concise, testable recommendations.",
},
{
"role": "user",
"content": "Review this deployment plan and identify missing rollback gates.",
},
],
max_tokens=800,
)
print(response.choices[0].message.content)Keep the first request simple. Confirm authentication, route access, response parsing, and usage fields before adding tools, long context, or streaming.
Gemini-Native Request Example
contents and generationConfig objects:curl "https://direct.evolink.ai/v1beta/models/gemini-3.8-flash:generateContent" \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Create a five-step canary checklist for this API release."}]
}],
"generationConfig": {
"maxOutputTokens": 800,
"thinkingConfig": {"thinkingLevel": "medium"}
}
}'https://direct.evolink.ai as the default BaseURL for text models and long-lived connections. It describes https://api.evolink.ai as the primary multimodal-services endpoint and a fallback for text models, so the default native example above uses direct.evolink.ai.Thinking Levels and Migration Rules
low, medium, and high thinking levels, with medium as the default. Google says minimal is unsupported. EvoLink’s native API reference states that an unsupported minimal is automatically downgraded to low, so the request does not fail, but the effective level is then low rather than what you asked for.thinkingConfig.thinkingLevel. OpenAI-compatible clients may expose a mapped reasoning field only when the gateway documents it; do not invent or forward unsupported fields. Start with the default, then change one control at a time.When migrating an older Gemini client, audit these items:
| Old behavior | Gemini 3.8 action | Why |
|---|---|---|
Numeric thinkingBudget from Gemini 2.5 | Use generationConfig.thinkingConfig.thinkingLevel for Gemini 3.x | EvoLink documents the two controls as mutually exclusive |
minimal thinking | Change to tested low | minimal is unsupported; EvoLink downgrades it to low automatically, so set low explicitly for predictable control |
Custom temperature / topP | Do not rely on the values changing output; keep them in range if sent | EvoLink says custom values do not affect Gemini 3.x output and out-of-range values return 400 |
Custom topK | Remove unless retained for client compatibility | EvoLink says topK is ignored |
Final message with role model | End the request with a non-model turn | EvoLink says Gemini 3.5+ returns an error otherwise |
| Function response | Echo the matching function id and name | EvoLink requires both for Gemini 3.x |
A request returning HTTP 200 is not enough. Revalidate structured output, tool arguments, multi-turn state, and refusal behavior after the migration.
Multimodal Input Without Context Waste
The model can understand text, images, video, audio, and PDFs, but a 1M-token window does not make every large payload useful. Build context deliberately:
- Include the document sections or media segments needed for the decision.
- Keep stable system instructions, repository guidance, and tool schemas in a consistent prefix so caching has a chance to help.
- Retrieve relevant evidence before attaching an entire archive.
- Set an output budget appropriate for the task; the 65,536-token maximum is a ceiling.
- Record input and cache-read tokens separately so “large context” does not hide avoidable spend.
For repeated long documents, compare cache-hit behavior on a stable prompt prefix. Google’s introductory cache-read rate is $0.075 per million tokens through December 31, 2026, but EvoLink billing should be verified in your live account.
Production Rollout in Five Stages

1. Verify access and pricing
Create a restricted test key, confirm the model appears in the account’s available routes, send a small request, and check the resulting usage or billing record. A public model page confirms intended availability, not your account-specific call path.
2. Validate the request contract
Test synchronous requests first. Then test streaming, structured output, tools, long context, and multimodal input as separate cases. This isolates protocol failures from model-quality failures.
3. Replay a fixed evaluation set
Compare 3.8 Flash with the current baseline at the same thinking level. Measure first-pass success, accepted deliverables, output and thinking tokens, cache hits, valid tool calls, latency, human correction, and fallback rate.
4. Canary observable traffic
Start with a small percentage or a low-risk workload class. Attach the chosen model ID and evaluation cohort to every trace. Avoid auto-promoting based only on aggregate HTTP success.
5. Promote or roll back by written gates
Promote only if the model clears predefined quality, cost, and latency thresholds. Roll back by restoring the prior model value when critical errors, accepted-task cost, or latency crosses its limit.
Error Handling That Belongs in Production
Use bounded retries only for transient failures such as rate limits, upstream unavailability, or transport timeouts. Do not retry malformed payloads or unsupported parameters unchanged.
Recommended behavior:
- Retry transient failures with exponential backoff and jitter.
- Set a maximum attempt count and an end-to-end deadline.
- Reuse an idempotency strategy where the application can create side effects.
- Log request IDs and sanitized error bodies; never log API keys or sensitive prompts.
- Route to a tested fallback when the deadline or error threshold is reached.
- Treat repeated 400-class errors as a contract problem to fix, not capacity to outwait.
Observability Checklist
For every request, capture:
- application feature and evaluation cohort;
- requested and served model IDs;
- protocol and endpoint family;
- thinking level and output limit;
- input, output, thinking, and cache-read tokens when returned;
- latency, status, error class, and retry count;
- tool-call validity or schema-validation result;
- application acceptance, reviewer correction, and fallback outcome.
This data lets a unified API gateway support model selection instead of becoming an opaque proxy. You can keep multiple Gemini routes behind one client while still knowing which route creates value.
Common Setup Mistakes
- Sending
gemini-3-8-flashinstead ofgemini-3.8-flashas the model ID. - Using Gemini-native
contentson the OpenAI-compatible endpoint. - Relying on
minimalbeing silently downgraded tolow, combiningthinkingBudgetwiththinkingLevel, relying on ignored sampling controls, or ending the conversation with rolemodel. - Filling the context window without retrieval or relevance filtering.
- Assuming Google’s public rate is identical to the live EvoLink account rate.
- Declaring success after one HTTP 200 without checking response shape and billing.
- Switching the production default without a measured fallback path.
FAQ
What is the Gemini 3.8 Flash model ID?
gemini-3.8-flash. The dotted version is the API identifier; gemini-3-8-flash is the EvoLink page slug.Which EvoLink endpoint should I use?
https://direct.evolink.ai/v1/chat/completions for OpenAI-compatible Chat Completions. For Gemini-native payloads, use https://direct.evolink.ai/v1beta/models/gemini-3.8-flash:generateContent. Both endpoints list gemini-3.8-flash in their documented model enum; still verify that it is enabled for the target account.Can I use the OpenAI Python SDK?
base_url to https://direct.evolink.ai/v1, pass your EvoLink key, and select gemini-3.8-flash.What thinking level should I start with?
medium, then test low or high against quality, token, and latency gates. Do not send minimal; EvoLink would downgrade it to low, which hides the actual level from your logs.Does Gemini 3.8 Flash support images, video, audio, and PDFs?
Yes, as input modalities. It returns text and does not provide image, audio, or live-stream generation.
Is 3.8 Flash cheaper than 3.7 Flash?
Not by rate card during the Google introductory period: their input, output, and cache-read rates match. Google says 3.8 uses more tokens, so compare the complete cost per accepted task.
How do I confirm that my integration is production-ready?
Verify a successful call and its billing record, test each protocol feature you use, replay a fixed evaluation set, canary real traffic, and retain an explicit rollback.
Where can I compare all Gemini routes?
Sources and Verification Notes
- Google: Gemini 3.8 Flash launch
- Google AI for Developers: Gemini 3.8 Flash model
- Google AI for Developers: Gemini API pricing
- Google Cloud: Gemini 3.8 Flash guidance
- EvoLink: Gemini native API quickstart
- EvoLink: Gemini native API reference
- EvoLink: Gemini OpenAI-compatible quickstart
gemini-3.8-flash for both endpoints; endpoint access and billing must still be confirmed with a successful call in the target account before full production promotion.

