> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# İçerik Oluştur

> Google Gemini API formatını kullanarak içerik oluşturur

TokenLab, Gemini modelleri için yerel Google Gemini API formatını destekler. Bu, Google AI SDK'ları ile doğrudan uyumluluk sağlar.

## Yol Parametreleri

<ParamField path="model" type="string" required>
  Model adı (örneğin, `gemini-2.5-pro`, `gemini-3.5-flash`).

  Üretim entegrasyonları için, herkese açık bir `fileData` URL'si olan URL tabanlı `file_data` / `https` medya parçalarını tercih edin.
  TokenLab, mümkün olduğunda desteklenen Gemini yerel kanallarını yerel yol üzerinden yönlendirecek ve yerel olarak kullanıma hazır bir rota bu çok modlu istek için mevcut olmadığında otomatik olarak uyumlu dahili dönüştürme yoluna geri dönecektir.
</ParamField>

## Sorgu Parametreleri

<ParamField query="key" type="string">
  API anahtarı (header kimlik doğrulamasına alternatif).
</ParamField>

## Kimlik Doğrulama

Gemini uç noktaları birden fazla kimlik doğrulama yöntemini destekler:

* `?key=YOUR_API_KEY` sorgu parametresi
* `x-goog-api-key: YOUR_API_KEY` üst bilgisi
* `Authorization: Bearer YOUR_API_KEY` üst bilgisi

## İstek Gövdesi

<ParamField body="contents" type="array" required>
  Sohbet içerikleri.

  Her içerik nesnesi şunları içerir:

  * `role` (string): `user` veya `model`
  * `parts` (array): içerik part'ları. TokenLab şu anda şunları destekler:
    * metin part'ları: `{ "text": "..." }`
    * satır içi medya part'ları: `inlineData` / `inline_data`
    * URL tabanlı dosya part'ları: `fileData` / `file_data`

  Medya part'ları için TokenLab şu anda image, audio ve video MIME type'larını kabul eder ve bunları Gemini uyumlu genel sözleşme üzerinden iletir.

  `user` ve `model` role değerleri büyük/küçük harfe duyarsız biçimde normalize edilir. `application/octet-stream` içeren `inlineData` / `inline_data`, TokenLab desteklenen görsel veya video baytlarını tanıyabildiğinde kabul edilir; aksi halde istek routing öncesinde başarısız olur. Yerel image-output isteklerinde yalnızca Google search/maps araç ailesi kabul edilir ve desteklenmeyen araç kombinasyonları upstream retry başlamadan önce başarısız olur.
</ParamField>

<ParamField body="systemInstruction" type="object">
  Model için sistem talimatı.
</ParamField>

<ParamField body="generationConfig" type="object">
  Oluşturma yapılandırması:

  * `temperature` (number): Örnekleme sıcaklığı
  * `topP` (number): Çekirdek (nucleus) örnekleme olasılığı
  * `topK` (integer): Top-K örnekleme
  * `maxOutputTokens` (integer): Maksimum çıktı token'ları
  * `stopSequences` (array): Durdurma dizileri
  * `candidateCount` (integer): Stream olmayan üretim için aday sayısı. Streaming istekleri bu alanı kaldırmalı veya `1` olarak tutmalıdır.
  * `responseModalities` (array): Uyumlu native rotalar için istenen çıktı modaliteleri.
  * `responseMimeType` (string): `text/plain` veya `application/json` gibi çıktı MIME tipi.
  * `responseSchema` (object): `responseMimeType` JSON istediğinde yapılandırılmış çıktı için JSON schema.
  * `thinkingConfig` / `thinking_config` (object): Uyumlu modeller için düşünme bütçesi seçenekleri.
</ParamField>

<ParamField body="safetySettings" type="array">
  Güvenlik filtresi ayarları.
</ParamField>

## Yanıt

<ResponseField name="candidates" type="array">
  Oluşturulan içerik adayları.
</ResponseField>

