🔌 Gemini API прокси
gemini-3.6-flash.Базовый адрес и авторизация
https://rpek.tech/google-api/api
Токен передаётся в заголовке Authorization: Bearer <token>. Также принимаются X-Api-Key, x-goog-api-key и параметр ?key=. CORS открыт, можно звать прямо из браузера, но тогда токен увидят посетители сайта, поэтому лучше ходить с бэкенда.
curl https://rpek.tech/google-api/api/v1/me -H "Authorization: Bearer ТОКЕН"
1. Анализ картинки
Принимает картинку одним из трёх способов и возвращает структурированное описание (по умолчанию на русском, с lang=en на английском). JPG, PNG, WEBP, GIF, BMP, HEIC до 10 МБ.
| Способ | Как передать |
|---|---|
| multipart/form-data | поле image (файл), необязательно question, model, lang |
| application/json | {"image_base64": "...", "question": "...", "model": "...", "lang": "en"}, base64 можно с префиксом data: |
| по ссылке | {"image_url": "https://..."} или поле image_url в форме |
question: свой вопрос про картинку, ответ придёт в поле answer. model: имя модели Gemini, если нужна не дефолтная. lang: язык ответа, ru (по умолчанию), en, es, pt или tr; можно передать полем формы, в JSON-теле или в строке запроса ?lang=en. От него же зависит язык текстов ошибок.
curl
curl https://rpek.tech/google-api/api/v1/analyze \
-H "Authorization: Bearer ТОКЕН" \
-F "image=@photo.jpg" \
-F "question=Сколько людей на фото?"
PHP
$ch = curl_init('https://rpek.tech/google-api/api/v1/analyze');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ТОКЕН'],
CURLOPT_POSTFIELDS => ['image' => new CURLFile('photo.jpg'), 'question' => 'Что это?'],
CURLOPT_RETURNTRANSFER => true,
]);
$res = json_decode(curl_exec($ch), true);
echo $res['ok'] ? $res['description'] : 'Ошибка: ' . $res['error'];
JavaScript (Node / браузер)
const fd = new FormData();
fd.append('image', fileInput.files[0]);
fd.append('question', 'Что на картинке?');
const res = await fetch('https://rpek.tech/google-api/api/v1/analyze', {
method: 'POST', headers: { Authorization: 'Bearer ТОКЕН' }, body: fd,
});
const data = await res.json();
console.log(data.title, data.description, data.objects);
Python
import requests
r = requests.post('https://rpek.tech/google-api/api/v1/analyze',
headers={'Authorization': 'Bearer ТОКЕН'},
files={'image': open('photo.jpg', 'rb')},
data={'question': 'Что это за место?'})
print(r.json())
Ответ
{
"ok": true,
"model": "gemini-3.6-flash",
"title": "Рыжий кот на подоконнике",
"description": "На фото рыжий кот сидит на подоконнике и смотрит в окно...",
"objects": [{"name": "кот", "count": 1}, {"name": "окно", "count": 1}],
"tags": ["кот", "животные", "дом", "окно"],
"text": "", // текст с картинки, дословно
"people": 0,
"emotions": [], // эмоции лиц, если есть люди
"place": "", // место, если определяется
"colors": [{"name": "рыжий", "hex": "#d2691e"}],
"type": "фото", // фото | скриншот | рисунок | мем | документ | схема | логотип | другое
"nsfw": false,
"fun_fact": "...",
"answer": "", // ответ на question
"tokens": 1800 // потрачено токенов Gemini
}
С lang=en те же поля, значения на английском, а type один из: photo | screenshot | drawing | meme | document | diagram | logo | other.
При ошибке: {"ok": false, "error": "текст", "error_type": "unauthorized | rate_limited | too_large | unsupported_media | upstream_error | blocked | bad_request"} и соответствующий HTTP-код (401, 429, 413, 415, 502, 400).
2. Прозрачный прокси Gemini API
Всё, что идёт после /v1/gemini/, отправляется на generativelanguage.googleapis.com с серверным ключом. Тело запроса и ответ не меняются, стриминг (alt=sse) работает. Поэтому подходит любой официальный SDK: укажи baseUrl и передай свой токен вместо ключа Google.
curl
curl "https://rpek.tech/google-api/api/v1/gemini/v1beta/models/gemini-3.6-flash:generateContent" \
-H "Authorization: Bearer ТОКЕН" -H "Content-Type: application/json" \
-d '{"contents":[{"parts":[{"text":"Привет! Кто ты?"}]}]}'
Python, google-genai
from google import genai
client = genai.Client(api_key='ТОКЕН',
http_options={'base_url': 'https://rpek.tech/google-api/api/v1/gemini'})
r = client.models.generate_content(model='gemini-3.6-flash', contents='Привет!')
print(r.text)
JavaScript, @google/genai
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({ apiKey: 'ТОКЕН',
httpOptions: { baseUrl: 'https://rpek.tech/google-api/api/v1/gemini' } });
const r = await ai.models.generateContent({ model: 'gemini-3.6-flash', contents: 'Привет!' });
console.log(r.text);
Картинка через прокси (чистый REST)
{
"contents": [{ "parts": [
{ "inline_data": { "mime_type": "image/jpeg", "data": "<base64>" } },
{ "text": "Что на картинке? Ответь по-русски." }
]}]
}
Доступные модели: gemini-3.6-flash (по умолчанию, быстрая), gemini-3.1-pro-preview (умнее и медленнее), gemini-3.1-flash-lite. Список актуальных моделей: GET /v1/gemini/v1beta/models.
Ограничения
- Лимиты на токен (по умолчанию 30 запросов в минуту, 1000 в день) и общий дневной потолок на сервер. При превышении HTTP 429.
- Тело запроса до 20 МБ, картинка до 10 МБ.
- Картинки на сервере не сохраняются. В лог пишутся время, IP, имя клиента, метод, статус и число токенов.
- Сервис держится на бесплатной квоте Google, без гарантий доступности. Для продакшена с большим трафиком договаривайся отдельно.