Gemini 3.7 Flash (openai)
This page is generated from the upstream official OpenAPI documentation. Endpoints, parameters and examples match the official docs; brand and API domain are replaced with ModelFold.
Endpoint
POST /gemini-3-7-flash-openai/v1/chat/completions
Full URL: https://ai.modelfold.online/gemini-3-7-flash-openai/v1/chat/completions
Authentication: every request must include the
Authorization: Bearer <API_KEY>header.
WARNING
⚠️ Deprecated — auto-redirected
Gemini 3.7 Flash has been deprecated by Google. Requests to this endpoint are now served by Gemini 3.8 Flash and billed at the same rate as Gemini 3.8 Flash. Please update your integration to Gemini 3.8 Flash.
WARNING
⚠️ Chat only
This model currently supports chat requests only and has not yet been adapted for agent use. Connecting it to an agent may cause request errors or unexpected results.
Streaming Support
When stream: true is set in the request, the API returns responses as server-sent events (SSE) with Content-Type: text/event-stream. This allows for progressive response delivery, where message deltas are sent incrementally as they are generated. Each event contains partial message content, enabling real-time display of responses in your application.
Streaming Response Format:
Content-Type:
text/event-streamEach event line starts with
data:followed by JSONEvents contain incremental message deltas
Final event indicates completion with
finish_reasonThe stream ends with a chunk carrying usage and credits_consumed, followed by data: [DONE].
- Multimodal — Text, image, video, audio and PDF input
- Real-time Search — Google Search grounding enabled
- Streaming — Server-sent events support
- Flexible Roles — Multiple message roles supported
<p style="color: #444; margin-bottom: 15px; line-height: 1.6; font-size: 14px;"> To simplify integration, <b>all media types</b> (Images, Videos, Audio, or Documents) in the messages array share the <b>exact same JSON structure</b>: </p>
<ul style="color: #555; line-height: 1.8; margin-bottom: 15px; font-size: 14px;"> <li>The type field is <b>fixed</b> as "image_url"</li> <li>The image_url key name <b>remains unchanged</b> for all file types</li> <li>Only the url value points to your specific media file</li> </ul>
{ "type": "image_url", "image_url": { "url": "https://..." } }
Tools Parameter
The tools parameter is an optional array that allows you to define functions the model can call. The array can contain multiple objects. When using function calling, you can define multiple functions in the array.
Function Calling
Define your own functions with parameters. You can define multiple functions in the tools array:
[
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
},
{
"type": "function",
"function": {
"name": "get_stock_price",
"description": "Get the current stock price for a given symbol",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "The stock symbol, e.g. AAPL"
}
},
"required": ["symbol"]
}
}
}
]Function Declaration Requirements
When implementing function calling in your prompt, you need to create a tools array containing one or more function declarations. You can define functions using JSON (specifically, a selected subset of OpenAPI schema format).
A single function declaration can include the following parameters:
name(string, required): The unique name of the function (e.g.,get_weather_forecast,send_email). Use descriptive names without spaces or special characters (use underscores or camelCase).description(string, optional but recommended): A clear and detailed description of what the function does and its purpose. This is crucial for the model to understand when to use the function. Be specific and provide examples when necessary (e.g., "Find movie theaters by location, with an option to also find movies currently showing at those theaters.").parameters(object, required): Defines the input parameters expected by the function. Contains:type(string): Specifies the overall data type, must be"object".properties(object): Lists individual parameters, each with:type(string): The parameter's data type, such asstring,integer,boolean,array.description(string): Description of the parameter's purpose and format. Provide examples and constraints (e.g., "City and state, e.g. 'San Francisco, CA' or a postal code like '95616'.").enum(array, optional): If parameter values come from a fixed set, useenumto list allowed values rather than just describing them in the description. This helps improve accuracy (e.g.,"enum": ["daylight", "cool", "warm"]).
required(array): An array of strings listing the parameter names required for the function to run.
Error Responses
Errors are returned with HTTP 200 and a JSON body {"code": <int>, "msg": "<reason>"}. Check code (200 = success) before reading choices/candidates.
Request Parameters
Body (application/json)
| Parameter | Type | Required | Description |
|---|---|---|---|
messages | array<object> | Yes | An array of message objects. Each message has a role and content. Unified Media File Format: In the content array, whether it's images, videos, audio, or other document types, all media files use the same format structure: - The type field is always "image_url"- The image_url field name remains unchanged- The only thing that changes is the url value, which points to the corresponding media file addressFor example: images, videos, audio, PDFs, and other documents all use the same { type: 'image_url', image_url: { url: '...' } } structure. |
messages[].role | string | Yes | Message role - developer: Developer-provided instructions that the model should follow, regardless of user messages. - system: Developer-provided instructions that the model should follow, regardless of user messages. - user: Messages sent by end users, containing prompts or additional context information. - assistant: Messages sent by the model in response to user messages. - tool: Content of tool messages. Allowed values: developer / system / user / assistant / tool。 示例:developer。 |
messages[].content | `array<object | object>` | Yes |
stream | boolean | No | Default is false. Set to true to receive server-sent events. Default:false。 示例:false。 |
tools | array<object> | No | Optional array of tools. Google Search: {"type":"function","function":{"name":"googleSearch"}}; custom functions use the standard OpenAI function format. |
tools[].type | string | Yes | Utility type. Must be 'function'. Allowed values:function。 示例:function。 |
tools[].function | object | Yes | Function declarations for enhanced network access. |
tools[].function.name | string | Yes | Function name. Must be googleSearch. |
tools[].function.description | string | No | Optional but recommended. A clear and specific description of the function's purpose. Helps the model understand when to call this function. |
tools[].function.parameters | object | No | Defines a JSON Schema object for function parameters. Required for custom functions; not used by 'googleSearch'. Follows the JSON Schema specification. |
tools[].function.parameters.type | string | Yes | Must be 'object' for function parameters Allowed values:object。 示例:object。 |
tools[].function.parameters.properties | object | Yes | Map parameter names to objects defined in their JSON Schema. |
tools[].function.parameters.required | array<string> | No | Required parameter name array |
include_thoughts | boolean | No | Whether to include thought output. 示例:true。 |
reasoning_effort | string | No | Thinking level. Allowed values:low / high。 示例:high。 |
Request Example
curl -X POST "https://ai.modelfold.online/gemini-3-7-flash-openai/v1/chat/completions" \
-H "Authorization: Bearer $MODELFOLD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image?"
},
{
"type": "image_url",
"image_url": {
"url": "https://file.aiquickdraw.com/custom-page/akr/section-images/1759055072437dqlsclj2.png"
}
}
]
}
],
"tools": [
{
"type": "function",
"function": {
"name": "googleSearch"
}
}
],
"stream": true,
"include_thoughts": true,
"reasoning_effort": "high"
}'{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image?"
},
{
"type": "image_url",
"image_url": {
"url": "https://file.aiquickdraw.com/custom-page/akr/section-images/1759055072437dqlsclj2.png"
}
}
]
}
],
"tools": [
{
"type": "function",
"function": {
"name": "googleSearch"
}
}
],
"stream": true,
"include_thoughts": true,
"reasoning_effort": "high"
}Response
200 — Request successful.
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 否 | Unique identifier for the chat completion 示例:chatcmpl-example-123。 |
object | string | 否 | Object type 示例:chat.completion。 |
created | integer | 否 | Unix timestamp of when the completion was created 示例:1677652288。 |
choices | array<object> | 否 | Array of completion choices |
choices[].index | integer | 是 | Index of the choice 示例:0。 |
choices[].message | object | 是 | — |
choices[].message.role | string | 是 | 示例:assistant。 |
choices[].message.content | string | 是 | Message content |
choices[].finish_reason | string | 是 | Reason why the completion finished 示例:stop。 |
usage | object | 否 | — |
usage.prompt_tokens | integer | 是 | Number of tokens in the prompt 示例:10。 |
usage.completion_tokens | integer | 是 | Number of tokens in the completion 示例:50。 |
usage.total_tokens | integer | 是 | Total number of tokens 示例:60。 |
credits_consumed | number | 否 | Credits consumed by this request 示例:0.01。 |
{
"id": "chatcmpl-c90c370251f24fd4b2d85a052e38f47a",
"object": "chat.completion",
"created": 1791213382,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "OK"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 6,
"completion_tokens": 1,
"total_tokens": 97,
"completion_tokens_details": {
"reasoning_tokens": 0
}
},
"credits_consumed": 0.01
}500 — Server error.
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
code | integer | 是 | Response status code - 200: Success - Request has been processed successfully - 401: Unauthorized - Authentication credentials are missing or invalid - 402: Insufficient Credits - Account does not have enough credits to perform the operation - 404: Not Found - The requested resource or endpoint does not exist - 408: Timeout - No result has been returned for over 10 minutes. - 422: Validation Error - The request parameters failed validation checks - 429: Rate Limited - Request limit has been exceeded for this resource - 455: Service Unavailable - System is currently undergoing maintenance - 500: Server Error - An unexpected error occurred while processing the request - 501: Generation Failed - Content generation task failed - 505: Feature Disabled - The requested feature is currently disabled |
msg | string | 是 | Response message, error description when failed |
data | object | 是 | — |
{
"code": 500,
"msg": "Server Error - An unexpected error occurred while processing the request",
"data": null
}