Gemini 3 Pro API
Img2Vid exposes Gemini 3 Pro through the public chat model API as google/gemini-3-pro-preview.
Model identity
| Field | Value |
|---|---|
| Img2Vid model key | google/gemini-3-pro-preview |
| Runtime model id | gemini-3-pro-preview |
| Provider | |
| Public capabilities | Reasoning, image attachments, tool calling |
Pricing
| Unit | Credits |
|---|---|
| Input | 4 credits per 1,000,000 tokens |
| Output | 24 credits per 1,000,000 tokens |
| Cached input | 1 credit per 1,000,000 tokens |
Model options
| Option | Type | Default | Values |
|---|---|---|---|
reasoning_effort |
string | medium |
none, low, medium, high |
Set reasoning: true to enable reasoning. Pass the configured effort through options.reasoning_effort.
OpenAI-compatible example
curl https://img2vid.net/api/v1/chat/completions \
-H "Authorization: Bearer $BUBLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemini-3-pro-preview",
"messages": [
{
"role": "system",
"content": "You are a rigorous reasoning assistant."
},
{
"role": "user",
"content": "Evaluate this architecture proposal and list the main operational risks."
}
],
"reasoning": true,
"options": {
"reasoning_effort": "medium"
},
"max_completion_tokens": 800
}'
Anthropic Messages-compatible example
curl https://img2vid.net/api/v1/messages \
-H "Authorization: Bearer $BUBLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemini-3-pro-preview",
"system": "You are a rigorous reasoning assistant.",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Evaluate this architecture proposal and list the main operational risks."
}
]
}
],
"thinking": true,
"options": {
"reasoning_effort": "medium"
},
"max_tokens": 800
}'
Gemini-compatible example
curl https://img2vid.net/api/v1beta/models/google/gemini-3-pro-preview:generateContent \
-H "Authorization: Bearer $BUBLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"systemInstruction": {
"parts": [
{
"text": "You are a rigorous reasoning assistant."
}
]
},
"contents": [
{
"role": "user",
"parts": [
{
"text": "Evaluate this architecture proposal and list the main operational risks."
}
]
}
],
"reasoning": true,
"options": {
"reasoning_effort": "medium"
},
"generationConfig": {
"maxOutputTokens": 800
}
}'
For Gemini-compatible streaming, use /api/v1beta/models/google/gemini-3-pro-preview:streamGenerateContent.
SDK examples
The examples below use this page's Img2Vid chat model key through the OpenAI-compatible Chat Completions SDK method. They assume you have already initialized the SDK client as shown in the Quickstart and imported the required language SDK types. Anthropic Messages and Gemini-compatible calls use the same model key; Gemini streaming must use the SDK's streamGenerateContent / stream_generate_content method.
JavaScript / TypeScript
const completion = await buble.chat.completions.create({
model: 'google/gemini-3-pro-preview',
messages: [
{ role: 'system', content: 'You are a rigorous reasoning assistant.' },
{
role: 'user',
content:
'Evaluate this architecture proposal and list the main operational risks.',
},
],
reasoning: true,
options: {
reasoning_effort: 'medium',
},
max_completion_tokens: 800,
});
console.log(completion.choices?.[0]?.message?.content);
Python
completion = client.chat.completions.create(
model="google/gemini-3-pro-preview",
messages=[
{"role": "system", "content": "You are a rigorous reasoning assistant."},
{"role": "user", "content": "Evaluate this architecture proposal and list the main operational risks."},
],
reasoning=True,
options={"reasoning_effort": "medium"},
max_completion_tokens=800,
)
print(completion["choices"][0]["message"]["content"])
Go
completion, err := client.Chat.Completions.Create(ctx, buble.ChatRequest{
"model": "google/gemini-3-pro-preview",
"messages": []any{
map[string]any{"role": "system", "content": "You are a rigorous reasoning assistant."},
map[string]any{"role": "user", "content": "Evaluate this architecture proposal and list the main operational risks."},
},
"reasoning": true,
"options": map[string]any{"reasoning_effort": "medium"},
"max_completion_tokens": 800,
})
if err != nil {
return err
}
fmt.Println(completion)
Rust
let completion = client.chat().completions().create(serde_json::json!({
"model": "google/gemini-3-pro-preview",
"messages": [
{ "role": "system", "content": "You are a rigorous reasoning assistant." },
{ "role": "user", "content": "Evaluate this architecture proposal and list the main operational risks." }
],
"reasoning": true,
"options": { "reasoning_effort": "medium" },
"max_completion_tokens": 800
})).await?;
Swift
let completion = try await client.chat.completions.create([
"model": "google/gemini-3-pro-preview",
"messages": [
["role": "system", "content": "You are a rigorous reasoning assistant."],
["role": "user", "content": "Evaluate this architecture proposal and list the main operational risks."]
],
"reasoning": true,
"options": ["reasoning_effort": "medium"],
"max_completion_tokens": 800
])
Dart / Flutter
final completion = await client.chat.completions.create({
'model': 'google/gemini-3-pro-preview',
'messages': [
{'role': 'system', 'content': 'You are a rigorous reasoning assistant.'},
{'role': 'user', 'content': 'Evaluate this architecture proposal and list the main operational risks.'},
],
'reasoning': true,
'options': {'reasoning_effort': 'medium'},
'max_completion_tokens': 800,
});
Elixir
{:ok, completion} =
Buble.Chat.Completions.create(client, %{
model: "google/gemini-3-pro-preview",
messages: [
%{role: "system", content: "You are a rigorous reasoning assistant."},
%{role: "user", content: "Evaluate this architecture proposal and list the main operational risks."}
],
reasoning: true,
options: %{reasoning_effort: "medium"},
max_completion_tokens: 800
})
Java
var completion = client.chat().completions().create(Map.of(
"model", "google/gemini-3-pro-preview",
"messages", List.of(
Map.of("role", "system", "content", "You are a rigorous reasoning assistant."),
Map.of("role", "user", "content", "Evaluate this architecture proposal and list the main operational risks.")),
"reasoning", true,
"options", Map.of("reasoning_effort", "medium"),
"max_completion_tokens", 800));
.NET
var completion = await client.Chat.Completions.CreateAsync(new Dictionary<string, object?>
{
["model"] = "google/gemini-3-pro-preview",
["messages"] = new[]
{
new Dictionary<string, object?> { ["role"] = "system", ["content"] = "You are a rigorous reasoning assistant." },
new Dictionary<string, object?> { ["role"] = "user", ["content"] = "Evaluate this architecture proposal and list the main operational risks." }
},
["reasoning"] = true,
["options"] = new Dictionary<string, object?>
{
["reasoning_effort"] = "medium"
},
["max_completion_tokens"] = 800
});
PHP
$completion = $client->chat()->completions()->create([
'model' => 'google/gemini-3-pro-preview',
'messages' => [
['role' => 'system', 'content' => 'You are a rigorous reasoning assistant.'],
['role' => 'user', 'content' => 'Evaluate this architecture proposal and list the main operational risks.'],
],
'reasoning' => true,
'options' => [
'reasoning_effort' => 'medium',
],
'max_completion_tokens' => 800,
]);
Ruby
completion = client.chat.completions.create(
model: "google/gemini-3-pro-preview",
messages: [
{ role: "system", content: "You are a rigorous reasoning assistant." },
{ role: "user", content: "Evaluate this architecture proposal and list the main operational risks." }
],
reasoning: true,
options: {reasoning_effort: "medium"},
max_completion_tokens: 800
)