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:
Anthropic — без /v1 (SDK сам добавляет /v1/messages):
В таблицах эндпоинтов ниже пути указаны полностью — от корня домена. Аутентификация — через заголовок 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 / LlamaIndex OpenAI протокол Вы пишете нативный Anthropic-код, нужны thinking блоки Claude протокол Хотите вызвать Claude из существующего OpenAI-кода OpenAI протокол (мы конвертируем)Хотите вызвать gpt-5 из Anthropic SDK Claude протокол (мы конвертируем)
В любом случае — один и тот же 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Список доступных моделей
Полный список с актуальными моделями — на странице «Цены» основного сайта.