Перейти к основному содержанию

Documentation Index

Fetch the complete documentation index at: https://docs.ruapi.ai/llms.txt

Use this file to discover all available pages before exploring further.

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

OpenAI протокол

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

Claude протокол

POST /v1/messages — нативный формат Anthropic, поддерживает thinking блоки и MCP.

Базовый URL

https://www.ruapi.ai/v1
Все эндпоинты монтируются под /v1. Аутентификация — через заголовок Authorization: Bearer sk-....

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="gpt-4o-mini",
    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-3-5-sonnet-20241022", // можно вызывать 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": "gpt-4o-mini",
    "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-3-5-sonnet-20241022",
    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-3-5-sonnet-20241022",
  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-3-5-sonnet-20241022",
    "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-4o из 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Список доступных моделей
Полный список с актуальными моделями — в личном кабинете.