Один ключ для всех AI-моделейСоздать аккаунтОплата в рублях, без VPN

ДокументацияClaude Messages API

Claude Messages API

POST /v1/messages принимает и возвращает нативный формат Anthropic Messages API. Используйте его с Claude Code, Anthropic SDK и другими клиентами, которые ожидают endpoint Anthropic, а не OpenAI.

Адрес

~/zenvy · plain
POST https://api.zenvy.su/v1/messages

Для Claude Code также доступен подсчёт токенов:

~/zenvy · plain
POST https://api.zenvy.su/v1/messages/count_tokens

Заголовки

ЗаголовокЗначение
x-api-keysk-zenvy-...
anthropic-version2023-06-01
Content-Typeapplication/json

Также поддерживается Authorization: Bearer sk-zenvy-... при ручных запросах.

Первый запрос

~/zenvy · zsh
curl https://api.zenvy.su/v1/messages \
  -H "x-api-key: sk-zenvy-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4.6",
    "max_tokens": 1024,
    "messages": [
      { "role": "user", "content": "Привет! Объясни, что такое Zenvy." }
    ]
  }'

Пример ответа

~/zenvy · json
{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4.6",
  "content": [
    {
      "type": "text",
      "text": "Zenvy — единый API для AI-моделей."
    }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 19,
    "output_tokens": 69
  }
}

input_tokens — входные токены, output_tokens — токены ответа. Стоимость считается по тем же ценам модели, что и у /v1/chat/completions.

Anthropic SDK

~/zenvy · typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.ZENVY_API_KEY,
  baseURL: "https://api.zenvy.su/v1"
});

const message = await client.messages.create({
  model: "claude-sonnet-4.6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Привет!" }]
});

console.log(message.content[0]);

Системный промпт и блоки контента

~/zenvy · json
{
  "model": "claude-sonnet-4.6",
  "max_tokens": 512,
  "system": "Отвечай кратко и по-русски.",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "Назови три идеи для названия продукта." }
      ]
    }
  ]
}

Если для маршрута доступен нативный Anthropic-compatible /v1/messages, Zenvy прокидывает запрос напрямую — сохраняются content blocks, streaming-события, thinking и tool-use. Иначе используется fallback через /v1/chat/completions с преобразованием non-text блоков в текст.

Стриминг

Передайте "stream": true, чтобы получить Anthropic SSE-события: message_start, content_block_delta, message_delta, message_stop.

~/zenvy · zsh
curl -N https://api.zenvy.su/v1/messages \
  -H "x-api-key: sk-zenvy-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4.6",
    "max_tokens": 1024,
    "stream": true,
    "messages": [{ "role": "user", "content": "Напиши одно предложение." }]
  }'

Поддерживаются temperature, top_p и stop_sequences.

Подсчёт токенов

POST /v1/messages/count_tokens возвращает оценку входных токенов в формате Anthropic API. Claude Code использует этот endpoint при планировании контекста.

~/zenvy · zsh
curl https://api.zenvy.su/v1/messages/count_tokens \
  -H "x-api-key: sk-zenvy-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4.6",
    "messages": [
      { "role": "user", "content": "Привет!" }
    ]
  }'

Ответ:

~/zenvy · json
{
  "input_tokens": 8
}