Naar hoofdinhoud gaan
POST
/
v1beta
/
models
/
{model}
:
{operator}
import os
from google import genai

client = genai.Client(
    api_key=os.environ["COMETAPI_KEY"],
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
)

response = client.models.generate_content(
    model="gemini-3-flash-preview",
    contents="Explain how AI works in a few words",
)

print(response.text)
{
  "candidates": [
    {
      "content": {
        "role": "<string>",
        "parts": [
          {
            "text": "<string>",
            "functionCall": {
              "name": "<string>",
              "args": {}
            },
            "inlineData": {
              "mimeType": "<string>",
              "data": "<string>"
            },
            "thought": true
          }
        ]
      },
      "safetyRatings": [
        {
          "category": "<string>",
          "probability": "<string>",
          "blocked": true
        }
      ],
      "citationMetadata": {
        "citationSources": [
          {
            "startIndex": 123,
            "endIndex": 123,
            "uri": "<string>",
            "license": "<string>"
          }
        ]
      },
      "tokenCount": 123,
      "avgLogprobs": 123,
      "groundingMetadata": {
        "groundingChunks": [
          {
            "web": {
              "uri": "<string>",
              "title": "<string>"
            }
          }
        ],
        "groundingSupports": [
          {
            "groundingChunkIndices": [
              123
            ],
            "confidenceScores": [
              123
            ],
            "segment": {
              "startIndex": 123,
              "endIndex": 123,
              "text": "<string>"
            }
          }
        ],
        "webSearchQueries": [
          "<string>"
        ]
      },
      "index": 123
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "<string>",
        "probability": "<string>",
        "blocked": true
      }
    ]
  },
  "usageMetadata": {
    "promptTokenCount": 123,
    "candidatesTokenCount": 123,
    "totalTokenCount": 123,
    "trafficType": "<string>",
    "thoughtsTokenCount": 123,
    "promptTokensDetails": [
      {
        "modality": "<string>",
        "tokenCount": 123
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "<string>",
        "tokenCount": 123
      }
    ]
  },
  "modelVersion": "<string>",
  "createTime": "<string>",
  "responseId": "<string>"
}
CometAPI ondersteunt het native API-formaat van Gemini, waardoor je volledige toegang krijgt tot Gemini-specifieke functies zoals thinking control, Google Search-grounding, native modaliteiten voor afbeeldingsgeneratie en meer. Gebruik deze endpoint wanneer je mogelijkheden nodig hebt die niet beschikbaar zijn via het OpenAI-compatible chat endpoint.
Gebruik Google’s officiële GenerateContent API reference als de gezaghebbende bron voor de volledige request-velden, het response-schema en Gemini-modelspecifiek gedrag. Deze CometAPI-pagina legt uit hoe je die native request-vorm via CometAPI verstuurt.
Aanvraagparameters en responsvelden van Gemini kunnen veranderen wanneer Google de native API bijwerkt. Controleer de documentatie voor Gemini-tekstgeneratie voor de meest recente volledige parameterlijst en providerspecifiek gedrag.
Zowel x-goog-api-key als Authorization: Bearer-headers worden ondersteund voor authenticatie.

Snelstart

Om een Gemini SDK of HTTP-client met CometAPI te gebruiken, vervang je de base URL en API-sleutel:
InstellingStandaard van GoogleCometAPI
Base URLgenerativelanguage.googleapis.comapi.cometapi.com
API-sleutel$GEMINI_API_KEY$COMETAPI_KEY

Video-invoer verzenden

Gemini generateContent accepteert video als een content-onderdeel. Kies de invoervorm op basis van waar de video is opgeslagen:
VideobronRequest-onderdeelGebruik wanneer
Lokaal videobestandinlineDataDe video klein genoeg is om als base64 in de JSON-request mee te sturen.
Openbare video-URLfileData.fileUriDe video beschikbaar is via een openbare HTTPS-URL die geen authenticatie vereist.
Gebruik voor REST- en curl-requests Gemini’s camelCase-veldnamen zoals inlineData.mimeType en fileData.fileUri. Verstuur URL-media niet als file_data.file_uri.
Dit voorbeeld leest een lokaal MP4-bestand, codeert het als base64 en verstuurt het in de request-body:
read -rsp "CometAPI API key: " COMETAPI_KEY
printf '\n'
export COMETAPI_KEY
VIDEO_PATH="./your_video.mp4"
VIDEO_B64=$(base64 < "$VIDEO_PATH" | tr -d '\n')

