ГлавнаяДокументация
Меню документации — Какой endpoint выбрать

Какой endpoint выбрать

Ranvik API предлагает несколько endpoint'ов под разные задачи. Эта страница объясняет простым языком — куда слать запрос в зависимости от модели.

Правило по умолчанию: не уверены — берите /v1/chat/completions. Он работает для всех текстовых и чат-моделей: OpenAI, Gemini, Claude, Grok, DeepSeek, MiniMax. Остальные endpoint'ы нужны только для специальных возможностей.

Быстрая таблица

Вендор / семейство Endpoint Формат тела Когда использовать
openai (gpt-*, o3, o4-mini) /v1/chat/completions OpenAI Стандартный чат, стриминг, function calling
openai / xai /v1/responses OpenAI Responses API Встроенный веб-поиск или code interpreter
xai (grok-*) /v1/chat/completions OpenAI Стандартный чат
google (gemini-*) /v1/chat/completions OpenAI-совместимый Чат, стриминг, веб-поиск — всё через единый endpoint
anthropic (claude-*) /v1/chat/completions OpenAI Удобный путь — шлюз конвертирует автоматически
anthropic (claude-*) /v1/messages Anthropic-нативный Нужны нативные Claude-фичи: thinking, cache_control, top_k, mcp_servers — тогда только сюда
deepseek /v1/chat/completions OpenAI Стандартный чат; веб-поиск не поддерживается
mistral / minimax (minimax-m2-*) /v1/chat/completions OpenAI Стандартный чат; веб-поиск не поддерживается
MiniMax (minimax-m2-*) — reasoning-модель: в режиме response_format: json_object модель добавляет блок размышлений <think>...</think> перед JSON прямо в content (без отдельного поля reasoning_content). Для строгого JSON: парсите содержимое после </think>, либо используйте обычный текстовый режим и извлекайте JSON сами, либо берите модель с нативной поддержкой JSON (gpt-*, deepseek-*). Это поведение модели MiniMax, не Ranvik — мы проксируем ответ как есть.

Gemini: какие OpenAI-параметры принимает /v1/chat/completions

Модели gemini-* на /v1/chat/completions идут через OpenAI-совместимый эндпоинт Google. Он принимает подмножество OpenAI-имён, а не все. Нативные имена Gemini шлюз тут не транслирует — Google вернёт 400 Invalid JSON payload received. Unknown name ....

Принимаются: model, messages, stream, temperature, max_completion_tokens/max_tokens, top_p, stop, seed, response_format, reasoning_effort, tools, tool_choice, extra_body.

НЕ принимаются на /v1/chat/completions для Gemini: n, frequency_penalty, presence_penalty, logprobs, top_logprobs. Они вызовут 400 ... Unknown name "frequency_penalty". Нужны их аналоги (candidateCount, frequencyPenalty, presencePenalty, topK, logprobs) — используйте нативный POST /v1/google/generateContent (раздел «Gemini: нативный generateContent»).

Правильно — OpenAI-имена:

curl https://api.ranvik.ru/v1/chat/completions \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-flash",
    "messages": [{"role": "user", "content": "Привет!"}],
    "max_completion_tokens": 1024,
    "top_p": 0.9
  }'

Неправильно — нативные Gemini-имена (вызовет ошибку 400):

// НЕ ДЕЛАЙТЕ ТАК с /v1/chat/completions:
{
  "model": "gemini-2.5-flash",
  "contents": [...],
  "maxOutputTokens": 1024,   // ❌ — ошибка
  "candidateCount": 1,       // ❌ — ошибка
  "topP": 0.9                // ❌ — ошибка
}

Здесь не только имена параметров нативные — сам ключ contents тоже нативный Gemini; в OpenAI-формате это messages. Нативные имена работают только на /v1/google/generateContent.

Нативный Gemini нужен редко. Если нужна inlineData, code execution, fileData в оригинальном Google-формате, либо параметры которых нет в OpenAI-compat (topK, candidateCount, frequencyPenalty ...) — используйте pure-proxy endpoint POST /v1/google/generateContent (раздел «Gemini: нативный generateContent»). Для обычного чата — всегда /v1/chat/completions.

Готовые примеры

1. Любой чат (GPT / Gemini / Claude / DeepSeek / Grok / MiniMax)

Один и тот же endpoint и формат для всех — меняется только model:

curl https://api.ranvik.ru/v1/chat/completions \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-pro",
    "messages": [{"role": "user", "content": "Что такое нейросеть?"}]
  }'
from openai import OpenAI

client = OpenAI(api_key="rk_live_...", base_url="https://api.ranvik.ru/v1")
resp = client.chat.completions.create(
    model="gemini-2.5-pro",   # или "gpt-4o", "deepseek-v4", "grok-4.3" ...
    messages=[{"role": "user", "content": "Что такое нейросеть?"}],
)
print(resp.choices[0].message.content)

2. Claude — через /v1/chat/completions (проще)

curl https://api.ranvik.ru/v1/chat/completions \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4",
    "messages": [{"role": "user", "content": "Привет!"}]
  }'

3. Claude — через /v1/messages (нативный, для продвинутых фич)

Используйте этот путь только когда нужны нативные Anthropic-параметры: thinking, cache_control, top_k, mcp_servers. Тело запроса — Anthropic-формат:

curl https://api.ranvik.ru/v1/messages \
  -H "x-api-key: rk_live_..." \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4",
    "max_tokens": 16000,
    "thinking": {"type": "enabled", "budget_tokens": 10000},
    "messages": [{"role": "user", "content": "Реши задачу шаг за шагом"}]
  }'

4. GPT / Grok — с веб-поиском через /v1/responses

curl https://api.ranvik.ru/v1/responses \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "input": "Что случилось в AI-мире на этой неделе?",
    "tools": [{"type": "web_search"}]
  }'
from openai import OpenAI

client = OpenAI(api_key="rk_live_...", base_url="https://api.ranvik.ru/v1")
resp = client.responses.create(
    model="gpt-4o",
    input="Что случилось в AI-мире на этой неделе?",
    tools=[{"type": "web_search"}],
)
print(resp.output_text)