Gemini AI API

Dokumentasi resmi Gemini AI API dari Maelyn API untuk integrasi model Gemini melalui OpenAI-compatible API, mendukung chat, conversation history, streaming, dan image generation

Base Information

  • BASE_URL_API: https://api.maelyn.eu/api
  • Path / Endpoint: /ai/gemini
  • Method: POST
  • Credit Usage: 5
  • Authentication: x-maelyn-auth

Endpoint ini menyediakan akses ke model Gemini melalui API yang kompatibel dengan format OpenAI Chat Completions.


Authentication

Setiap request wajib menggunakan API key Maelyn melalui header x-maelyn-auth.

Content-Type: application/json
x-maelyn-auth: YOUR_API_KEY

Contoh:

curl -X POST "https://api.maelyn.eu/api/ai/gemini" \
  -H "Content-Type: application/json" \
  -H "x-maelyn-auth: YOUR_API_KEY" \
  -d '{
    "query": "Halo, jelaskan apa itu Artificial Intelligence"
  }'

Request Body

Request paling sederhana dapat dilakukan menggunakan field query.

{
  "query": "Jelaskan apa itu Artificial Intelligence"
}

Model yang digunakan secara default adalah:

gemini-3.6-flash

Model dapat ditentukan secara manual menggunakan parameter model.

{
  "model": "gemini-3.6-flash",
  "query": "Jelaskan apa itu Artificial Intelligence"
}

Body Parameters

NameTypeRequiredDefaultDescription
querystringNo*-Pesan/input utama pengguna
textstringNo*-Alias dari query
promptstringNo*-Alias dari query
messagestringNo*-Alias dari query
messagesarrayNo-Conversation dalam format OpenAI
historyarrayNo-Riwayat percakapan, maksimal 10 message
modelstringNogemini-3.6-flashModel Gemini yang digunakan
streambooleanNofalseMengaktifkan streaming response
temperaturenumberNo-Mengatur tingkat variasi output
top_pnumberNo-Parameter nucleus sampling
max_tokensnumberNo-Maksimum token output
stopstring/arrayNo-Stop sequence
modestringNochatMode chat atau image
imagesarrayNo-Input gambar untuk image-related request
  • Salah satu dari query, text, prompt, message, atau messages harus tersedia untuk mode chat.

Available Models

Berikut model yang tersedia pada endpoint ini:

ModelDescription
gemini-3.6-flashLatest all-around model
gemini-3.5-flashAlias untuk backend Gemini 3.6 Flash
gemini-3.5-flash-thinkingModel dengan kemampuan reasoning/deep thinking
gemini-3.1-proModel Pro
gemini-autoPemilihan model secara otomatis
gemini-3.5-flash-thinking-liteReasoning dengan depth yang lebih adaptif
gemini-flash-liteModel ringan untuk response cepat

Jika model tidak termasuk dalam daftar yang didukung, request akan ditolak.


Chat

Simple Chat

Request paling sederhana:

{
  "query": "Apa itu Artificial Intelligence?"
}

Response:

{
  "success": true,
  "model": "gemini-3.6-flash",
  "stream": false,
  "result": {
    "id": "chatcmpl-1ece790360bf",
    "object": "chat.completion",
    "created": 1788540469,
    "text": "Artificial Intelligence adalah teknologi yang memungkinkan komputer...",
    "finish_reason": "stop",
    "usage": {
      "prompt_tokens": 10,
      "completion_tokens": 20,
      "total_tokens": 30
    }
  }
}

Model Selection

Model dapat dipilih melalui parameter model.

{
  "model": "gemini-3.5-flash-thinking",
  "query": "Analisis dampak kecerdasan buatan terhadap perkembangan teknologi."
}

Contoh menggunakan model Pro:

{
  "model": "gemini-3.1-pro",
  "query": "Buat analisis mendalam mengenai perkembangan AI."
}

Jika model tidak diberikan, API otomatis menggunakan:

gemini-3.6-flash

Conversation History

Endpoint mendukung conversation history menggunakan parameter history.

Maksimum history yang dapat dikirim adalah 10 message.

{
  "model": "gemini-3.6-flash",
  "history": [
    {
      "role": "user",
      "content": "Apa itu JavaScript?"
    },
    {
      "role": "assistant",
      "content": "JavaScript adalah bahasa pemrograman..."
    },
    {
      "role": "user",
      "content": "Apa kegunaannya?"
    },
    {
      "role": "assistant",
      "content": "JavaScript banyak digunakan untuk..."
    }
  ],
  "query": "Bagaimana cara mempelajarinya?"
}

