Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
rreAPI Docs

gemini-3-6-flash

Gemini 3.6 Flash through reAPI's OpenAI-compatible /api/v1/chat/completions endpoint. The current endpoint exposes pure-text messages, streaming, and up to 8,192 output tokens.

Google's Gemini 3.6 Flash is a multimodal model with a 1,048,576-token input window and a documented 65,536-token model output ceiling. The current reAPI endpoint exposes a deliberately smaller, pure-text Chat Completions surface: system, user, and assistant messages with string content, optional streaming, and an 8,192-token billing-safety output cap. Google's model supports image, video, audio, and PDF input plus function calling and other tools, but those capabilities are not currently exposed by this reAPI endpoint. Output is text only; this is not an image-generation model. The wire model id is gemini-3.6-flash. Current rates live on the model page.

Quick example

curl https://reapi.ai/api/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.6-flash",
    "messages": [
      { "role": "user", "content": "Summarise the benefits of API rate limiting in five bullets." }
    ],
    "stream": true,
    "max_tokens": 8192
  }'
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://reapi.ai/api/v1",
)

stream = client.chat.completions.create(
    model="gemini-3.6-flash",
    messages=[{"role": "user", "content": "Summarise the benefits of API rate limiting in five bullets."}],
    max_tokens=8192,
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="")
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "YOUR_API_KEY",
  baseURL: "https://reapi.ai/api/v1",
});

