OpenAI-compatible API
Используйте Weeme как drop-in замену OpenAI API: поменяйте только `base_url` на https://weeme.ru/api/v1 и передайте ключ Weeme в заголовке Authorization.
Быстрый старт
- Зарегистрируйтесь в кабинете Weeme.
- Пополните баланс — и можно отправлять запросы.
- Создайте API key в разделе ключей.
- Отправьте запрос на
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 URL | https://weeme.ru/api/v1 |
|---|---|
| Local backend URL | http://localhost:8000/v1 |
| Header | Authorization: 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.
Ошибки
| HTTP | Code | Описание |
|---|---|---|
| 401 | invalid_api_key | Ключ отсутствует, неверный или отозван. |
| 402 | payment_required | Недостаточно баланса или кредитного лимита. |
| 429 | rate_limit_exceeded | Сработал лимит запросов. Повторите позже. |
| 4xx/5xx | upstream_error | Ошибка модели или провайдера; Weeme передает ее клиенту без списания. |