Перейти к основному содержанию
RuAPI поддерживает два API-протокола одновременно: классический OpenAI-совместимый и нативный Anthropic Claude-совместимый. Один и тот же API ключ работает с обоими.

OpenAI протокол

POST /v1/chat/completions — стандарт индустрии, поддержан почти всеми SDK и фреймворками.

Claude протокол

POST /v1/messages — нативный формат Anthropic, поддерживает thinking блоки и MCP.
Шпаргалка:
OpenAI-совместимыйAnthropic
base_urlhttps://www.ruapi.ai/v1https://www.ruapi.ai (без /v1)
ЭндпоинтPOST /v1/chat/completionsPOST /v1/messages
Заголовок авторизацииAuthorization: Bearer sk-...x-api-key: sk-...

Базовый URL

Адрес зависит от протокола — это главное, где можно ошибиться: OpenAI-совместимый — с /v1:
https://www.ruapi.ai/v1
Anthropic — без /v1 (SDK сам добавляет /v1/messages):
https://www.ruapi.ai
В таблицах эндпоинтов ниже пути указаны полностью — от корня домена. Аутентификация — через заголовок Authorization: Bearer sk-... (на /v1/messages подходит и x-api-key).
Для Anthropic не добавляйте /v1 в base_url — лишний /v1 приведёт к ошибке 404.

OpenAI протокол

Используйте этот протокол, если у вас уже есть код на официальном OpenAI SDK или совместимом фреймворке (LangChain, LlamaIndex, Vercel AI SDK и т. д.).

Эндпоинт

POST https://www.ruapi.ai/v1/chat/completions

Совместимость

Запрос/ответ совпадают с OpenAI Chat Completions API. Поддерживаются:
  • messages (с ролями system / user / assistant / tool)
  • model — имя любой модели из каталога (включая Claude/Gemini/Grok — мы конвертируем на лету)
  • stream: true для streaming-ответов (Server-Sent Events)
  • tools / tool_choice для function calling
  • temperature, top_p, max_tokens и другие параметры

Пример: Python (OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    api_key="sk-ВАШ_КЛЮЧ",
    base_url="https://www.ruapi.ai/v1",
)

response = client.chat.completions.create(
    model="claude-opus-4-8",  # доступные модели — на странице цен основного сайта
    messages=[
        {"role": "system", "content": "Ты дружелюбный ассистент."},
        {"role": "user", "content": "Привет! Что ты умеешь?"},
    ],
    temperature=0.7,
)

print(response.choices[0].message.content)
print(f"Использовано токенов: {response.usage.total_tokens}")

Пример: Node.js (OpenAI SDK)

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-ВАШ_КЛЮЧ",
  baseURL: "https://www.ruapi.ai/v1",
});

const response = await client.chat.completions.create({
  model: "claude-opus-4-8", // можно вызывать Claude через OpenAI протокол; доступные модели — на странице цен основного сайта
  messages: [
    { role: "user", content: "Объясни квантовую запутанность простыми словами." },
  ],
});

console.log(response.choices[0].message.content);

Пример: curl + streaming

curl https://www.ruapi.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-8",
    "messages": [{"role": "user", "content": "Напиши хокку про код."}],
    "stream": true
  }'

Claude протокол

Используйте этот протокол, если ваш код написан под Anthropic SDK или вам нужны функции, специфичные для Claude (thinking-блоки, structured tool calls в нативном формате).

Эндпоинт

POST https://www.ruapi.ai/v1/messages

Совместимость

Запрос/ответ совпадают с Anthropic Messages API. Поддерживаются:
  • messages массив (нативный Claude формат)
  • system как отдельное поле
  • model — имя Claude-модели или любой другой (мы конвертируем под Claude-протокол)
  • max_tokens (обязательный для Claude)
  • stream: true
  • tools / tool_choice
  • thinking для рассуждающих моделей

Пример: Python (Anthropic SDK)

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-ВАШ_КЛЮЧ",
    base_url="https://www.ruapi.ai",
)

response = client.messages.create(
    model="claude-opus-4-8",  # доступные модели — на странице цен основного сайта
    max_tokens=1024,
    system="Ты технический эксперт.",
    messages=[
        {"role": "user", "content": "Что такое CAP-теорема?"},
    ],
)

print(response.content[0].text)
print(f"Использовано: input={response.usage.input_tokens}, output={response.usage.output_tokens}")

Пример: Node.js (Anthropic SDK)

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-ВАШ_КЛЮЧ",
  baseURL: "https://www.ruapi.ai",
});

const response = await client.messages.create({
  model: "claude-opus-4-8", // доступные модели — на странице цен основного сайта
  max_tokens: 1024,
  messages: [
    { role: "user", content: "Объясни принцип работы Rust borrow checker." },
  ],
});

console.log(response.content[0].text);

Пример: curl

curl https://www.ruapi.ai/v1/messages \
  -H "x-api-key: sk-ВАШ_КЛЮЧ" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-8",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Напиши хокку про код."}]
  }'
Anthropic SDK ожидает заголовок x-api-key вместо Authorization: Bearer. RuAPI принимает оба варианта на эндпоинте /v1/messages.

Какой протокол выбрать

СценарийИспользуйте
Вы уже на OpenAI SDK / LangChain / LlamaIndexOpenAI протокол
Вы пишете нативный Anthropic-код, нужны thinking блокиClaude протокол
Хотите вызвать Claude из существующего OpenAI-кодаOpenAI протокол (мы конвертируем)
Хотите вызвать gpt-5 из Anthropic SDKClaude протокол (мы конвертируем)
В любом случае — один и тот же API ключ, цена за токен не меняется, баланс общий.

Список всех эндпоинтов

МетодПутьНазначение
POST/v1/chat/completionsOpenAI Chat Completions
POST/v1/messagesClaude Messages
POST/v1/embeddingsЭмбеддинги (OpenAI совместимо)
POST/v1/images/generationsГенерация изображений (OpenAI совместимо)
POST/v1/audio/transcriptionsWhisper транскрипция
POST/v1/audio/speechTTS — синтез речи
GET/v1/modelsСписок доступных моделей
Полный список с актуальными моделями — на странице «Цены» основного сайта.