Role yang didukung:

user
assistant
system

Contoh conversation:

{
  "history": [
    {
      "role": "user",
      "content": "Nama saya Budi."
    },
    {
      "role": "assistant",
      "content": "Halo Budi!"
    }
  ], 
  "query": "Siapa nama saya?"
}

Messages Format

Selain history, API juga mendukung format messages yang kompatibel dengan OpenAI Chat Completions.

{
  "model": "gemini-3.6-flash",
  "messages": [
    {
      "role": "system",
      "content": "Kamu adalah asisten pemrograman."
    },
    {
      "role": "user",
      "content": "Apa itu REST API?"
    },
    {
      "role": "assistant",
      "content": "REST API adalah..."
    },
    {
      "role": "user",
      "content": "Berikan contohnya."
    }
  ]
}

Maksimum messages yang dapat dikirim adalah 10 message.

Format ini cocok digunakan apabila aplikasi kamu sudah menggunakan struktur OpenAI-compatible messages.


Streaming

Streaming dapat diaktifkan dengan:

{
  "model": "gemini-3.6-flash",
  "query": "Jelaskan sejarah perkembangan komputer.",
  "stream": true
}

Jika stream tidak diberikan:

{
  "stream": false
}

akan digunakan secara default.

Non-Streaming

{
  "query": "Halo!",
  "stream": false
}

API akan menunggu sampai seluruh response selesai kemudian mengembalikan JSON.

Streaming

{
  "query": "Jelaskan apa itu machine learning.",
  "stream": true
}

Pada mode streaming, response dari upstream akan diteruskan sebagai Server-Sent Events (SSE).

Client dapat membaca response secara bertahap tanpa menunggu seluruh jawaban selesai.


Generation Parameters

API mendukung beberapa parameter generation yang kompatibel dengan format OpenAI.

Temperature

{
  "query": "Buatkan cerita pendek tentang AI.",
  "temperature": 0.8
}

Nilai yang lebih tinggi menghasilkan output yang cenderung lebih bervariasi.


Top P

{
  "query": "Jelaskan teknologi blockchain.",
  "top_p": 0.9
}

Max Tokens

{
  "query": "Jelaskan Artificial Intelligence secara detail.",
  "max_tokens": 1000
}

Stop

{
  "query": "Buatkan daftar bahasa pemrograman.",
  "stop": [
    "END"
  ]
}

Image Generation

Endpoint juga mendukung mode image menggunakan:

{
  "mode": "image"
}

Image generation menggunakan adapter image generation internal dan tidak menggunakan Google Gemini API key.

Contoh:

{
  "mode": "image",
  "prompt": "Anime girl with blue hair, futuristic city background"
}

Atau menggunakan query:

{
  "mode": "image",
  "query": "A futuristic cyberpunk city at night"
}

Image Editing

Mode image juga dapat digunakan untuk melakukan editing terhadap gambar.

Input gambar dapat diberikan dalam bentuk URL atau data yang didukung oleh adapter image.

Contoh menggunakan URL:

{
  "mode": "image",
  "prompt": "Ubah background menjadi kota futuristik",
  "images": [
    "https://example.com/image.jpg"
  ]
}

Image Response

Contoh response ketika image generation berhasil:

{
  "success": true,
  "model": "flux",
  "mode": "image",
  "result": {
    "text": null,
    "images": [
      "https://cdn.maelyn.eu/generated-image.png"
    ],
    "finish_reason": "stop",
    "usage": null
  }
}

Field images berisi hasil gambar yang dihasilkan oleh image adapter.


Response Structure

Response chat menggunakan struktur:

{
  "success": true,
  "model": "gemini-3.6-flash",
  "stream": false,
  "result": {
    "id": "chatcmpl-...",
    "object": "chat.completion",
    "created": 1788540469,
    "text": "Response dari model...",
    "finish_reason": "stop",
    "usage": {
      "prompt_tokens": 10,
      "completion_tokens": 20,
      "total_tokens": 30
    }
  }
}

Response Fields

FieldDescription
successStatus request
modelModel yang digunakan
streamStatus streaming
result.idID completion
result.objectTipe object response
result.createdUnix timestamp
result.textResponse teks dari AI
result.finish_reasonAlasan generation selesai
result.usageInformasi penggunaan token

