Panduan Akses Gemini API: Kompatibilitas Google dan Konteks Luas

Panduan untuk mengakses model Gemini melalui cara yang kompatibel dengan API resmi Google: payload generateContent, alamat interface, autentikasi, contoh curl, field request/response, streaming, dan kode error.

I. Ikhtisar

Situs ini menyediakan akses yang kompatibel dengan format Google Gemini API, mendukung dua metode pemanggilan: generateContent dan pembuatan streaming. Proyek yang menggunakan Google GenAI SDK atau klien yang kompatibel dengan Gemini dapat terhubung dengan mengarahkan alamat permintaan ke gateway Gemini situs kami dan mengganti kunci API dengan kunci sk- dari akun Anda.

Model seri Gemini yang tersedia saat ini dapat dilihat di daftar model (seperti gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash, gemini-3.5-flash-lite, dll.). Daftar lengkap dan harga per unit dapat diperiksa melalui GET /v1/models.

II. Alamat Endpoint

MetodePathKeterangan
POST/v1beta/models/{model}:generateContentEndpoint pembuatan Gemini, body permintaan adalah payload generateContent
POST/v1beta/models/{model}:streamGenerateContent?alt=ssePembuatan streaming (SSE)
GET/v1/modelsDaftar model dan harga (tidak memerlukan autentikasi)

Alamat gateway: https://www.relay-api.com. Nama model disertakan dalam URL (/v1beta/models/{model}:generateContent, sama seperti standar resmi Google); body permintaan berupa payload generateContent.

III. Metode Autentikasi

Sama dengan interface lain di situs ini, gunakan kunci sk- dari akun Anda:

Authorization: Bearer sk-kunci-anda

Juga kompatibel dengan header x-api-key dan header resmi Google x-goog-api-key: sk-kunci-anda.

IV. Memulai Cepat (curl)

4.1 Non-Streaming

curl -X POST https://www.relay-api.com/v1beta/models/gemini-3.7-flash:generateContent \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-kunci-anda" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [{"text": "Jelaskan Gemini API dalam satu kalimat"}]
      }
    ],
    "generationConfig": {
      "temperature": 0.7,
      "maxOutputTokens": 512
    }
  }'

4.2 Menggunakan Instruksi Sistem (systemInstruction)

curl -X POST https://www.relay-api.com/v1beta/models/gemini-3.7-flash:generateContent \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk-kunci-anda" \
  -d '{
    "model": "gemini-3.5-flash",
    "systemInstruction": {
      "parts": [{"text": "Anda adalah insinyur integrasi API senior, berikan jawaban yang singkat."}]
    },
    "contents": [
      {"role": "user", "parts": [{"text": "Bagaimana cara memilih antara interface streaming dan non-streaming?"}]}
    ]
  }'

V. Parameter Permintaan

FieldTipeWajibKeterangan
modelstringYaSlug model, contoh: gemini-3.7-flash
contentsarrayYaKonten percakapan, elemen berupa {role, parts[]}; nilai role: user / model
contents[].partsarrayYaBlok konten, umumnya berupa blok teks {text}
systemInstructionobjectTidakInstruksi sistem, struktur {parts: [{text}]}
generationConfig.temperaturenumberTidakSuhu pengambilan sampel, default 1.0
generationConfig.topPnumberTidakPengambilan sampel nukleus
generationConfig.topKintTidakPengambilan sampel Top-K
generationConfig.maxOutputTokensintTidakJumlah token output maksimum
generationConfig.stopSequencesarrayTidakUrutan berhenti
streamboolTidakApakah menggunakan output streaming, default false

VI. Struktur Respons

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [{"text": "Gemini API mendukung input teks, multimodal, dan output streaming."}]
      },
      "finishReason": "STOP",
      "index": 0
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 16,
    "candidatesTokenCount": 20,
    "totalTokenCount": 36
  }
}
FieldKeterangan
candidates[].content.parts[].textTeks yang dihasilkan model
candidates[].finishReasonAlasan selesai: STOP / MAX_TOKENS / SAFETY / RECITATION
usageMetadata.promptTokenCountJumlah token input (basis penagihan)
usageMetadata.candidatesTokenCountJumlah token output (basis penagihan)
usageMetadata.totalTokenCountTotal jumlah token

VII. Output Streaming

Setelah menambahkan "stream": true pada body permintaan, server akan mengembalikan konten kandidat per blok melalui SSE:

data: {"candidates": [{"content": {"parts": [{"text": "Gemini"}]}, "index": 0}]}

data: {"candidates": [{"content": {"parts": [{"text": " API mendukung output"}]}, "index": 0}]}

data: {"candidates": [{"content": {"parts": [{"text": " streaming."}]}, "index": 0, "finishReason": "STOP"}]}

Klien memparsing setiap baris data: dan menggabungkan candidates[0].content.parts[0].text; jika finishReason pada chunk terakhir adalah STOP, berarti pembuatan telah selesai.

VIII. Kode Error Umum

Status HTTPArtiSaran Penanganan
400Format permintaan salah (konten hilang, model tidak ada, dll.)Periksa body permintaan dan nama model
401Kunci API tidak valid atau hilangPeriksa header Authorization / x-api-key
403Kunci tidak aktif, saldo tidak cukup, atau tidak ada akses ke model iniIsi saldo atau periksa otoritas kunci
404Model atau endpoint tidak ditemukanKonfirmasi slug model
429Permintaan terlalu seringCoba kembali nanti
500Kesalahan internal serverCoba lagi nanti, hubungi layanan pelanggan jika masalah berlanjut

Respons error memiliki struktur terpadu: {"code": status_code, "message": "deskripsi_error", "data": null}.

IX. Catatan Kompatibilitas

  • Google GenAI SDK (google-genai) dapat digunakan melalui endpoint kustom.
  • Mendukung berbagai klien yang kompatibel dengan Gemini yang menargetkan generateContent.
  • Nama model merujuk pada slug yang dikembalikan oleh GET /v1/models.