Weeme public API

OpenAI-compatible API

Используйте Weeme как drop-in замену OpenAI API: поменяйте только `base_url` на https://weeme.ru/api/v1 и передайте ключ Weeme в заголовке Authorization.

Быстрый старт

  1. Зарегистрируйтесь в кабинете Weeme.
  2. Пополните баланс — и можно отправлять запросы.
  3. Создайте API key в разделе ключей.
  4. Отправьте запрос на https://weeme.ru/api/v1.
curl https://weeme.ru/api/v1/chat/completions \
  -H "Authorization: Bearer weeme-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o",
    "messages": [
      {"role": "user", "content": "Привет! Ответь в одну строку."}
    ]
  }'

Авторизация

Все публичные endpoints требуют Weeme API key. Сырой ключ показывается один раз при создании; в базе хранится только SHA-256 hash.

Production base URLhttps://weeme.ru/api/v1
Local backend URLhttp://localhost:8000/v1
HeaderAuthorization: Bearer weeme-...

POST /v1/chat/completions

Основной endpoint проксирует OpenAI-compatible chat completions к доступным моделям. Тело запроса остается в формате OpenAI SDK:model, messages, temperature,max_tokens, stream и другие параметры модели.

Python SDK

from openai import OpenAI

client = OpenAI(
    api_key="weeme-...",
    base_url="https://weeme.ru/api/v1",
)

response = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[
        {"role": "user", "content": "Суммируй текст в 3 пункта"}
    ],
)

print(response.choices[0].message.content)
print(response.usage.cost_rub)

JavaScript SDK

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "weeme-...",
  baseURL: "https://weeme.ru/api/v1",
});

const response = await client.chat.completions.create({
  model: "openai/gpt-4o",
  messages: [{ role: "user", content: "Напиши короткий план" }],
});

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

Ответ

{
  "id": "gen_...",
  "object": "chat.completion",
  "model": "openai/gpt-4o",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Готово."},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 4,
    "total_tokens": 22,
    "cost_rub": 0.042,
    "cost": 0.042
  }
}

Streaming

Передайте stream: true, чтобы получать Server-Sent Events. Списание выполняется один раз по usage chunk; финальная стоимость также приходит в usage.cost_rub.

curl https://weeme.ru/api/v1/chat/completions \
  -H "Authorization: Bearer weeme-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o",
    "stream": true,
    "messages": [{"role": "user", "content": "Пиши потоково"}]
  }'

GET /v1/models

Endpoint возвращает список моделей, доступных для вашего API key. Для публичного просмотра моделей и цен без ключа используйте страницу Модели и цены.

curl https://weeme.ru/api/v1/models \
  -H "Authorization: Bearer weeme-..."

Биллинг и стоимость запроса

Weeme списывает рубли после успешного ответа модели. В ответе полеusage.cost_rub и совместимое поле usage.costпоказывают финальную стоимость, которая списана с баланса. Для non-streaming ответов тот же рублевый результат продублирован в заголовке X-Weeme-Cost-Rub.

Если upstream вернул ошибку до успешной генерации, запрос передается клиенту без списания.

Ошибки

HTTPCodeОписание
401invalid_api_keyКлюч отсутствует, неверный или отозван.
402payment_requiredНедостаточно баланса или кредитного лимита.
429rate_limit_exceededСработал лимит запросов. Повторите позже.
4xx/5xxupstream_errorОшибка модели или провайдера; Weeme передает ее клиенту без списания.