const stream = await client.chat.completions.create({
  model: "gemini-3.6-flash",
  messages: [
    { role: "user", content: "Summarise the benefits of API rate limiting in five bullets." },
  ],
  max_tokens: 8192,
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    body, _ := json.Marshal(map[string]any{
        "model": "gemini-3.6-flash",
        "messages": []map[string]string{
            {"role": "user", "content": "Summarise the benefits of API rate limiting in five bullets."},
        },
        "max_tokens": 8192,
    })
    req, _ := http.NewRequest("POST",
        "https://reapi.ai/api/v1/chat/completions", bytes.NewReader(body))
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    out, _ := io.ReadAll(resp.Body)
    fmt.Println(string(out))
}

Authentication

Use an API key from your current reAPI account and send it as a bearer token:

Authorization: Bearer YOUR_API_KEY

Create and manage the key from your reAPI workspace. The request is billed to the reAPI account that owns that key.


Endpoint

POST /api/v1/chat/completions

Public URL https://reapi.ai/api/v1/chat/completions. For OpenAI SDKs, set the base URL to https://reapi.ai/api/v1. The current wire format is compatible with the exposed pure-text subset of Chat Completions, so the same SDKs (openai-python, openai-node, openai-go, …) work once you set the base URL, your reAPI key, and the model string.


Parameter support on this model

The request body is forwarded as written, so any Chat Completions field reaches the model. These are the ones this model answers differently — each verified by calling it on 2026-08-25:

FieldResult
temperature, top_p, seed, n, tools, response_formatApplied
reasoning_effortAccepts none, minimal, low, medium, high, xhigh, max
frequency_penalty, presence_penalty, stopApplied
max_tokens / max_completion_tokensUp to 8,192

Nothing in the Chat Completions format is rejected by this model; every field tested was accepted.

Request body

model — string, required

Must be gemini-3.6-flash exactly. The dotted form is the wire id; the /models/gemini-3-6-flash landing page uses a hyphenated slug for the URL.

messages — array, required

Conversation history in the standard Chat Completions shape. The gateway requires only that the array is present and non-empty; the entries themselves are forwarded as written, so message fields, roles, and content-part arrays follow the upstream model's contract rather than a separate gateway rule.

max_tokens / max_completion_tokens — integer

Upper bound on output tokens for this response, thinking tokens included. The current reAPI billing-safety cap is 8,192, even though Google's model ceiling is higher. A value above 8,192 is rejected with a 400 — the gateway never silently rewrites a request into a different cost than the one you asked for. max_tokens is deprecated in the OpenAI spec in favour of max_completion_tokens; both are accepted here, and when both are present the smaller one wins.

stream — boolean, default false

When true, tokens arrive as server-sent events terminated by data: [DONE]. Recommended for anything a person watches.

Every other field

The request body is forwarded as written. Send any field the Chat Completions format defines — temperature, top_p, frequency_penalty, presence_penalty, seed, stop, reasoning_effort, logit_bias, logprobs, response_format, tools, tool_choice, n, and so on — with the types and ranges that format defines. The gateway does not keep a field whitelist, so a parameter added to the format later works here without waiting for a gateway release.

Two consequences worth stating plainly:

  • omit a field and the model's own default applies — nothing is substituted for you;
  • send a value the model does not accept and you get the model's error, not a reworded gateway one.

Verified working through this endpoint: function calling (tools returns tool_calls with finish_reason: "tool_calls") and JSON mode (response_format: { "type": "json_object" }).

stream_options

Accepted but always overridden: the endpoint sends stream_options: { include_usage: true } upstream, because the usage frame is what the request is billed from. A request that suppressed it could not be billed at all.


Official multimodal capability vs current endpoint

Google documents the following model-level inputs. The gateway forwards content parts as written, so what reaches the model is what you sent:

ModalityGoogle modelThrough this endpoint
TextSupportedVerified working
ImageSupportedForwarded, not verified
VideoSupportedForwarded, not verified
AudioSupportedForwarded, not verified
PDFSupportedForwarded, not verified

Output is text only. Image generation is not supported by this model; use a dedicated image model when the result itself must be an image.


Thinking

Thinking is a Google model capability. reasoning_effort is forwarded like every other field, and the model may also reason internally without being asked to.

Thinking tokens are billed as output tokens and count toward max_tokens. A reasoning pass therefore competes with the visible answer inside the current 8,192-token cap.


Official tools vs current endpoint

CapabilityGoogle modelThrough this endpoint
Function callingSupportedVerified working (tools)
Structured outputsSupportedVerified working (response_format)
Code executionSupportedForwarded, not verified
File searchSupportedForwarded, not verified
Context cachingSupportedForwarded, not verified
URL contextSupportedForwarded, not verified
Search groundingSupportedForwarded, not verified
Grounding with Google MapsSupportedForwarded, not verified
Computer useSupported (preview)Forwarded, not verified

"Forwarded, not verified" means the request reaches the model untouched — the gateway blocks nothing — but we have not tested that capability end to end, so treat the model's own response as the answer on whether it works.

These rows describe Google's underlying model, not callable features on the current reAPI route. Requests to this endpoint should contain only the documented pure-text chat fields above.


Pricing dimensions

Billing is per token against your current reAPI account, with separate input and output rates. Two things to keep in mind:

  • Thinking tokens bill as output. They are the usual reason a bill exceeds an estimate built from visible response length alone.
  • Output can dominate. For generative workloads, response length and any thinking tokens can materially affect the final charge.

Current rates are on the model page. That live table is the canonical pricing source; this page intentionally does not duplicate a fixed price.

Charges are applied to the reAPI account that owns the API key used for the request.


Response shape

Non-streaming (stream: false)

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1785000000,
  "model": "gemini-3.6-flash",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "..." },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 812,
    "completion_tokens": 240,
    "total_tokens": 1052
  }
}

usage.completion_tokens includes thinking tokens, so it is the number to reconcile a bill against.

Streaming (stream: true)

Server-sent events, each data: line carrying a chat.completion.chunk with the incremental text in choices[0].delta.content, terminated by data: [DONE].


Errors

Failures use reAPI's standard error envelope. See the errors catalog for the full code list. Common cases:

TriggerWhat to do
Missing or invalid bearer tokenUse a valid API key from your reAPI workspace
Unknown model valueSend gemini-3.6-flash exactly, dots included
Non-string message contentSend pure text in each message's content field
Unsupported request fieldRemove fields outside the documented current endpoint surface
Insufficient account balanceTop up the reAPI account that owns the API key
Upstream rate limitRetry with backoff, or route through another model

Tips

  • Stream anything interactive. Time-to-first-token is what users perceive; a non-streamed long answer reads as a hang.
  • Budget for thinking. If responses truncate on hard prompts, use a max_tokens value up to the current 8,192-token cap and ask for a more concise answer when necessary.
  • Send source text directly. The current endpoint does not accept image, audio, video, or PDF content parts.
  • Keep requests to the documented subset. The current route is a pure-text Chat Completions surface rather than the full Google model API.
  • Pin the Stable string. gemini-3.6-flash is Google's Stable channel id; latest-style aliases can be hot-swapped underneath you.

Table of Contents