curl -X POST https://api-llm.sunra.ai/v1/messages \
-H "Authorization: Bearer <SUNRA_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, how are you?"
}
]
}'
import requests
response = requests.post(
"https://api-llm.sunra.ai/v1/messages",
headers={
"Authorization": "Bearer <SUNRA_KEY>",
"Content-Type": "application/json"
},
json={
"model": "anthropic/claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, how are you?"}
]
}
)
print(response.json())
const response = await fetch("https://api-llm.sunra.ai/v1/messages", {
method: "POST",
headers: {
"Authorization": "Bearer <SUNRA_KEY>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "anthropic/claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [
{ role: "user", content: "Hello, how are you?" }
]
})
});
const data = await response.json();
console.log(data);
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! I'm doing well, thank you for asking. How can I help you today?"
}
],
"model": "anthropic/claude-sonnet-4-20250514",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 19,
"total_tokens": 31,
"sunra_usage_semantics": "anthropic.exclusive.v1"
}
}
LLM
Create a message
POST
/
v1
/
messages
curl -X POST https://api-llm.sunra.ai/v1/messages \
-H "Authorization: Bearer <SUNRA_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, how are you?"
}
]
}'
import requests
response = requests.post(
"https://api-llm.sunra.ai/v1/messages",
headers={
"Authorization": "Bearer <SUNRA_KEY>",
"Content-Type": "application/json"
},
json={
"model": "anthropic/claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, how are you?"}
]
}
)
print(response.json())
const response = await fetch("https://api-llm.sunra.ai/v1/messages", {
method: "POST",
headers: {
"Authorization": "Bearer <SUNRA_KEY>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "anthropic/claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [
{ role: "user", content: "Hello, how are you?" }
]
})
});
const data = await response.json();
console.log(data);
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! I'm doing well, thank you for asking. How can I help you today?"
}
],
"model": "anthropic/claude-sonnet-4-20250514",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 19,
"total_tokens": 31,
"sunra_usage_semantics": "anthropic.exclusive.v1"
}
}
Создаёт сообщение в формате API Anthropic Messages. Поддерживает текст, изображения, PDF, инструменты и расширенное мышление.
Аутентификация
string
обязательно
Bearer-токен. Используйте ваш API-ключ в качестве Bearer-токена в заголовке Authorization.Формат:
Bearer <SUNRA_KEY>Запрос
Этот эндпоинт принимает объект.string
обязательно
Модель, которая завершит ваш промпт. Просмотрите доступные модели на sunra.ai/models.
object[]
обязательно
Входные сообщения. Каждое входное сообщение имеет
role и content.Показать properties
Показать properties
string
обязательно
Роль автора сообщения. Поддерживаемые значения:
user, assistant.string | object[]
обязательно
Содержание сообщения. Может быть одной строкой или массивом блоков контента.
Показать content block types
Показать content block types
string
обязательно
Тип блока контента. Поддерживаемые значения:
text, image, tool_use, tool_result.string
Текстовое содержание. Используется, когда type —
text.object
Источник изображения. Используется, когда type —
image.Показать properties
Показать properties
string
обязательно
Тип источника. Поддерживаемые значения:
base64, url.string
обязательно
Медиатип изображения. Например,
image/jpeg, image/png, image/gif, image/webp.string
Данные изображения в кодировке base64. Обязательно, когда тип источника —
base64.string
URL изображения. Обязательно, когда тип источника —
url.integer
обязательно
Максимальное количество токенов для генерации перед остановкой. Обратите внимание, что модель может остановиться до достижения этого максимума.
string | object[]
Системный промпт. Способ предоставления контекста и инструкций модели. Может быть строкой или массивом блоков контента.
boolean
по умолчанию:false
Передавать ли ответ в потоковом режиме с использованием Server-Sent Events (SSE).
number
по умолчанию:1
Степень случайности, добавляемая в ответ. Диапазон от 0.0 до 1.0. Используйте
temperature ближе к 0.0 для аналитических задач/задач с множественным выбором и ближе к 1.0 для творческих и генеративных задач.number
Использовать nucleus-сэмплирование. При nucleus-сэмплировании мы вычисляем кумулятивное распределение по всем вариантам для каждого последующего токена в порядке убывания вероятности и обрезаем его, когда оно достигает определённой вероятности, заданной
top_p.integer
Сэмплирование только из верхних K вариантов для каждого последующего токена. Используется для удаления маловероятных ответов из «длинного хвоста». Рекомендуется только для продвинутых случаев использования.
string[]
Пользовательские текстовые последовательности, которые заставят модель прекратить генерацию. Возвращённый текст не будет содержать стоп-последовательность.
object[]
object
Как модель должна использовать предоставленные инструменты.
object
Объект, описывающий метаданные запроса.
Показать properties
Показать properties
string
Внешний идентификатор пользователя, связанного с запросом.
object
Ответ
Успешный ответ сообщения.string
Уникальный идентификатор сообщения, например
msg_01XFDUDYJgAACzvnptvVoYEL.string
Тип объекта. Всегда
message.string
Роль сгенерированного сообщения в беседе. Всегда
assistant.object[]
Контент, сгенерированный моделью. Это массив блоков контента.
Показать properties
Показать properties
string
Тип блока контента. Может быть
text, tool_use или thinking.string
Сгенерированный текст. Присутствует, когда type —
text.string
Идентификатор блока использования инструмента. Присутствует, когда type —
tool_use.string
Имя инструмента. Присутствует, когда type —
tool_use.object
Входные данные инструмента. Присутствует, когда type —
tool_use.string
Содержание размышлений. Присутствует, когда type —
thinking.string
Модель, обработавшая запрос.
string | null
Причина остановки модели. Может быть
end_turn (модель достигла естественной точки остановки), max_tokens (превышен max_tokens или максимум модели), stop_sequence (сгенерирована одна из ваших пользовательских стоп-последовательностей) или tool_use (модель вызвала один или несколько инструментов).string | null
Какая пользовательская стоп-последовательность была сгенерирована, если таковая имеется.
object
Использование для выставления счетов и ограничения скорости. Три входные корзины взаимоисключающие — см. Использование токенов.
Показать properties
Показать properties
integer
Количество использованных свежих входных токенов. Исключает обе корзины кэша.
integer
Количество использованных выходных токенов.
integer
Все входные корзины плюс
output_tokens. Не включается в потоковые ответы.integer
Количество входных токенов, использованных для создания записи кэша.
integer
Количество входных токенов, прочитанных из кэша.
string | null
Присутствует со значением
anthropic.exclusive.v1, когда Sunra нормализовала этот ответ. Проверяйте это значение, а не выводите соглашение из чисел. См. Использование токенов.curl -X POST https://api-llm.sunra.ai/v1/messages \
-H "Authorization: Bearer <SUNRA_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, how are you?"
}
]
}'
import requests
response = requests.post(
"https://api-llm.sunra.ai/v1/messages",
headers={
"Authorization": "Bearer <SUNRA_KEY>",
"Content-Type": "application/json"
},
json={
"model": "anthropic/claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, how are you?"}
]
}
)
print(response.json())
const response = await fetch("https://api-llm.sunra.ai/v1/messages", {
method: "POST",
headers: {
"Authorization": "Bearer <SUNRA_KEY>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "anthropic/claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [
{ role: "user", content: "Hello, how are you?" }
]
})
});
const data = await response.json();
console.log(data);
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! I'm doing well, thank you for asking. How can I help you today?"
}
],
"model": "anthropic/claude-sonnet-4-20250514",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 19,
"total_tokens": 31,
"sunra_usage_semantics": "anthropic.exclusive.v1"
}
}
⌘I