curl --request POST \
--url https://direct.evolink.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
'import requests
url = "https://direct.evolink.ai/v1/messages"
payload = {
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'claude-opus-5',
max_tokens: 1024,
messages: [{role: 'user', content: 'Hello, world'}]
})
};
fetch('https://direct.evolink.ai/v1/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://direct.evolink.ai/v1/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'claude-opus-5',
'max_tokens' => 1024,
'messages' => [
[
'role' => 'user',
'content' => 'Hello, world'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://direct.evolink.ai/v1/messages"
payload := strings.NewReader("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://direct.evolink.ai/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://direct.evolink.ai/v1/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"model": "claude-haiku-4-5-20251001",
"id": "msg_bdrk_017XLrAa77zWvfBGQ6ESvrxz",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "# Hey there!\n\nHow's it going? What can I help you with today?"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 8,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 24
}
}{
"error": {
"message": "Requête invalide",
"type": "invalid_request_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Erreur d'authentification",
"type": "authentication_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Erreur de facturation",
"type": "billing_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}{
"error": {
"message": "Permission denied",
"type": "permission_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Non trouvé",
"type": "not_found_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Rate limited",
"type": "rate_limit_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 60 seconds"
}{
"error": {
"message": "Erreur interne du serveur",
"type": "api_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "try again later"
}{
"error": {
"message": "Overloaded",
"type": "overloaded_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 30 seconds"
}{
"error": {
"message": "Request timeout",
"type": "timeout_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "Veuillez basculer la BaseURL vers https://direct.evolink.ai ; ce point de terminaison est plus adapté aux tâches longues"
}Claude - API Messages
- Envoyez une liste structurée de messages d’entrée avec du contenu texte et/ou image, et le modèle générera le message suivant dans la conversation.
- L’API Messages peut être utilisée pour des requêtes uniques ou des conversations multi-tours sans état.
curl --request POST \
--url https://direct.evolink.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
'import requests
url = "https://direct.evolink.ai/v1/messages"
payload = {
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, world"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'claude-opus-5',
max_tokens: 1024,
messages: [{role: 'user', content: 'Hello, world'}]
})
};
fetch('https://direct.evolink.ai/v1/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://direct.evolink.ai/v1/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'claude-opus-5',
'max_tokens' => 1024,
'messages' => [
[
'role' => 'user',
'content' => 'Hello, world'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://direct.evolink.ai/v1/messages"
payload := strings.NewReader("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://direct.evolink.ai/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://direct.evolink.ai/v1/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"claude-opus-5\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, world\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"model": "claude-haiku-4-5-20251001",
"id": "msg_bdrk_017XLrAa77zWvfBGQ6ESvrxz",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "# Hey there!\n\nHow's it going? What can I help you with today?"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 8,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 24
}
}{
"error": {
"message": "Requête invalide",
"type": "invalid_request_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Erreur d'authentification",
"type": "authentication_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Erreur de facturation",
"type": "billing_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}{
"error": {
"message": "Permission denied",
"type": "permission_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Non trouvé",
"type": "not_found_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Rate limited",
"type": "rate_limit_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 60 seconds"
}{
"error": {
"message": "Erreur interne du serveur",
"type": "api_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "try again later"
}{
"error": {
"message": "Overloaded",
"type": "overloaded_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "retry after 30 seconds"
}{
"error": {
"message": "Request timeout",
"type": "timeout_error"
},
"request_id": "<string>",
"type": "error",
"fallback_suggestion": "Veuillez basculer la BaseURL vers https://direct.evolink.ai ; ce point de terminaison est plus adapté aux tâches longues"
}https://direct.evolink.ai, qui offre une meilleure prise en charge des modèles de texte et des connexions persistantes. https://api.evolink.ai est le point d’accès principal pour les services multimodaux et sert d’adresse de secours pour les modèles de texte.Autorisations
##Toutes les API nécessitent une authentification Bearer Token##
Obtenir une clé API :
Visitez la Page de gestion des clés API pour obtenir votre clé API
Ajouter à l'en-tête de requête :
Authorization: Bearer YOUR_API_KEY
Corps
Le modèle utilisé pour générer la réponse. Sélectionnez l’un des identifiants de modèle pris en charge ci-dessous.
claude-haiku-4-5-20251001, claude-sonnet-4-5-20250929, claude-opus-4-5-20251101, claude-opus-4-6, claude-fable-5-1, claude-fable-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6, claude-sonnet-5 "claude-opus-5"
Le nombre maximum de tokens à générer avant de s'arrêter.
Notez que nos modèles peuvent s'arrêter avant d'atteindre ce maximum. Ce paramètre spécifie uniquement le nombre maximum absolu de tokens à générer.
x >= 11024
Messages d'entrée.
Nos modèles sont entraînés pour fonctionner sur des tours de conversation alternés user et assistant. Lors de la création d'un nouveau Message, vous spécifiez les tours de conversation précédents avec le paramètre messages, et le modèle génère ensuite le Message suivant dans la conversation. Les tours user ou assistant consécutifs dans votre requête seront combinés en un seul tour.
Chaque message d'entrée doit être un objet avec un role et un content. Vous pouvez spécifier un seul message de rôle user, ou vous pouvez inclure plusieurs messages user et assistant.
1 - 100000 elementsShow child attributes
Show child attributes
Paramètres du conteneur avec les compétences à charger.
Show child attributes
Show child attributes
Configuration options for the model's output, such as the output format.
Show child attributes
Show child attributes
Séquences de texte personnalisées qui feront arrêter la génération du modèle.
S'il faut diffuser progressivement la réponse en utilisant des événements envoyés par le serveur.
Invite système.
"Today's date is 2024-06-01."
Quantité d'aléatoire injectée dans la réponse.
Par défaut 1.0. Plage de 0.0 à 1.0.
0 <= x <= 11
Configuration de la réflexion étendue de Claude.
type: "enabled" nécessite budget_tokens, avec un minimum de 1 024, et est comptabilisé dans max_tokens.
type: "adaptive" laisse Claude décider quand et dans quelle mesure utiliser la réflexion étendue selon la complexité de la requête.
type: "disabled" désactive la réflexion étendue.
- Activé
- Adaptive
- Désactivé
Show child attributes
Show child attributes
Comment le modèle doit utiliser les outils fournis.
- Auto
- Quelconque
- Outil
- Aucun
Show child attributes
Show child attributes
Définitions des outils côté client que le modèle peut utiliser. Chaque outil comprend name, une description facultative et input_schema.
Show child attributes
Show child attributes
Échantillonner uniquement parmi les K meilleures options pour chaque token suivant.
x >= 05
Utilisez l'échantillonnage nucleus.
0 <= x <= 10.7
Réponse
Objet message
Identifiant d'objet unique.
Le format et la longueur des ID peuvent changer au fil du temps.
"msg_013Zva2CMHLNnXjNJJKqJ2EF"
Type d'objet.
Pour les Messages, c'est toujours "message".
"message"Rôle conversationnel du message généré.
Ce sera toujours "assistant".
"assistant"Contenu généré par le modèle.
Ceci est un tableau de blocs de contenu, chacun ayant un type qui détermine sa forme.
- Text
- Réflexion
- Réflexion expurgée
- Utilisation d'outil
- Utilisation d'outils serveur
- Résultat de l'outil de recherche Web
- ResponseWebFetchToolResultBlock
- Résultat de l'outil d'exécution de code
- ResponseBashCodeExecutionToolResultBlock
- ResponseTextEditorCodeExecutionToolResultBlock
- Utilisation de l'outil MCP
- Résultat de l'outil MCP
- Téléchargement de conteneur
Show child attributes
Show child attributes
Le modèle qui a traité la requête.
claude-haiku-4-5-20251001, claude-sonnet-4-5-20250929, claude-opus-4-5-20251101, claude-opus-4-6, claude-fable-5-1, claude-fable-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-sonnet-4-6, claude-sonnet-5 "claude-opus-5"
La raison pour laquelle nous nous sommes arrêtés.
end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal, model_context_window_exceeded Quelle séquence d'arrêt personnalisée a été générée, le cas échéant.
Utilisation de la facturation et des limites de débit.
Show child attributes
Show child attributes
Réponse de la gestion du contexte.
Show child attributes
Show child attributes
Informations sur le conteneur utilisé dans cette requête.
Show child attributes
Show child attributes