Документация Weatmood API
Единый шлюз к GPT, Claude, Gemini, DeepSeek, Grok и другим моделям. Полная совместимость с [OI] и Anthropic SDK, а также с популярными coding-агентами.
Скопируй нужный адрес и вставь в свой клиент:
wm_твой_ключ в примерах ниже.
Введение
Weatmood — прокси-шлюз к ведущим AI-моделям. Ты платишь за токены по нашему прайсу (дешевле, чем напрямую), а API остаётся на 100% совместимым с оригинальными SDK. Меняется только адрес и ключ — код остаётся прежним.
| Параметр | Значение |
|---|---|
| Base URL | https://weatmood.com/v1 |
| Base URL (РФ) | https://weatmood.ru/v1 |
| [OI]-эндпоинт | POST /v1/chat/completions |
| Anthropic-эндпоинт | POST /v1/messages |
| Авторизация | Authorization: Bearer wm_... |
| Формат ответа | JSON / SSE (стриминг) |
| Поддержка | [OI] SDK, Anthropic SDK, LangChain, LlamaIndex, Anthropic, Cursor, Cline |
Авторизация
API-ключ создаётся в Telegram-боте: @weatmood_bot → 🔑 API ключ → «➕ Создать ключ». Ключ выглядит как wm_ + 40 hex-символов.
Способы передачи ключа
| Заголовок | Когда использовать |
|---|---|
Authorization: Bearer wm_... | Стандарт для [OI]-совместимых клиентов |
x-api-key: wm_... | Официальный Anthropic SDK |
# Оба варианта равнозначны
curl https://weatmood.com/v1/chat/completions \
-H "Authorization: Bearer wm_твой_ключ" ...
curl https://weatmood.com/v1/messages \
-H "x-api-key: wm_твой_ключ" \
Быстрый старт
pythonfrom openai import OpenAI
client = OpenAI(
api_key="wm_твой_ключ",
base_url="https://weatmood.com/v1",
)
resp = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{"role": "system", "content": "Ты полезный ассистент."},
{"role": "user", "content": "Привет!"},
],
)
print(resp.choices[0].message.content)
print("токенов:", resp.usage.total_tokens)
pythonfrom anthropic import Anthropic
client = Anthropic(
api_key="wm_твой_ключ",
base_url="https://weatmood.com",
)
msg = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="Ты полезный ассистент.",
messages=[{"role": "user", "content": "Привет!"}],
)
print(msg.content[0].text)
print("токенов:", msg.usage.input_tokens + msg.usage.output_tokens)
javascriptimport OpenAI from "openai";
const client = new OpenAI({
apiKey: "wm_твой_ключ",
baseURL: "https://weatmood.com/v1",
});
const resp = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [{ role: "user", content: "Привет!" }],
});
console.log(resp.choices[0].message.content);
bashcurl https://weatmood.com/v1/chat/completions \
-H "Authorization: Bearer wm_твой_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "Привет!"}]
}'
Баланс и лимиты
Стоимость запроса складывается из фактического расхода токенов и фиксированной платы за обработку. Токены рассчитываются по тарифу модели: отдельно вход, выход и кеш.
Формула расчёта
стоимость = (токены_входа × цена_входа
+ токены_выхода × цена_выхода
+ кеш_запись × цена_кеш_записи
+ кеш_чтение × цена_кеш_чтения) / 1 000 000
+ 0,01 ₽ за запрос
За каждый авторизованный запрос генерации, прошедший проверку параметров, дополнительно списывается 0,01 ₽. Плата применяется независимо от числа возвращённых токенов и сохраняется, если внешний поставщик не смог завершить генерацию. Служебные запросы /v1/health, /v1/models и /v1/messages/count_tokens не тарифицируются.
Если баланс исчерпан, запрос вернёт 402. Текущий баланс и расход — в боте: @weatmood_bot → главное меню (баланс, потрачено всего, потрачено за 24 часа).
429 — используй экспоненциальный backoff при ретраях.
Chat Completions — [OI]-формат
Основной эндпоинт, полностью совместимый с [OI] Chat Completions API.
Параметры запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
model | string | да | ID модели, например deepseek-v4.1-flash |
messages | array | да | История: system, user, assistant, tool |
stream | bool | нет | Потоковая отдача через SSE |
temperature | number | нет | 0–2, случайность ответа |
top_p | number | нет | Nucleus sampling, 0–1 |
max_tokens | integer | нет | Лимит токенов ответа |
stop | string | array | нет | Стоп-последовательности |
tools | array | нет | Описание функций (function calling) |
tool_choice | string | object | нет | auto, none, required |
response_format | object | нет | {"type":"json_object"} для JSON-ответа |
frequency_penalty | number | нет | −2…2, штраф за повторы |
presence_penalty | number | нет | −2…2, штраф за новые темы |
user | string | нет | Идентификатор конечного пользователя |
Ответ
json{
"id": "chatcmpl-9f2b1c...",
"object": "chat.completion",
"created": 1730000000,
"model": "deepseek-v4.1-flash",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "Привет! Чем помочь?"},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 7,
"total_tokens": 25
}
}
Список моделей
json{
"object": "list",
"data": [
{"id": "glm-5.3-flash", "object": "model", "owned_by": "weatmood"},
{"id": "claude-sonnet-4-5", "object": "model", "owned_by": "anthropic"}
]
}
Messages — Anthropic-формат
Нативный формат Anthropic Messages API. Используй его с официальным SDK anthropic.
max_tokens — обязательное поле. Системный промпт передаётся отдельным полем system, а не в messages.Параметры запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
model | string | да | ID модели, например claude-sonnet-4-5 |
max_tokens | integer | да | Максимум токенов в ответе |
messages | array | да | role: user / assistant |
system | string | array | нет | Системный промпт |
stream | bool | нет | Потоковая отдача |
temperature | number | нет | 0–1 |
top_p, top_k | number | нет | Сэмплирование |
stop_sequences | array | нет | Стоп-последовательности |
tools | array | нет | Инструменты с input_schema |
tool_choice | object | нет | {"type":"auto"} и др. |
metadata | object | нет | {"user_id": "..."} |
Пример
bashcurl https://weatmood.com/v1/messages \
-H "x-api-key: wm_твой_ключ" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"system": "Ты senior Python-разработчик.",
"messages": [
{"role": "user", "content": "Напиши функцию debounce"}
]
}'
Ответ
json{
"id": "msg_01XyZ...",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-5",
"content": [
{"type": "text", "text": "Вот реализация debounce..."}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 24,
"output_tokens": 186,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}
Стриминг
Передай "stream": true — ответ придёт частями по Server-Sent Events. Это стандарт для чатов и coding-агентов: текст появляется по мере генерации, а не после полного ответа.
bashcurl https://weatmood.com/v1/chat/completions \
-H "Authorization: Bearer wm_твой_ключ" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4.1-flash","stream":true,
"messages":[{"role":"user","content":"Напиши хокку"}]}'
ssedata: {"choices":[{"delta":{"content":"Ста"}}]}
data: {"choices":[{"delta":{"content":"рый"}}]}
data: {"choices":[{"delta":{"content":" пруд"}}]}
data: [DONE]
sseevent: message_start
data: {"type":"message_start","message":{...}}
event: content_block_delta
data: {"type":"content_block_delta","delta":{"type":"text_delta","text":"Ста"}}
event: content_block_delta
data: {"type":"content_block_delta","delta":{"type":"text_delta","text":"рый"}}
event: message_stop
data: {"type":"message_stop"}
pythonstream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Напиши хокку"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
javascriptconst stream = await client.chat.completions.create({
model: "deepseek-v4.1-flash",
messages: [{ role: "user", content: "Напиши хокку" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
usage приходит в последнем чанке. Не обрывай соединение раньше, если нужен точный расход токенов.Tools / Function Calling
Модель может вызывать твои функции. Формат зависит от API.
json{
"model": "deepseek-v4.1-flash",
"messages": [{"role": "user", "content": "Какая погода в Москве?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Узнать погоду в городе",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}],
"tool_choice": "auto"
}
json{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Какая погода в Москве?"}],
"tools": [{
"name": "get_weather",
"description": "Узнать погоду в городе",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}]
}
Изображения (Vision)
Модели с поддержкой зрения принимают изображения в сообщении.
json{
"model": "glm-5.3-flash",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Что на картинке?"},
{"type": "image_url",
"image_url": {"url": "https://example.com/cat.jpg"}}
]
}]
}
Вместо URL можно передать base64: "url": "data:image/jpeg;base64,..."
json{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": [
{"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "..."
}},
{"type": "text", "text": "Что на картинке?"}
]
}]
}
Ошибки
| Код | Значение | Решение |
|---|---|---|
400 | Некорректный запрос | Проверь JSON и обязательные поля |
401 | Ключ неверен или отозван | Проверь ключ, перевыпусти в боте |
402 | Недостаточно средств | Пополни баланс |
403 | Модель недоступна | Выбери другую модель |
404 | Неверный путь | Проверь base_url и эндпоинт |
429 | Слишком много запросов | Backoff и повтор |
500 | Ошибка провайдера | Повтори запрос позже |
504 | Провайдер не ответил | Повтори, уменьши max_tokens |
json{
"error": {
"message": "Insufficient balance",
"type": "insufficient_quota",
"code": "balance_exhausted"
}
}
Интеграция: Anthropic
Anthropic — официальный CLI-агент Anthropic. Weatmood поддерживает его через переменные окружения.
Anthropic работает
Официальный терминальный агент
Настройка через переменные окружения
bashexport ANTHROPIC_BASE_URL="https://weatmood.com"
export ANTHROPIC_API_KEY="wm_твой_ключ"
# Запуск
claude
Чтобы не вводить каждый раз, добавь эти строки в ~/.bashrc, ~/.zshrc или ~/.config/fish/config.fish.
Через settings.json
json{
"env": {
"ANTHROPIC_BASE_URL": "https://weatmood.com",
"ANTHROPIC_API_KEY": "wm_твой_ключ",
"ANTHROPIC_MODEL": "claude-sonnet-4-5"
}
}
https://weatmood.ru — тот же ключ, тот же баланс.Проверка
bashclaude "объясни этот код" < main.py
# или интерактивно
claude
Интеграция: Codex
Codex CLI можно направить на Weatmood через [OI]-совместимый конфиг.
~/.codex/config.toml
toml[model_providers.weatmood]
name = "Weatmood"
base_url = "https://weatmood.com/v1"
env_key = "WEATMOOD_API_KEY"
[profiles.weatmood]
model = "glm-5.3-flash"
model_provider = "weatmood"
bashexport WEATMOOD_API_KEY="wm_твой_ключ"
codex --profile weatmood
Интеграция: OpenCode
OpenCode поддерживает кастомных [OI]-совместимых провайдеров.
~/.config/opencode/config.json
json{
"$schema": "https://opencode.ai/config.json",
"provider": {
"weatmood": {
"npm": "@ai-sdk/openai-compatible",
"name": "Weatmood",
"options": {
"baseURL": "https://weatmood.com/v1",
"apiKey": "wm_твой_ключ"
},
"models": {
"glm-5.3-flash": {"name": "GLM 5.3 Flash"},
"claude-sonnet-4-5": {"name": "Claude Sonnet 4.5"},
"deepseek-v4.1-flash": {"name": "DeepSeek V4.1 Flash"}
}
}
}
}
bashopencode --model weatmood/glm-5.3-flash
Интеграция: Cursor
- Открой Settings → Models
- Включи [OI] API Key и нажми Override [OI] Base URL
- Base URL:
https://weatmood.com/v1 - API Key: твой ключ
wm_... - Нажми Verify, затем добавь нужные модели в список
glm-5.3-flash или claude-sonnet-4-5.Интеграция: Cline / Roo Code
- Открой настройки Cline → API Provider
- Выбери [OI] Compatible
- Base URL:
https://weatmood.com/v1 - API Key:
wm_твой_ключ - Model ID: например
deepseek-v4.1-flash
json// Для Roo Code / Cline — JSON-конфиг провайдера
{
"openAiBaseUrl": "https://weatmood.com/v1",
"openAiApiKey": "wm_твой_ключ",
"openAiModelId": "glm-5.3-flash"
}
Интеграция: VS Code Continue
Файл ~/.continue/config.json:
json{
"models": [{
"title": "Weatmood GLM 5.3 Flash",
"provider": "openai",
"model": "glm-5.3-flash",
"apiKey": "wm_твой_ключ",
"apiBase": "https://weatmood.com/v1"
}]
}
SDK
Python
bashpip install openai # для [OI]-формата
pip install anthropic # для Anthropic-формата
Node.js
bashnpm install openai
npm install @anthropic-ai/sdk
Универсальная обёртка (Python)
pythonfrom openai import OpenAI
WEATMOOD_KEY = "wm_твой_ключ"
client = OpenAI(
api_key=WEATMOOD_KEY,
base_url="https://weatmood.com/v1",
)
def ask(prompt, model="deepseek-v4.1-flash", system=None):
messages = []
if system:
messages.append({"role": "system", "content": system})
messages.append({"role": "user", "content": prompt})
resp = client.chat.completions.create(model=model, messages=messages)
return resp.choices[0].message.content
print(ask("Привет!"))
curl & HTTP
Минимальный запрос без библиотек — только HTTP и JSON.
bash# Проверка ключа и списка моделей
curl https://weatmood.com/v1/models \
-H "Authorization: Bearer wm_твой_ключ"
# Диалог
curl https://weatmood.com/v1/chat/completions \
-H "Authorization: Bearer wm_твой_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [{"role":"user","content":"Привет!"}],
"temperature": 0.7
}'
Сырой HTTP
httpPOST /v1/chat/completions HTTP/1.1
Host: weatmood.com
Authorization: Bearer wm_твой_ключ
Content-Type: application/json
{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"Привет"}]}
Работа с изображениями и файлами
Модели Weatmood принимают изображения напрямую — передавай их в сообщении так же, как в [OI] API. Шлюз сам определит, как обработать вложение.
Изображения ([OI]-формат)
json{
"model": "glm-5.3-flash",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Что на изображении?"},
{"type": "image_url",
"image_url": {"url": "https://example.com/photo.jpg"}}
]
}]
}
Поддерживается и base64: "url": "data:image/png;base64,..."
Изображения (Anthropic-формат)
json{
"model": "glm-5.2",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": [
{"type": "image",
"source": {"type": "base64", "media_type": "image/png", "data": "..."}},
{"type": "text", "text": "Опиши подробно"}
]
}]
}
glm-5.3-flash, glm-5.2, deepseek-v4-flash
и deepseek-v4.1-flash принимают изображения через встроенную систему анализа медиа:
вложение обрабатывается отдельным модулем зрения, а его детальное описание передаётся модели.
Для тебя это выглядит как обычный запрос с картинкой — API-совместимость полная.
Модель gemini-3.8-flash
Эта модель понимает изображения нативно, без промежуточного анализа, и подходит для задач, где важна точность распознавания деталей.
Модели и цены
Цены указаны за 1 000 000 токенов в рублях: вход / выход / кеш-запись / кеш-чтение.
Контекст — максимальный размер запроса, макс. выход — предел длины ответа (в токенах).
| Модель | Контекст (вход) | Макс. выход | Вход | Выход | Кеш-з. | Кеш-чт. |
|---|---|---|---|---|---|---|
claude-opus-5 | 1 000 000 | 128 000 | 5 ₽ | 10 ₽ | 4 ₽ | 2 ₽ |
deepseek-v4.1-flash | 1 000 000 | 393 000 | 4 ₽ | 8 ₽ | 2 ₽ | 1 ₽ |
deepseek-v4-flash | 120 000 | 65 000 | Бесплатно до 20.09.2026 00:00 МСК, затем 10 / 15 / 2 / 1 ₽ | |||
glm-5.3-flash | 262 144 | 65 536 | Бесплатно до 20.09.2026 00:00 МСК, затем 3 / 5 / 2 / 1 ₽ | |||
glm-5.2 | 1 000 000 | 120 000 | 6 ₽ | 12 ₽ | 5 ₽ | 2 ₽ |
gemini-3.8-flash | 256 000 | 64 000 | 5 ₽ | 5 ₽ | — | — |
minimax-m2.7 | 200 000 | 16 000 | Бесплатно | |||
gpt-6-astra | 1 050 000 | 128 000 | 50 ₽ | 50 ₽ | — | — |
kimi-k3 | 1 048 576 | 262 144 | 6 ₽ | 6 ₽ | — | — |
glm-5.3 | 200 000 | 128 000 | 9 ₽ | 9 ₽ | — | — |
weatFlex-2B | 262 144 | 131 072 | Бесплатно | |||
laguna-xs-2.1 | 131 072 | 32 768 | Бесплатно | |||
nemotron-3-ultra-550b-a55b | 262 144 | 131 072 | Бесплатно | |||
К токеновой стоимости каждого запроса генерации, включая модели с бесплатными токенами, добавляется фиксированная плата за обработку 0,01 ₽.
Актуальный список с ценами всегда доступен командой 🧠 Модели в боте.
Кеширование промптов
Если ты отправляешь большой неизменяемый контекст (инструкции агента, документацию, кодовую базу), включи кеш — повторные запросы будут стоить значительно дешевле.
json{
"model": "claude-sonnet-4-5",
"max_tokens": 2048,
"system": [{
"type": "text",
"text": "Очень длинная инструкция или контекст...",
"cache_control": {"type": "ephemeral"}
}],
"messages": [{"role": "user", "content": "Вопрос по контексту"}]
}
Как читать расход
| Поле в usage | Что значит | Цена |
|---|---|---|
input_tokens | Обычные входные токены | полная цена входа |
cache_creation_input_tokens | Записано в кеш | цена кеш-записи |
cache_read_input_tokens | Прочитано из кеша | цена кеш-чтения (самая низкая) |
output_tokens | Сгенерировано моделью | цена выхода |
Маршрут для РФ
Для пользователей из России доступен домен weatmood.ru. Запросы идут через сервер в РФ, минуя блокировки, и полностью повторяют поведение основного домена.
| Основной | Для РФ | |
|---|---|---|
| Base URL | https://weatmood.com/v1 | https://weatmood.ru/v1 |
| Anthropic | https://weatmood.com | https://weatmood.ru |
| Ключ | общий | |
| Баланс | общий | |
bash# Для Anthropic CLI из РФ
export ANTHROPIC_BASE_URL="https://weatmood.ru"
export ANTHROPIC_API_KEY="wm_твой_ключ"
# Для Python из РФ
client = OpenAI(api_key="wm_ключ", base_url="https://weatmood.ru/v1")
/api/* и /v1/*. Остальные пути отдают 404 — это сделано намеренно.FAQ
Как узнать, сколько я потратил?
В боте @weatmood_bot на главном экране: баланс, потрачено всего и за 24 часа. Детализация — в «🕘 История».
Почему ответ пришёл не от той модели?
Проверь поле model в запросе и в ответе — оно должно совпадать. Если используешь агент, убедись, что модель задана в его конфиге, а не по умолчанию.
Можно ли использовать один ключ на нескольких устройствах?
Да, ключ не привязан к устройству. Для безопасности можешь создать несколько ключей и перевыпускать их по отдельности.
Что будет, если баланс кончится во время стрима?
Поток прервётся, а в ответе придёт ошибка 402. Списание за уже сгенерированные токены произойдёт.
Поддерживается ли fine-tuning или эмбеддинги?
Сейчас доступны chat-модели и vision. Эмбеддинги — в планах, напиши в поддержку, если нужны срочно.
Как перенести с официального [OI]?
Замени api_key и base_url — больше ничего менять не нужно.
Работает ли из России?
Да, используй weatmood.ru — трафик идёт через российский сервер.
Поддержка
Мы на связи и отвечаем быстро.
| Куда | Контакт | По каким вопросам |
|---|---|---|
| 🛠 Техподдержка | @Franceheal | API, оплата, ошибки, подключение |
| 👑 Владелец | @Modeldata | Сотрудничество, оптовые объёмы |
| 🤖 Бот | @weatmood_bot | Ключи, баланс, модели |