curl -X POST \
  "https://api.cometapi.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $COMETAPI_KEY" \
  --data-binary @- <<EOF
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "inlineData": {
            "mimeType": "video/mp4",
            "data": "${VIDEO_B64}"
          }
        },
        {
          "text": "Analyze this video and list the key scenes."
        }
      ]
    }
  ],
  "generationConfig": {
    "maxOutputTokens": 512,
    "thinkingConfig": {"thinkingLevel": "MINIMAL"}
  }
}
EOF
Dit voorbeeld verstuurt een openbare MP4-URL met fileData.fileUri:
read -rsp "CometAPI API key: " COMETAPI_KEY
printf '\n'
export COMETAPI_KEY
VIDEO_URL="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"

curl -X POST \
  "https://api.cometapi.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $COMETAPI_KEY" \
  --data-binary @- <<EOF
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "${VIDEO_URL}"
          }
        },
        {
          "text": "Analyze this video and list the key scenes."
        }
      ]
    }
  ],
  "generationConfig": {
    "maxOutputTokens": 512,
    "thinkingConfig": {"thinkingLevel": "MINIMAL"}
  }
}
EOF
CometAPI raadt voor deze endpoint geen afzonderlijke uploadflow via de Gemini Files API aan. Verstuur media in de generateContent-request zelf met inlineData of fileData.fileUri.

Denken configureren (reasoning)

Gemini-modellen kunnen interne redenering uitvoeren voordat ze een antwoord genereren. De besturingsmethode hangt af van de modelgeneratie.
Gemini 3-modellen gebruiken thinkingLevel om de diepte van de redenering te regelen. Beschikbare niveaus: MINIMAL, LOW, MEDIUM, HIGH.Gebruik gemini-3-flash-preview als het standaard voorbeeldmodel, tenzij je specifiek een andere Gemini 3-variant nodig hebt.
curl "https://api.cometapi.com/v1beta/models/gemini-3-flash-preview:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $COMETAPI_KEY" \
  -d '{
    "contents": [{"parts": [{"text": "Explain quantum physics simply."}]}],
    "generationConfig": {
      "thinkingConfig": {"thinkingLevel": "LOW"}
    }
  }'
Het gebruik van thinkingLevel met Gemini 2.5-modellen (of thinkingBudget met Gemini 3-modellen) kan fouten veroorzaken. Gebruik de juiste parameter voor jouw modelversie.

Responses streamen

Om Server-Sent Events te ontvangen terwijl het model content genereert, gebruik je streamGenerateContent?alt=sse als operator. Elk SSE-event bevat een data:-regel met een JSON GenerateContentResponse-object.
curl "https://api.cometapi.com/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $COMETAPI_KEY" \
  --no-buffer \
  -d '{
    "contents": [{"parts": [{"text": "Write a short poem about the stars"}]}]
  }'

System instructions instellen

Om het gedrag van het model gedurende het hele gesprek te sturen, gebruik je systemInstruction:
curl "https://api.cometapi.com/v1beta/models/gemini-3-flash-preview:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $COMETAPI_KEY" \
  -d '{
    "contents": [{"parts": [{"text": "What is 2+2?"}]}],
    "systemInstruction": {
      "parts": [{"text": "You are a math tutor. Always show your work."}]
    }
  }'

JSON-output aanvragen

Om gestructureerde JSON-output af te dwingen, stel je responseMimeType in. Optioneel kun je een responseSchema opgeven voor strikte schemavalidatie:
curl "https://api.cometapi.com/v1beta/models/gemini-3-flash-preview:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $COMETAPI_KEY" \
  -d '{
    "contents": [{"parts": [{"text": "List 3 planets with their distances from the sun"}]}],
    "generationConfig": {
      "responseMimeType": "application/json"
    }
  }'

