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

# Quickstart Gemini API: Gunakan permintaan native dan kompatibel OpenAI dengan CometAPI

> Panggil model teks Gemini melalui CometAPI dengan permintaan native generateContent atau permintaan Chat Completions yang kompatibel dengan OpenAI.

## Yang akan Anda bangun

Anda akan mengirim permintaan native Gemini `POST /v1beta/models/\{model\}:generateContent`, lalu membandingkannya dengan opsi `POST /v1/chat/completions` yang kompatibel dengan OpenAI untuk aplikasi yang sudah menggunakan bentuk permintaan Chat Completions.

## Prasyarat

* Kunci API CometAPI yang disimpan di `COMETAPI_KEY`
* Sebuah model ID teks Gemini dari [halaman Models](/id/overview/models)
* `curl`, Python 3.10+, atau Node.js 18+

## Kunci API, base URL, autentikasi

Gunakan endpoint native Gemini saat Anda menginginkan field permintaan Gemini:

```text theme={null}
https://api.cometapi.com/v1beta/models/{model}:generateContent
```

Gunakan `x-goog-api-key` untuk permintaan HTTP native Gemini langsung:

```text theme={null}
x-goog-api-key: $COMETAPI_KEY
```

Gunakan base URL yang kompatibel dengan OpenAI hanya jika aplikasi Anda sudah menggunakan Chat Completions:

```text theme={null}
https://api.cometapi.com/v1
```

## Format Gemini native

Permintaan Gemini native menggunakan `contents`, `parts`, dan `generationConfig`. Gunakan path ini saat Anda memerlukan field khusus Gemini seperti kontrol thinking, media parts, grounding Google Search, atau operator Streaming native.

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.cometapi.com/v1beta/models/your-gemini-model-id:generateContent" \
    -H "x-goog-api-key: $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [
        {
          "parts": [
            {
              "text": "Explain why base URL configuration matters."
            }
          ]
        }
      ],
      "generationConfig": {
        "temperature": 0.3
      }
    }'
  ```

  ```python Python theme={null}
  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="your-gemini-model-id",
      contents="Explain why base URL configuration matters.",
      config={
          "temperature": 0.3,
      },
  )

  print(response.text)
  ```

  ```javascript Node.js theme={null}
  import { GoogleGenAI } from "@google/genai";

  const ai = new GoogleGenAI({
    apiKey: process.env.COMETAPI_KEY,
    httpOptions: {
      baseUrl: "https://api.cometapi.com",
      apiVersion: "v1beta",
    },
  });

  const response = await ai.models.generateContent({
    model: "your-gemini-model-id",
    contents: "Explain why base URL configuration matters.",
    config: {
      temperature: 0.3,
    },
  });

  console.log(response.text);
  ```
</CodeGroup>

## Opsi kompatibel OpenAI

Gunakan rute yang kompatibel dengan OpenAI saat Anda memigrasikan OpenAI SDK atau aplikasi Chat Completions yang sudah ada dan tidak memerlukan field permintaan native Gemini.

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/chat/completions \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "your-gemini-model-id",
      "messages": [
        {
          "role": "user",
          "content": "Explain why base URL configuration matters."
        }
      ]
    }'
  ```

  ```python Python theme={null}
  import os
  from openai import OpenAI

  client = OpenAI(
      api_key=os.environ["COMETAPI_KEY"],
      base_url="https://api.cometapi.com/v1",
  )

  completion = client.chat.completions.create(
      model="your-gemini-model-id",
      messages=[
          {
              "role": "user",
              "content": "Explain why base URL configuration matters.",
          }
      ],
  )

  print(completion.choices[0].message.content)
  ```

  ```javascript Node.js theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    apiKey: process.env.COMETAPI_KEY,
    baseURL: "https://api.cometapi.com/v1",
  });

  const completion = await client.chat.completions.create({
    model: "your-gemini-model-id",
    messages: [
      {
        role: "user",
        content: "Explain why base URL configuration matters.",
      },
    ],
  });

  console.log(completion.choices[0].message.content);
  ```
</CodeGroup>

## Penjelasan alur

| Path              | Endpoint                                        | Bentuk permintaan                                  | SDK                                 | Gunakan saat                                                                                                      |
| ----------------- | ----------------------------------------------- | -------------------------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Gemini native     | `POST /v1beta/models/\{model\}:generateContent` | `contents`, `parts`, `generationConfig`            | Google GenAI SDK atau HTTP langsung | Anda memerlukan field khusus Gemini, bagian multimodal, kontrol thinking, grounding, atau Streaming native.       |
| Kompatibel OpenAI | `POST /v1/chat/completions`                     | `messages`, `temperature`, `max_completion_tokens` | OpenAI SDK atau HTTP langsung       | Aplikasi Anda sudah menggunakan Chat Completions dan hanya memerlukan model teks Gemini di balik bentuk tersebut. |

Jangan mencampur dua format permintaan ini. Field native Gemini seperti `contents` dan `generationConfig` digunakan pada rute `generateContent`. Field Chat Completions seperti `messages` digunakan pada rute yang kompatibel dengan OpenAI.

## Pemecahan masalah / FAQ

<AccordionGroup>
  <Accordion title="Path mana yang sebaiknya saya mulai gunakan">
    Mulailah dengan `generateContent` native Gemini saat Anda membangun workflow Gemini baru. Gunakan rute yang kompatibel dengan OpenAI saat aplikasi yang sudah ada sudah bergantung pada OpenAI SDK atau bentuk permintaan Chat Completions.
  </Accordion>

  <Accordion title="Field native Gemini gagal di Chat Completions">
    Kirim permintaan `contents`, `parts`, `generationConfig`, dan `streamGenerateContent` ke endpoint native Gemini. Rute yang kompatibel dengan OpenAI mengharapkan `messages` dan parameter Chat Completions.
  </Accordion>

  <Accordion title="Model ID Gemini gagal">
    Pastikan model ID tersebut tersedia untuk akun Anda dan mendukung rute yang Anda panggil. Gunakan [halaman Models](/id/overview/models) untuk menemukan model ID yang tersedia saat ini.
  </Accordion>

  <Accordion title="SDK mengarah ke layanan yang salah">
    Untuk permintaan Google GenAI SDK, setel base URL ke `https://api.cometapi.com`. Untuk permintaan OpenAI SDK, setel `base_url` di Python atau `baseURL` di Node.js ke `https://api.cometapi.com/v1`.
  </Accordion>
</AccordionGroup>

## Langkah berikutnya

* Gunakan [referensi API native Gemini](/api/text/gemini-generating-content) untuk field permintaan dan respons `generateContent` yang lengkap.
* Baca [referensi API Chat Completions](/api/text/chat) untuk bentuk permintaan yang kompatibel dengan OpenAI.
* Konfigurasikan klien OpenAI SDK di [Gunakan CometAPI dengan OpenAI SDK](/id/guides/use-cometapi-with-openai-sdk).
* Daftarkan model yang tersedia dengan [Daftar model CometAPI yang tersedia](/id/guides/how-to-list-available-models).
* Tambahkan penanganan retry dan rate-limit dengan [Kode error dan strategi retry](/id/guides/error-codes-and-retry-strategy).