Error Responses

Invalid JSON

Terjadi ketika body request bukan JSON yang valid.

{
  "success": false,
  "error": "INVALID_JSON",
  "message": "Body request harus berupa JSON"
}

Invalid Body

Terjadi ketika body request tidak memiliki format yang sesuai.

{
  "success": false,
  "error": "INVALID_BODY",
  "message": "Body request tidak valid"
}

Query Required

Terjadi ketika request chat tidak memiliki input.

{
  "success": false,
  "error": "QUERY_REQUIRED",
  "message": "Field query wajib diisi"
}

Gunakan salah satu:

query
text
prompt
message
messages

Invalid History

Format history tidak valid.

{
  "success": false,
  "error": "INVALID_HISTORY",
  "message": "Format history tidak valid"
}

Invalid History Message

Salah satu message dalam history memiliki format yang tidak valid.

{
  "success": false,
  "error": "INVALID_HISTORY_MESSAGE",
  "message": "Format message pada history tidak valid"
}

History Limit Exceeded

Jumlah history melebihi batas maksimum 10 message.

{
  "success": false,
  "error": "HISTORY_LIMIT_EXCEEDED",
  "message": "History maksimal 10 message"
}

Invalid Message

Format messages tidak valid.

{
  "success": false,
  "error": "INVALID_MESSAGE",
  "message": "Format message tidak valid"
}

Model Not Supported

Model yang diminta tidak tersedia.

{
  "success": false,
  "error": "MODEL_NOT_SUPPORTED",
  "message": "Model yang dipilih tidak didukung"
}

Gunakan salah satu model yang tersedia pada bagian Available Models.


Upstream API Error

Terjadi masalah ketika API gagal mendapatkan response dari backend Gemini.

{
  "success": false,
  "error": "UPSTREAM_API_ERROR",
  "message": "Gagal mengambil respon dari Gemini"
}

Empty AI Response

Model tidak memberikan response yang dapat digunakan.

{
  "success": false,
  "error": "EMPTY_AI_RESPONSE",
  "message": "AI tidak memberikan response"
}

Request Timeout

Request terlalu lama dan melebihi batas waktu yang ditentukan.

{
  "success": false,
  "error": "REQUEST_TIMEOUT",
  "message": "Request ke AI mengalami timeout"
}

Fetch Failed

Terjadi kegagalan koneksi ke upstream API.

{
  "success": false,
  "error": "FETCH_FAILED",
  "message": "Gagal terhubung ke AI API"
}

Image Generation Failed

Image generation atau image editing gagal.

{
  "success": false,
  "error": "IMAGE_GENERATION_FAILED",
  "message": "Gagal menghasilkan gambar"
}

Internal Server Error

Terjadi kesalahan internal pada Maelyn API.

{
  "success": false,
  "error": "INTERNAL_SERVER_ERROR",
  "message": "Terjadi kesalahan pada sistem"
}

Complete Examples

Basic Request

curl -X POST "https://api.maelyn.eu/api/ai/gemini" \
  -H "Content-Type: application/json" \
  -H "x-maelyn-auth: YOUR_API_KEY" \
  -d '{
    "query": "Apa itu machine learning?"
  }'

Select Model

curl -X POST "https://api.maelyn.eu/api/ai/gemini" \
  -H "Content-Type: application/json" \
  -H "x-maelyn-auth: YOUR_API_KEY" \
  -d '{
    "model": "gemini-3.5-flash-thinking",
    "query": "Jelaskan cara kerja neural network."
  }'

Conversation

{
  "model": "gemini-3.6-flash",
  "history": [
    {
      "role": "user",
      "content": "Saya sedang belajar JavaScript."
    },
    {
      "role": "assistant",
      "content": "Bagus! JavaScript adalah bahasa yang banyak digunakan untuk web."
    }
  ],
  "query": "Apa yang harus saya pelajari selanjutnya?"
}

Streaming

{
  "model": "gemini-3.6-flash",
  "query": "Jelaskan perkembangan AI dari tahun ke tahun.",
  "stream": true
}

Image Generation

{
  "mode": "image",
  "model": "gemini-3.6-flash",
  "prompt": "A beautiful anime city at sunset"
}

Untuk mode image, model chat tidak digunakan sebagai engine image generation. Request akan diproses menggunakan image adapter internal (flux).


Playground