Om realtime zoeken op het web in te schakelen, voeg je een googleSearch-tool toe:
curl "https://api.cometapi.com/v1beta/models/gemini-3-flash-preview:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $COMETAPI_KEY" \
  -d '{
    "contents": [{"parts": [{"text": "Who won the euro 2024?"}]}],
    "tools": [{"google_search": {}}]
  }'
Het antwoord bevat groundingMetadata met bron-URL’s en betrouwbaarheidsscores.

Response example

Een typische response van het Gemini-endpoint van CometAPI:
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [{"text": "Hello"}]
      },
      "finishReason": "STOP",
      "avgLogprobs": -0.0023
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 5,
    "candidatesTokenCount": 1,
    "totalTokenCount": 30,
    "trafficType": "ON_DEMAND",
    "thoughtsTokenCount": 24,
    "promptTokensDetails": [{"modality": "TEXT", "tokenCount": 5}],
    "candidatesTokensDetails": [{"modality": "TEXT", "tokenCount": 1}]
  },
  "modelVersion": "gemini-3-flash-preview",
  "createTime": "2026-03-25T04:21:43.756483Z",
  "responseId": "CeynaY3LDtvG4_UP0qaCuQY"
}
Het veld thoughtsTokenCount in usageMetadata laat zien hoeveel tokens het model heeft besteed aan interne redenering, zelfs wanneer denkoutput niet in de response is opgenomen.

Vergelijk met OpenAI-compatible endpoint

FunctieGemini Native (/v1beta/models/...)OpenAI-Compatible (/v1/chat/completions)
Thinking-controlethinkingConfig met thinkingLevel / thinkingBudgetNiet beschikbaar
Google Search-groundingtools: [\{"google_search": \{\}\}]Niet beschikbaar
Google Maps-groundingtools: [\{"googleMaps": \{\}\}]Niet beschikbaar
Modality voor afbeeldinggeneratieresponseModalities: ["IMAGE"]Niet beschikbaar
Auth-headerx-goog-api-key of BearerAlleen Bearer
Response-formaatGemini-native (candidates, parts)OpenAI-formaat (choices, message)

Autorisaties

x-goog-api-key
string
header
vereist

Your CometAPI key passed via the x-goog-api-key header. Bearer token authentication (Authorization: Bearer $COMETAPI_KEY) is also supported.

Padparameters

model
string
vereist

Gemini model ID. Example: gemini-3-flash-preview, gemini-2.5-pro. See the Models page for current options.

operator
enum<string>
vereist

The operation to perform. Use generateContent for synchronous responses, or streamGenerateContent?alt=sse for Server-Sent Events streaming.

Beschikbare opties:
generateContent,
streamGenerateContent?alt=sse

Body

application/json
contents
object[]

Conversation content. Each entry has an optional role (user or model) and a parts array.

systemInstruction
object

System instructions that guide the model's behavior across the entire conversation. Text only.

tools
object[]

Tools the model may use to generate responses. Supports function declarations, Google Search, Google Maps, and code execution.

toolConfig
object

Configuration for tool usage, such as function calling mode.

safetySettings
object[]

Safety filter settings. Override default thresholds for specific harm categories.

generationConfig
object

Configuration for model generation behavior including temperature, output length, and response format.

cachedContent
string

The name of cached content to use as context. Format: cachedContents/{id}. See the Gemini context caching documentation for details.

Respons

200 - application/json

Successful response. For streaming requests, the response is a stream of SSE events, each containing a GenerateContentResponse JSON object prefixed with data:.

candidates
object[]

The generated response candidates.

promptFeedback
object

Feedback on the prompt, including safety blocking information.

usageMetadata
object

Token usage statistics for the request.

modelVersion
string

The model version that generated this response.

createTime
string

The timestamp when this response was created (ISO 8601 format).

responseId
string

Unique identifier for this response.