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"
}
}
Membuat pesan menggunakan format Anthropic Messages API. Mendukung teks, gambar, PDF, alat, dan pemikiran diperluas.
Autentikasi
string
wajib
Bearer token. Gunakan kunci API Anda sebagai bearer token di header Authorization.Format:
Bearer <SUNRA_KEY>Permintaan
Endpoint ini menerima sebuah objek.string
wajib
Model yang akan menyelesaikan prompt Anda. Jelajahi model yang tersedia di sunra.ai/models.
object[]
wajib
Pesan input. Setiap pesan input memiliki
role dan content.Tampilkan properties
Tampilkan properties
string
wajib
Peran penulis pesan. Nilai yang didukung:
user, assistant.string | object[]
wajib
Konten pesan. Dapat berupa string tunggal atau array blok konten.
Tampilkan content block types
Tampilkan content block types
string
wajib
Tipe blok konten. Nilai yang didukung:
text, image, tool_use, tool_result.string
Konten teks. Digunakan ketika type adalah
text.object
Sumber gambar. Digunakan ketika type adalah
image.Tampilkan properties
Tampilkan properties
integer
wajib
Jumlah maksimum token yang akan dihasilkan sebelum berhenti. Perhatikan bahwa model mungkin berhenti sebelum mencapai maksimum ini.
string | object[]
Prompt sistem. Cara untuk memberikan konteks dan instruksi kepada model. Dapat berupa string atau array blok konten.
boolean
default:false
Apakah akan melakukan streaming respons secara bertahap menggunakan server-sent events (SSE).
number
default:1
Jumlah keacakan yang disuntikkan ke dalam respons. Berkisar dari 0.0 hingga 1.0. Gunakan
temperature mendekati 0.0 untuk tugas analitis/pilihan ganda, dan mendekati 1.0 untuk tugas kreatif dan generatif.number
Gunakan nucleus sampling. Dalam nucleus sampling, kami menghitung distribusi kumulatif atas semua opsi untuk setiap token berikutnya dalam urutan probabilitas menurun dan memotongnya ketika mencapai probabilitas tertentu yang ditentukan oleh
top_p.integer
Hanya ambil sampel dari K opsi teratas untuk setiap token berikutnya. Digunakan untuk menghapus respons probabilitas rendah “ekor panjang”. Disarankan hanya untuk kasus penggunaan lanjutan.
string[]
Urutan teks kustom yang akan menyebabkan model berhenti menghasilkan. Teks yang dikembalikan tidak akan berisi urutan berhenti.
object[]
object
Bagaimana model harus menggunakan alat yang disediakan.
object
Objek yang mendeskripsikan metadata tentang permintaan.
Tampilkan properties
Tampilkan properties
string
Pengenal eksternal untuk pengguna yang terkait dengan permintaan.
object
Respons
Respons pesan yang berhasil.string
Pengenal pesan unik, misalnya
msg_01XFDUDYJgAACzvnptvVoYEL.string
Tipe objek. Selalu
message.string
Peran percakapan dari pesan yang dihasilkan. Selalu
assistant.object[]
Konten yang dihasilkan oleh model. Ini adalah array blok konten.
Tampilkan properties
Tampilkan properties
string
Tipe blok konten. Dapat berupa
text, tool_use, atau thinking.string
Teks yang dihasilkan. Ada ketika type adalah
text.string
ID blok penggunaan alat. Ada ketika type adalah
tool_use.string
Nama alat. Ada ketika type adalah
tool_use.object
Input ke alat. Ada ketika type adalah
tool_use.string
Konten pemikiran. Ada ketika type adalah
thinking.string
Model yang menangani permintaan.
string | null
Alasan model berhenti. Dapat berupa
end_turn (model mencapai titik berhenti alami), max_tokens (melebihi max_tokens atau maksimum model), stop_sequence (salah satu urutan berhenti kustom Anda dihasilkan), atau tool_use (model memanggil satu atau lebih alat).string | null
Urutan berhenti kustom mana yang dihasilkan, jika ada.
object
Penggunaan penagihan dan batas laju. Ketiga bucket input saling eksklusif — lihat Penggunaan token.
Tampilkan properties
Tampilkan properties
integer
Jumlah token input baru yang digunakan. Tidak termasuk kedua bucket cache.
integer
Jumlah token output yang digunakan.
integer
Semua bucket input ditambah
output_tokens. Dihilangkan pada respons yang di-stream.integer
Jumlah token input yang digunakan untuk membuat entri cache.
integer
Jumlah token input yang dibaca dari cache.
string | null
Hadir sebagai
anthropic.exclusive.v1 ketika Sunra menormalisasi respons ini. Lakukan pemeriksaan terhadap nilai ini alih-alih menyimpulkan konvensinya dari angka-angka. Lihat Penggunaan token.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