Перейти к основному содержанию
POST https://api.ethereal.llc/v1/messages
Нативный эндпоинт Anthropic. Формат запроса и ответа совпадает с Anthropic Messages API, поэтому работают официальные SDK Anthropic — достаточно указать в base_url адрес https://api.ethereal.llc/v1 и использовать ключ eth-....

Заголовки

ЗаголовокЗначение
AuthorizationBearer eth-... (или x-api-key: eth-...)
Content-Typeapplication/json

Параметры тела

model
string
обязательно
ID модели: claude-opus-4-8, claude-sonnet-4-6 или claude-haiku-4-5.
messages
array
обязательно
Список сообщений. Каждое — { "role": "user" | "assistant", "content": ... }, где content — строка или массив блоков контента (text, image, tool_use, tool_result).
max_tokens
integer
обязательно
Максимум токенов для генерации.
system
string | array
Системный промпт. Строка или массив текстовых блоков.
stream
boolean
по умолчанию:"false"
Если true — ответ приходит потоком (SSE). См. Стриминг.
tools
array
Описания инструментов в формате Anthropic: { "name": string, "description": string, "input_schema": object }.
temperature
number
Температура сэмплинга. Меньше — детерминированнее.
top_p
number
Nucleus sampling, альтернатива temperature.
stop_sequences
string[]
Последовательности, на которых генерация останавливается.

Пример запроса

curl https://api.ethereal.llc/v1/messages \
  -H "x-api-key: eth-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 200,
    "system": "Ты лаконичный ассистент.",
    "messages": [
      { "role": "user", "content": "Объясни рекурсию в одном предложении." }
    ]
  }'

Примеры через SDK

import anthropic

client = anthropic.Anthropic(
    base_url="https://api.ethereal.llc/v1",
    api_key="eth-...",
)

msg = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=200,
    messages=[{"role": "user", "content": "Объясни рекурсию в одном предложении."}],
)
print(msg.content[0].text)

Ответ

{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4-6",
  "content": [
    { "type": "text", "text": "Рекурсия — это когда функция вызывает саму себя до достижения базового случая." }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": { "input_tokens": 28, "output_tokens": 17 }
}
Когда модель вызывает инструмент, в content появляется блок tool_use, а stop_reason становится tool_use:
{
  "type": "tool_use",
  "id": "toolu_...",
  "name": "get_weather",
  "input": { "city": "Paris" }
}
Вызов инструментов и стриминг поддерживаются. Про потоковые ответы (stream: true) — см. Стриминг.