<ResponseField name="usageMetadata" type="object">
  Token kullanım bilgisi.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?key=sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [
        {
          "parts": [{"text": "Hello, Gemini!"}]
        }
      ],
      "generationConfig": {
        "temperature": 0.7,
        "maxOutputTokens": 1024
      }
    }'
  ```

  ```python Python theme={null}
  import google.generativeai as genai

  genai.configure(
      api_key="sk-your-api-key",
      transport="rest",
      client_options={"api_endpoint": "api.tokenlab.sh"}
  )

  model = genai.GenerativeModel("gemini-2.5-pro")
  response = model.generate_content("Hello, Gemini!")

  print(response.text)
  ```

  ```javascript JavaScript theme={null}
  import { GoogleGenerativeAI } from "@google/generative-ai";

  const genAI = new GoogleGenerativeAI("sk-your-api-key", {
    baseUrl: "https://api.tokenlab.sh"
  });

  const model = genAI.getGenerativeModel({ model: "gemini-2.5-pro" });
  const result = await model.generateContent("Hello, Gemini!");

  console.log(result.response.text());
  ```

  ```go Go theme={null}
  package main

  import (
      "bytes"
      "encoding/json"
      "fmt"
      "io"
      "net/http"
  )

  func main() {
      payload := map[string]interface{}{
          "contents": []map[string]interface{}{
              {
                  "parts": []map[string]string{
                      {"text": "Hello, Gemini!"},
                  },
              },
          },
          "generationConfig": map[string]interface{}{
              "temperature":    0.7,
              "maxOutputTokens": 1024,
          },
      }

      jsonData, _ := json.Marshal(payload)
      req, _ := http.NewRequest("POST",
          "https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?key=sk-your-api-key",
          bytes.NewBuffer(jsonData))
      req.Header.Set("Content-Type", "application/json")

      client := &http.Client{}
      resp, _ := client.Do(req)
      defer resp.Body.Close()

      body, _ := io.ReadAll(resp.Body)
      fmt.Println(string(body))
  }
  ```

  ```php PHP theme={null}
  <?php
  $payload = [
      'contents' => [
          [
              'parts' => [
                  ['text' => 'Hello, Gemini!']
              ]
          ]
      ],
      'generationConfig' => [
          'temperature' => 0.7,
          'maxOutputTokens' => 1024
      ]
  ];

  $ch = curl_init('https://api.tokenlab.sh/v1beta/models/gemini-2.5-pro:generateContent?key=sk-your-api-key');

  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Content-Type: application/json'
      ],
      CURLOPT_POSTFIELDS => json_encode($payload)
  ]);

  $response = curl_exec($ch);
  curl_close($ch);

  $data = json_decode($response, true);
  echo $data['candidates'][0]['content']['parts'][0]['text'];
  ```
</RequestExample>

## Çok modlu giriş örnekleri

Gemini çok modlu isteklerinde medyayı `contents[].parts[]` içine yerleştirin ve satır içi byte ya da URL tabanlı dosya referansı kullanın.

Genel Gemini sözleşmesinde şu anda desteklenen medya kategorileri:

* görsel
* ses
* video

Satır içi medya için `inlineData` veya `inline_data` kullanın ve Base64 kodlanmış dosya baytlarını gönderin.

URL tabanlı medya için `fileData` veya `file_data` kullanın ve herkese açık bir `https` URL'i gönderin.

### Görsel giriş örneği

```json theme={null}
{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Lütfen bu görseli açıklayın." },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}
```

### Ses giriş örneği

```json theme={null}
{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Lütfen bu sesi yazıya dökün ve özetleyin." },
        {
          "file_data": {
            "mime_type": "audio/mpeg",
            "file_uri": "https://example.com/sample.mp3"
          }
        }
      ]
    }
  ]
}
```

### Video giriş örneği

```json theme={null}
{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Lütfen bu videoyu kısaca açıklayın." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/sample.mp4"
          }
        }
      ]
    }
  ]
}
```

<ResponseExample>
  ```json Response theme={null}
  {
    "candidates": [
      {
        "content": {
          "role": "model",
          "parts": [
            {"text": "Hello! How can I assist you today?"}
          ]
        },
        "finishReason": "STOP",
        "safetyRatings": [
          {"category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE"}
        ]
      }
    ],
    "usageMetadata": {
      "promptTokenCount": 5,
      "candidatesTokenCount": 10,
      "totalTokenCount": 15
    }
  }
  ```
</ResponseExample>

## Video Girdi Örneği

```json theme={null}
{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this video." },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://example.com/demo.mp4"
          }
        }
      ]
    }
  ]
}
```

## Ses Girdi Örneği

```json theme={null}
{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Please describe this audio." },
        {
          "fileData": {
            "mimeType": "audio/mpeg",
            "fileUri": "https://example.com/demo.mp3"
          }
        }
      ]
    }
  ]
}
```
