Panduan Integrasi Gemini API: Panggilan Kompatibel Google dan Konteks Super Besar

Panggil model kami dengan kompatibilitas Google Gemini API: payload generateContent, alamat endpoint, autentikasi, contoh curl, field request/response, streaming, dan kode kesalahan.

I. Ikhtisar

Situs ini menyediakan akses yang kompatibel dengan format Google Gemini API, mendukung dua metode panggilan: 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 situs ini.

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

II. Alamat API (Endpoint)

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

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

III. Metode Autentikasi

Sama seperti antarmuka situs kami lainnya, gunakan kunci sk- dari situs:

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 Dengan 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, harap jawab dengan singkat."}]
    },
    "contents": [
      {"role": "user", "parts": [{"text": "Bagaimana cara memilih antara antarmuka streaming dan non-streaming?"}]}
    ]
  }'

V. Parameter Permintaan

FieldTipeWajibKeterangan
modelstringYaSlug model, misal gemini-3.7-flash
contentsarrayYaIsi percakapan, elemen berupa {role, parts[]}; nilai role: user / model
contents[].partsarrayYaBlok konten, biasanya {text} untuk teks
systemInstructionobjectTidakInstruksi sistem, struktur {parts: [{text}]}
generationConfig.temperaturenumberTidakSuhu pengambilan sampel, default 1.0
generationConfig.topPnumberTidakNucleus sampling
generationConfig.topKintTidakTop-K sampling
generationConfig.maxOutputTokensintTidakJumlah token output maksimum
generationConfig.stopSequencesarrayTidakUrutan berhenti
streamboolTidakApakah respon streaming, default false

VI. Struktur Respon

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [{"text": "Gemini API mendukung teks, input 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 berhenti: STOP / MAX_TOKENS / SAFETY / RECITATION
usageMetadata.promptTokenCountJumlah token input (dasar penagihan)
usageMetadata.candidatesTokenCountJumlah token output (dasar penagihan)
usageMetadata.totalTokenCountTotal jumlah token

VII. Output Streaming

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

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

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

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

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

VIII. Kode Kesalahan Umum

Kode Status HTTPMaknaSaran Penanganan
400Format permintaan salah (contents hilang, model tidak ada, dll.)Periksa body permintaan dan nama model
401Kunci API tidak valid atau hilangPeriksa header Authorization / x-api-key
403Kunci dinonaktifkan, saldo habis, atau tidak diotorisasi untuk model/rute iniIsi ulang saldo atau periksa otorisasi kunci
404Model atau endpoint tidak ditemukanPastikan slug model sudah benar
429Permintaan terlalu seringTunggu sejenak dan coba lagi (backoff)
500Kesalahan internal serverCoba lagi nanti, jika terus berlanjut hubungi CS

Body respon kesalahan mengikuti struktur {"code": kode status, "message": "deskripsi kesalahan", "data": null}.

IX. Catatan Kompatibilitas

  • Google GenAI SDK (google-genai) dapat terhubung melalui endpoint kustom.
  • Mendukung semua jenis klien yang kompatibel dengan Gemini yang menggunakan generateContent sebagai target.
  • Nama model mengacu pada slug yang dikembalikan oleh GET /v1/models.

Catatan Base URL: Situs ini menerima /v1beta/models/... dan /v1beta/v1beta/models/... (serta /v1/... dan /v1/v1/...), jadi klien yang menambahkan /v1 atau /v1beta secara otomatis tetap dapat berfungsi: Base URL bisa diisi dengan root domain atau alamat yang menyertakan /v1beta. Silakan cek dan salin ID Model di pojok kanan atas halaman "Token" di dasbor.