OpenAI SDK
Python: OpenAI(api_key=..., base_url="https://pinegate.xyz/v1"). Node.js: передай apiKey и baseURL. Используй актуальную версию SDK.
PINEGATE.DOCS
Один OpenAI-совместимый адрес для моделей разных провайдеров. Здесь — только рабочие примеры, параметры и решения частых ошибок.
https://pinegate.xyz/v1Pinegate — единая OpenAI-совместимая точка доступа к текстовым и embedding-моделям разных провайдеров. Один API-ключ, единый баланс и знакомый формат запросов.
| НАЗНАЧЕНИЕ | ЗНАЧЕНИЕ |
|---|---|
| Base URL | https://pinegate.xyz/v1 |
| Авторизация | Authorization: Bearer YOUR_API_KEY |
| Формат | OpenAI-compatible JSON |
| Каталог | GET /v1/models |
Если инструмент уже умеет работать с OpenAI API, обычно достаточно заменить base URL и вставить ключ Pinegate.
В кабинете открой раздел «Ключи» и скопируй новый API-ключ. Полный ключ показывается один раз.
https://pinegate.xyz/v1
Выбери модель из каталога. Списание происходит за фактически использованные токены.
Передавай ключ в каждом запросе через HTTP-заголовок:
Authorization: Bearer YOUR_API_KEYКаталог меняется без выпуска новой версии документации. Получай доступные именно твоему ключу модели через GET /v1/models.
curl https://pinegate.xyz/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"openai/gpt-5.6-sol — провайдер и конкретный маршрут.| METHOD | ENDPOINT | НАЗНАЧЕНИЕ | ПРОВЕРКА |
|---|---|---|---|
| GET | /v1/models | Список моделей, доступных ключу | 200 · 30 моделей |
| POST | /v1/chat/completions | Текст, streaming, tools и reasoning | 200 |
| POST | /v1/embeddings | Векторные представления для поиска и RAG | 200 |
Основной endpoint совместим с форматом Chat Completions.
| ПАРАМЕТР | ОБЯЗАТЕЛЬНО | ОПИСАНИЕ |
|---|---|---|
| model | да | ID модели из GET /v1/models |
| messages | да | Массив сообщений с role и content |
| stream | нет | Включает потоковый ответ SSE |
| max_tokens | нет | Ограничивает длину ответа |
Актуальный каталог не зашит в документацию: получай его запросом GET /v1/models или смотри страницу цен.
Добавь "stream": true, чтобы получать ответ частями. Сервер отправляет события data: {...}; завершение обозначается data: [DONE].
{
"model": "openai/gpt-5.6-sol",
"messages": [{"role":"user","content":"Hello"}],
"stream": true,
"stream_options": {"include_usage": true}
}choices[0].delta.content.include_usage просит финальную статистику usage, если маршрут её поддерживает.Проверенная модель openai/gpt-5.4-nano может выбрать описанную тобой функцию, но Pinegate не выполняет её за тебя. Приложение получает tool_calls, вызывает свой код и отправляет результат следующим сообщением с ролью tool.
{
"model": "openai/gpt-5.4-nano",
"messages": [{"role":"user","content":"Какая погода в Казани?"}],
"tools": [{"type":"function","function":{
"name":"get_weather",
"description":"Получить погоду",
"parameters":{"type":"object","properties":{
"city":{"type":"string"}
},"required":["city"]}
}}]
}finish_reason: "tool_calls" и один вызов функции.Векторные представления нужны для семантического поиска, кластеризации и RAG.
curl https://pinegate.xyz/v1/embeddings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"baai/bge-m3-embedding","input":["Первый текст","Второй текст"]}'В ответе массив data[].embedding. Размерность зависит от модели. Не смешивай в одном индексе векторы, созданные разными моделями.
Для моделей с управляемым рассуждением передавай уровень через reasoning_effort.
{
"model": "openai/gpt-5.6-sol",
"messages": [{"role": "user", "content": "Solve this carefully"}],
"reasoning_effort": "high"
}| VALUE | СМЫСЛ |
|---|---|
| none | Без отдельного рассуждения; быстрее и дешевле |
| low | Лёгкий анализ |
| medium | Баланс скорости и глубины |
| high | Глубокое рассуждение |
| xhigh | Максимальный подтверждённый режим для openai/gpt-5.6-sol |
Не-streaming ответ содержит объект usage. В live-тесте Pinegate вернул токены и точную стоимость запроса.
"usage": {
"prompt_tokens": 11,
"completion_tokens": 19,
"total_tokens": 30,
"completion_tokens_details": {"reasoning_tokens": 12},
"cost": 0.00008514
}| prompt_tokens | Число входных токенов |
| completion_tokens | Выход модели, включая reasoning-токены |
| reasoning_tokens | Токены рассуждения, если модель их сообщает |
| cost | Стоимость запроса в долларах, возвращённая Pinegate |
Pinegate работает по предоплате: расходы списываются с баланса по фактическому использованию конкретной модели.
| СИТУАЦИЯ | HTTP | ЧТО ДЕЛАТЬ |
|---|---|---|
| Неверный JSON или параметр | 400 | Упрости запрос до model + messages |
| Ключ отсутствует или неверный | 401 | Проверь Bearer, пробел и полный ключ |
| Недостаточно баланса | 403 | Пополни баланс и повтори запрос |
| Лимит запросов | 429 | Используй retry с jitter и задержкой |
| Модель недоступна | 503 | Проверь точный ID через GET /v1/models |
| Временная проблема gateway/upstream | 5xx | Повтори с exponential backoff |
Везде используется один адрес и один ключ. Названия полей отличаются у конкретных приложений.
Python: OpenAI(api_key=..., base_url="https://pinegate.xyz/v1"). Node.js: передай apiKey и baseURL. Используй актуальную версию SDK.
Открой настройки Models / OpenAI API, включи собственный API key, укажи ключ Pinegate и Override OpenAI Base URL: https://pinegate.xyz/v1.
API Connections → Chat Completion → Custom (OpenAI-compatible). Вставь base URL и ключ, затем выбери ID модели без переименования.
Добавь Pinegate как OpenAI-совместимого custom provider с base_url https://pinegate.xyz/v1 и ключом из переменной окружения.
Ищи поля OpenAI-compatible, Base URL, API endpoint или Custom provider. Если приложение само дописывает /v1, укажи адрес без повторного /v1.
Сначала вызови GET /v1/models. Затем отправь минимальный Chat Completions без streaming, tools и дополнительных параметров. После этого включай функции по одной.
Если поле называется Base URL — обычно укажи https://pinegate.xyz/v1. Если клиент сам добавляет /v1, используй адрес без дублирования.
OpenAI-совместимость описывает форму API, но не гарантирует поддержку каждой функции конкретной моделью. Убери спорный параметр и проверь документацию маршрута.
Проверь finish_reason, лимит output/max_tokens, размер контекста и timeout клиента.
UTC-время, endpoint, модель, HTTP-код, безопасный фрагмент ошибки и request_id. Никогда не отправляй API-ключ, полный приватный prompt или персональные данные.