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"
}
}
Crée un message en utilisant le format de l’API Anthropic Messages. Prend en charge le texte, les images, les PDF, les outils et la réflexion étendue.
Authentification
string
requis
Jeton Bearer. Utilisez votre clé API comme jeton Bearer dans l’en-tête Authorization.Format :
Bearer <SUNRA_KEY>Requête
Cet endpoint attend un objet.string
requis
Le modèle qui complétera votre prompt. Parcourez les modèles disponibles sur sunra.ai/models.
object[]
requis
Messages d’entrée. Chaque message d’entrée a un
role et un content.Afficher propriétés
Afficher propriétés
string
requis
Le rôle de l’auteur du message. Valeurs prises en charge :
user, assistant.string | object[]
requis
Le contenu du message. Peut être une simple chaîne de caractères ou un tableau de blocs de contenu.
Afficher types de blocs de contenu
Afficher types de blocs de contenu
string
requis
Le type de bloc de contenu. Valeurs prises en charge :
text, image, tool_use, tool_result.string
Contenu textuel. Utilisé lorsque le type est
text.object
Source de l’image. Utilisé lorsque le type est
image.Afficher propriétés
Afficher propriétés
string
requis
Le type de source. Valeurs prises en charge :
base64, url.string
requis
Le type de média de l’image. Par exemple,
image/jpeg, image/png, image/gif, image/webp.string
Données d’image encodées en base64. Requis lorsque le type de source est
base64.string
URL de l’image. Requis lorsque le type de source est
url.integer
requis
Le nombre maximum de tokens à générer avant l’arrêt. Notez que le modèle peut s’arrêter avant d’atteindre ce maximum.
string | object[]
Prompt système. Un prompt système est un moyen de fournir du contexte et des instructions au modèle. Peut être une chaîne de caractères ou un tableau de blocs de contenu.
boolean
défaut:false
Indique si la réponse doit être diffusée de manière incrémentale en utilisant des événements server-sent (SSE).
number
défaut:1
Quantité de hasard injectée dans la réponse. Varie de 0.0 à 1.0. Utilisez une
temperature plus proche de 0.0 pour les tâches analytiques/à choix multiples, et plus proche de 1.0 pour les tâches créatives et génératives.number
Utilise l’échantillonnage par noyau. Dans l’échantillonnage par noyau, nous calculons la distribution cumulative sur toutes les options pour chaque token suivant par ordre décroissant de probabilité et la coupons une fois qu’elle atteint une probabilité particulière spécifiée par
top_p.integer
Échantillonne uniquement parmi les K meilleures options pour chaque token suivant. Utilisé pour supprimer les réponses à faible probabilité de la « longue traîne ». Recommandé pour les cas d’utilisation avancés uniquement.
string[]
Séquences de texte personnalisées qui provoqueront l’arrêt de la génération par le modèle. Le texte retourné ne contiendra pas la séquence d’arrêt.
object[]
object
Comment le modèle doit utiliser les outils fournis.
object
Un objet décrivant les métadonnées de la requête.
Afficher propriétés
Afficher propriétés
string
Un identifiant externe pour l’utilisateur associé à la requête.
object
Réponse
Réponse de message réussie.string
Identifiant unique du message, par exemple
msg_01XFDUDYJgAACzvnptvVoYEL.string
Type d’objet. Toujours
message.string
Rôle conversationnel du message généré. Toujours
assistant.object[]
Contenu généré par le modèle. Il s’agit d’un tableau de blocs de contenu.
Afficher propriétés
Afficher propriétés
string
Le type de bloc de contenu. Peut être
text, tool_use ou thinking.string
Le texte généré. Présent lorsque le type est
text.string
L’ID du bloc d’utilisation d’outil. Présent lorsque le type est
tool_use.string
Le nom de l’outil. Présent lorsque le type est
tool_use.object
L’entrée de l’outil. Présent lorsque le type est
tool_use.string
Le contenu de la réflexion. Présent lorsque le type est
thinking.string
Le modèle qui a traité la requête.
string | null
La raison pour laquelle le modèle a cessé de générer. Peut être
end_turn (le modèle a atteint un point d’arrêt naturel), max_tokens (a dépassé max_tokens ou le maximum du modèle), stop_sequence (une de vos séquences d’arrêt personnalisées a été générée) ou tool_use (le modèle a invoqué un ou plusieurs outils).string | null
La séquence d’arrêt personnalisée qui a été générée, le cas échéant.
object
Utilisation pour la facturation et les limites de débit. Les trois buckets d’entrée sont mutuellement exclusifs — voir Utilisation des tokens.
Afficher propriétés
Afficher propriétés
integer
Le nombre de tokens d’entrée frais utilisés. Exclut les deux buckets de cache.
integer
Le nombre de tokens de sortie utilisés.
integer
Tous les buckets d’entrée plus
output_tokens. Omis sur les réponses en streaming.integer
Le nombre de tokens d’entrée utilisés pour créer l’entrée de cache.
integer
Le nombre de tokens d’entrée lus depuis le cache.
string | null
Présent avec la valeur
anthropic.exclusive.v1 lorsque Sunra a normalisé cette réponse. Appuyez-vous sur cette valeur plutôt que de déduire la convention à partir des nombres. Voir Utilisation des 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