curl 'https://newrouters.com/v1beta/models/gemini-3.1-pro-preview:generateContent' \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $MODEL_API_KEY" \
--data '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Explain how an HTTP request works in three concise steps."
}
]
}
],
"generationConfig": {
"maxOutputTokens": 1024
}
}'
const apiKey = process.env.MODEL_API_KEY;
const response = await fetch("https://newrouters.com/v1beta/models/gemini-3.1-pro-preview:generateContent", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": apiKey
},
body: JSON.stringify({
"contents": [
{
"role": "user",
"parts": [
{
"text": "Explain how an HTTP request works in three concise steps."
}
]
}
],
"generationConfig": {
"maxOutputTokens": 1024
}
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.text());
import os
import json
import requests
response = requests.post(
"https://newrouters.com/v1beta/models/gemini-3.1-pro-preview:generateContent",
headers={
"Content-Type": "application/json",
"x-goog-api-key": os.environ["MODEL_API_KEY"]
},
json=json.loads("{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Explain how an HTTP request works in three concise steps.\"}]}],\"generationConfig\":{\"maxOutputTokens\":1024}}"),
timeout=300,
)
response.raise_for_status()
print(response.text)
curl 'https://newrouters.com/v1beta/models/gemini-3.1-pro-preview:streamGenerateContent?alt=sse' \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $MODEL_API_KEY" \
--data '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Explain how an HTTP request works in three concise steps."
}
]
}
],
"generationConfig": {
"maxOutputTokens": 1024
}
}'
const apiKey = process.env.MODEL_API_KEY;
const response = await fetch("https://newrouters.com/v1beta/models/gemini-3.1-pro-preview:streamGenerateContent?alt=sse", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": apiKey
},
body: JSON.stringify({
"contents": [
{
"role": "user",
"parts": [
{
"text": "Explain how an HTTP request works in three concise steps."
}
]
}
],
"generationConfig": {
"maxOutputTokens": 1024
}
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.text());
import os
import json
import requests
response = requests.post(
"https://newrouters.com/v1beta/models/gemini-3.1-pro-preview:streamGenerateContent?alt=sse",
headers={
"Content-Type": "application/json",
"x-goog-api-key": os.environ["MODEL_API_KEY"]
},
json=json.loads("{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Explain how an HTTP request works in three concise steps.\"}]}],\"generationConfig\":{\"maxOutputTokens\":1024}}"),
timeout=300,
)
response.raise_for_status()
print(response.text)
curl 'https://newrouters.com/v1/interactions' \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $MODEL_API_KEY" \
--data '{
"model": "gemini-3.1-pro-preview",
"input": "Explain how an HTTP request works in three concise steps.",
"stream": false
}'
const apiKey = process.env.MODEL_API_KEY;
const response = await fetch("https://newrouters.com/v1/interactions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": apiKey
},
body: JSON.stringify({
"model": "gemini-3.1-pro-preview",
"input": "Explain how an HTTP request works in three concise steps.",
"stream": false
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.text());
import os
import json
import requests
response = requests.post(
"https://newrouters.com/v1/interactions",
headers={
"Content-Type": "application/json",
"x-goog-api-key": os.environ["MODEL_API_KEY"]
},
json=json.loads("{\"model\":\"gemini-3.1-pro-preview\",\"input\":\"Explain how an HTTP request works in three concise steps.\",\"stream\":false}"),
timeout=300,
)
response.raise_for_status()
print(response.text)
curl 'https://newrouters.com/v1beta/interactions' \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $MODEL_API_KEY" \
--data '{
"model": "gemini-3.1-pro-preview",
"input": "Explain how an HTTP request works in three concise steps.",
"stream": false
}'
const apiKey = process.env.MODEL_API_KEY;
const response = await fetch("https://newrouters.com/v1beta/interactions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-goog-api-key": apiKey
},
body: JSON.stringify({
"model": "gemini-3.1-pro-preview",
"input": "Explain how an HTTP request works in three concise steps.",
"stream": false
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.text());
import os
import json
import requests
response = requests.post(
"https://newrouters.com/v1beta/interactions",
headers={
"Content-Type": "application/json",
"x-goog-api-key": os.environ["MODEL_API_KEY"]
},
json=json.loads("{\"model\":\"gemini-3.1-pro-preview\",\"input\":\"Explain how an HTTP request works in three concise steps.\",\"stream\":false}"),
timeout=300,
)
response.raise_for_status()
print(response.text)
Set MODEL_API_KEY in your server environment. Requests use this model’s native API and your account pricing.
Review concurrency and recovery in this order system. Identify consistency risks, reproduction conditions and minimal fixes. Design: [paste design]
USER MESSAGE
01
Architecture review
Focus on concurrency and recovery boundaries, reproducible problems and minimal fixes.
EXAMPLE PROMPT
Break this maintenance task into verifiable steps. Specify tools, inputs, stop conditions and recovery. Do not pretend tools were executed. Task: [describe task]
USER MESSAGE
02
Agent workflow planning
Plan tools, stopping conditions and recovery before executing a workflow.
What Is Gemini 3.1 Pro Preview?
Gemini 3.1 Pro Preview focuses on reasoning efficiency, factual consistency, software engineering and reliable multi-step tool workflows.
Choose by the input types, output settings and billing unit your workflow needs. Try the same prompt across models to compare results for your own use case.
Integrate Gemini 3.1 Pro Preview into your app
Keep the native request format and point your application to the platform API. Prepare a key with model access, then review status and charges in your usage records.
Everything you need to know about API access, pricing and model capabilities.
How is Gemini 3.1 Pro Preview billed?
+
Charges depend on the recorded token usage and your account rates. Input, output and supported cache or reasoning categories are listed separately in the pricing table. The calculator uses public USD prices; the final usage receipt determines the charge.
How do I get an API key?
+
Choose “Get API access” to open the integration guide. Sign in to your NewRouters account, prepare a key with access to this model and copy an API example.
Which API endpoints can I use?
+
Supported endpoints: /v1beta/models/{model}:generateContent、/v1beta/models/{model}:streamGenerateContent、/v1/interactions、/v1beta/interactions. Choose an endpoint in the API examples to see its native request format.
Does the model support streaming?
+
The current model route declares streaming support. Use the native endpoint’s streaming option and consume its events. Usage already completed may still be billed if the connection is interrupted.
Can I use tools or structured output?
+
Tools: supported. Structured output: not declared. Request fields follow the selected native endpoint.
Where can I check usage and charges?
+
Keep the request ID and open your account’s LLM usage records to inspect request status, token counts and charges. Prompt and answer content are not a conversation history in this view.