- Synchronous processing mode with real-time response
- Minimal parameters for quick start
Request example
curl --request POST \
--url https://api.openveer.com/v1beta/models/gemini-2.5-pro:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Hello, please introduce yourself"
}
]
}
]
}'import requests
url = "https://api.openveer.com/v1beta/models/gemini-2.5-pro:generateContent"
payload = {
"contents": [
{
"role": "user",
"parts": [
{
"text": "Hello, please introduce yourself"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())const url = "https://api.openveer.com/v1beta/models/gemini-2.5-pro:generateContent";
const payload = {
contents: [
{
role: "user",
parts: [
{
text: "Hello, please introduce yourself"
}
]
}
]
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.openveer.com/v1beta/models/gemini-2.5-pro:generateContent"
payload := map[string]interface{}{
"contents": []map[string]interface{}{
{
"role": "user",
"parts": []map[string]interface{}{
{
"text": "Hello, please introduce yourself",
},
},
},
},
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.openveer.com/v1beta/models/gemini-2.5-pro:generateContent";
String payload = """
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Hello, please introduce yourself"
}
]
}
]
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}<?php
$url = "https://api.openveer.com/v1beta/models/gemini-2.5-pro:generateContent";
$payload = [
"contents" => [
[
"role" => "user",
"parts" => [
[
"text" => "Hello, please introduce yourself"
]
]
]
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.openveer.com/v1beta/models/gemini-2.5-pro:generateContent")
payload = {
contents: [
{
role: "user",
parts: [
{
text: "Hello, please introduce yourself"
}
]
}
]
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.bodyResponse example
{
"code": 200,
"data": {
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "Hello! I'm pleased to introduce myself.\n\nI am a large language model, trained and developed by Google..."
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
}
],
"promptFeedback": {
"safetyRatings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
]
}
}{
"error": {
"code": 400,
"message": "Invalid request parameters",
"status": "INVALID_ARGUMENT"
}
}{
"error": {
"code": 401,
"message": "Authentication failed, please check your API Key",
"status": "UNAUTHENTICATED"
}
}{
"error": {
"code": 402,
"message": "Insufficient balance, please recharge",
"status": "PAYMENT_REQUIRED"
}
}{
"error": {
"code": 403,
"message": "Access denied",
"status": "PERMISSION_DENIED"
}
}{
"error": {
"code": 404,
"message": "Model not found",
"status": "NOT_FOUND"
}
}{
"error": {
"code": 429,
"message": "Rate limit exceeded, please try again later",
"status": "RESOURCE_EXHAUSTED"
}
}{
"error": {
"code": 500,
"message": "Internal server error",
"status": "INTERNAL"
}
}{
"error": {
"code": 502,
"message": "Bad gateway, service temporarily unavailable",
"status": "BAD_GATEWAY"
}
}{
"error": {
"code": 503,
"message": "Service temporarily unavailable",
"status": "UNAVAILABLE"
}
}Authorizations
Authorization stringAll API endpoints require Bearer Token authentication
Get your API Key:
Visit the API Key Management Page to get your API Key
Add it to the request header:
Authorization: Bearer YOUR_API_KEYPath Parameters
model stringModel name
The examples use gemini-2.5-pro, which you can replace with other supported Gemini models:
gemini-3.5-flash- Gemini 3.5 Flashgemini-3.1-pro-preview- Gemini 3.1 Pro Previewgemini-3-pro-preview- Gemini 3 Pro Previewgemini-2.5-pro- Gemini 2.5 Pro
method string" required>
Generation method (recommended: generateContent for quick start):
generateContent: Wait for complete response and return at oncestreamGenerateContent: Stream response, return content in chunks
Available options: generateContent, streamGenerateContent
Body
contents arrayrole stringRole type:
* user: User message
* model: Model response (used in conversation history)
parts arraytext stringText content
inlineData objectmimeType stringMIME type, e.g. image/jpeg, image/png
data stringBase64 encoded data
fileData objectmimeType stringFile MIME type, such as video/mp4.
fileUri stringFile URI, such as an HTTP(S) URL for a video file.
fileData to provide the video URL and MIME type, and include an analysis prompt in the same message. This example asks the model to list the main events in chronological order with timestamps.
curl 'https://api.openveer.com/v1beta/models/gemini-3.1-pro-preview:generateContent' \
-H 'Authorization: Bearer YOUR_APIMART_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "video/mp4",
"fileUri": "https://storage.googleapis.com/cloud-samples-data/generative-ai/video/pixel8.mp4"
}
},
{
"text": "Analyze the video, list the main events in chronological order, and include timestamps."
}
]
}
],
"generationConfig": {
"maxOutputTokens": 2048
}
}'[
{
"role": "user",
"parts": [{ "text": "Hello, please introduce yourself" }]
}
]generationConfig objecttemperature numberControls output randomness, range 0.0-2.0
* Lower values make output more deterministic
* Higher values make output more random
Default: 1.0
maxOutputTokens integerMaximum number of tokens to generate
Different models have different maximum limits
topP numberNucleus sampling parameter, range 0.0-1.0
Controls the probability mass considered during sampling
topK integerTop-K sampling parameter
Sample only from the K most probable tokens at each step
stopSequences arrayList of stop sequences
Stop generation when these sequences are encountered
safetySettings arraycategory stringSafety category:
* HARM_CATEGORY_HATE_SPEECH: Hate speech
* HARM_CATEGORY_DANGEROUS_CONTENT: Dangerous content
* HARM_CATEGORY_HARASSMENT: Harassment
* HARM_CATEGORY_SEXUALLY_EXPLICIT: Sexually explicit content
threshold stringThreshold level:
* BLOCK_NONE: Don't block
* BLOCK_ONLY_HIGH: Block only high risk
* BLOCK_MEDIUM_AND_ABOVE: Block medium and above risk
* BLOCK_LOW_AND_ABOVE: Block low and above risk
Response
candidates arraycontent objectrole stringRole, typically model
parts arraytext stringGenerated text content
finishReason stringFinish reason:
* STOP: Normal completion
* MAX_TOKENS: Maximum token limit reached
* SAFETY: Stopped for safety reasons
* RECITATION: Stopped due to recitation
* OTHER: Other reasons
index integerIndex of the candidate response
safetyRatings arraycategory stringSafety category
probability stringProbability level: NEGLIGIBLE, LOW, MEDIUM, HIGH
promptFeedback objectsafetyRatings arraySafety ratings for the prompt
blockReason stringBlock reason (if prompt was blocked)
usageMetadata objectpromptTokenCount integerNumber of tokens in the prompt
candidatesTokenCount integerNumber of tokens in candidate responses
totalTokenCount integerTotal number of tokens consumed
thoughtsTokenCount integerNumber of tokens used for thinking (if applicable)
promptTokensDetails arraymodality stringModality type: TEXT, IMAGE, etc.
tokenCount integerNumber of tokens for this modality
This documentation is built and hosted on Mintlify, a developer documentation platform.