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"
}
}
Cria uma mensagem usando o formato da API Anthropic Messages. Suporta texto, imagens, PDFs, ferramentas e pensamento estendido.
Autenticação
string
obrigatório
Token Bearer. Use sua chave de API como token Bearer no cabeçalho Authorization.Formato:
Bearer <SUNRA_KEY>Requisição
Este endpoint espera um objeto.string
obrigatório
O modelo que completará seu prompt. Navegue pelos modelos disponíveis em sunra.ai/models.
object[]
obrigatório
Mensagens de entrada. Cada mensagem de entrada tem um
role e content.Mostrar propriedades
Mostrar propriedades
string
obrigatório
O papel do autor da mensagem. Valores suportados:
user, assistant.string | object[]
obrigatório
O conteúdo da mensagem. Pode ser uma string simples ou um array de blocos de conteúdo.
Mostrar tipos de blocos de conteúdo
Mostrar tipos de blocos de conteúdo
string
obrigatório
O tipo de bloco de conteúdo. Valores suportados:
text, image, tool_use, tool_result.string
Conteúdo de texto. Usado quando o tipo é
text.object
Fonte da imagem. Usado quando o tipo é
image.Mostrar propriedades
Mostrar propriedades
string
obrigatório
O tipo de fonte. Valores suportados:
base64, url.string
obrigatório
O tipo de mídia da imagem. Por exemplo,
image/jpeg, image/png, image/gif, image/webp.string
Dados de imagem codificados em base64. Obrigatório quando o tipo de fonte é
base64.string
URL da imagem. Obrigatório quando o tipo de fonte é
url.integer
obrigatório
O número máximo de tokens a gerar antes de parar. Note que o modelo pode parar antes de atingir este máximo.
string | object[]
Prompt do sistema. Um prompt do sistema é uma forma de fornecer contexto e instruções ao modelo. Pode ser uma string ou um array de blocos de conteúdo.
boolean
padrão:false
Indica se a resposta deve ser transmitida de forma incremental usando eventos server-sent (SSE).
number
padrão:1
Quantidade de aleatoriedade injetada na resposta. Varia de 0.0 a 1.0. Use
temperature mais próxima de 0.0 para tarefas analíticas/de múltipla escolha, e mais próxima de 1.0 para tarefas criativas e generativas.number
Usa amostragem por núcleo. Na amostragem por núcleo, calculamos a distribuição cumulativa sobre todas as opções para cada token seguinte em ordem decrescente de probabilidade e a cortamos quando atinge uma probabilidade particular especificada por
top_p.integer
Amostra apenas entre as K melhores opções para cada token seguinte. Usado para remover respostas de baixa probabilidade da “cauda longa”. Recomendado apenas para casos de uso avançados.
string[]
Sequências de texto personalizadas que farão o modelo parar de gerar. O texto retornado não conterá a sequência de parada.
object[]
object
Como o modelo deve usar as ferramentas fornecidas.
object
Um objeto descrevendo os metadados da requisição.
Mostrar propriedades
Mostrar propriedades
string
Um identificador externo para o usuário associado à requisição.
object
Resposta
Resposta de mensagem bem-sucedida.string
Identificador único da mensagem, por exemplo
msg_01XFDUDYJgAACzvnptvVoYEL.string
Tipo de objeto. Sempre
message.string
Papel conversacional da mensagem gerada. Sempre
assistant.object[]
Conteúdo gerado pelo modelo. Este é um array de blocos de conteúdo.
Mostrar propriedades
Mostrar propriedades
string
O tipo de bloco de conteúdo. Pode ser
text, tool_use ou thinking.string
O texto gerado. Presente quando o tipo é
text.string
O ID do bloco de uso de ferramenta. Presente quando o tipo é
tool_use.string
O nome da ferramenta. Presente quando o tipo é
tool_use.object
A entrada da ferramenta. Presente quando o tipo é
tool_use.string
O conteúdo do pensamento. Presente quando o tipo é
thinking.string
O modelo que processou a requisição.
string | null
A razão pela qual o modelo parou de gerar. Pode ser
end_turn (o modelo atingiu um ponto de parada natural), max_tokens (excedeu max_tokens ou o máximo do modelo), stop_sequence (uma de suas sequências de parada personalizadas foi gerada) ou tool_use (o modelo invocou uma ou mais ferramentas).string | null
Qual sequência de parada personalizada foi gerada, se alguma.
object
Uso para faturamento e limites de taxa. Os três buckets de entrada são mutuamente exclusivos — veja Uso de tokens.
Mostrar propriedades
Mostrar propriedades
integer
O número de tokens de entrada novos utilizados. Exclui ambos os buckets de cache.
integer
O número de tokens de saída utilizados.
integer
Todos os buckets de entrada mais
output_tokens. Omitido em respostas com streaming.integer
O número de tokens de entrada usados para criar a entrada de cache.
integer
O número de tokens de entrada lidos do cache.
string | null
Presente como
anthropic.exclusive.v1 quando Sunra normalizou esta resposta. Verifique este valor em vez de inferir a convenção a partir dos números. Veja Uso de tokens.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