curl --request POST \
--url https://direct.evolink.ai/v1/chat/completions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "grok-4.6",
"messages": [
{
"role": "system",
"content": "You are a concise assistant."
},
{
"role": "user",
"content": "Explain prompt caching in one sentence."
}
],
"stream": false,
"max_tokens": 1024,
"reasoning_effort": "high",
"temperature": 0.7,
"top_p": 0.95,
"tools": [
{
"type": "function",
"function": {}
}
]
}
'import requests
url = "https://direct.evolink.ai/v1/chat/completions"
payload = {
"model": "grok-4.6",
"messages": [
{
"role": "system",
"content": "You are a concise assistant."
},
{
"role": "user",
"content": "Explain prompt caching in one sentence."
}
],
"stream": False,
"max_tokens": 1024,
"reasoning_effort": "high",
"temperature": 0.7,
"top_p": 0.95,
"tools": [
{
"type": "function",
"function": {}
}
]
}
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: 'grok-4.6',
messages: [
{role: 'system', content: 'You are a concise assistant.'},
{role: 'user', content: 'Explain prompt caching in one sentence.'}
],
stream: false,
max_tokens: 1024,
reasoning_effort: 'high',
temperature: 0.7,
top_p: 0.95,
tools: [{type: 'function', function: {}}]
})
};
fetch('https://direct.evolink.ai/v1/chat/completions', 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/chat/completions",
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' => 'grok-4.6',
'messages' => [
[
'role' => 'system',
'content' => 'You are a concise assistant.'
],
[
'role' => 'user',
'content' => 'Explain prompt caching in one sentence.'
]
],
'stream' => false,
'max_tokens' => 1024,
'reasoning_effort' => 'high',
'temperature' => 0.7,
'top_p' => 0.95,
'tools' => [
[
'type' => 'function',
'function' => [
]
]
]
]),
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/chat/completions"
payload := strings.NewReader("{\n \"model\": \"grok-4.6\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a concise assistant.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Explain prompt caching in one sentence.\"\n }\n ],\n \"stream\": false,\n \"max_tokens\": 1024,\n \"reasoning_effort\": \"high\",\n \"temperature\": 0.7,\n \"top_p\": 0.95,\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {}\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/chat/completions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"grok-4.6\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a concise assistant.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Explain prompt caching in one sentence.\"\n }\n ],\n \"stream\": false,\n \"max_tokens\": 1024,\n \"reasoning_effort\": \"high\",\n \"temperature\": 0.7,\n \"top_p\": 0.95,\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://direct.evolink.ai/v1/chat/completions")
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\": \"grok-4.6\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a concise assistant.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Explain prompt caching in one sentence.\"\n }\n ],\n \"stream\": false,\n \"max_tokens\": 1024,\n \"reasoning_effort\": \"high\",\n \"temperature\": 0.7,\n \"top_p\": 0.95,\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "chatcmpl-20260812164515123456789AbCdEfGh",
"model": "grok-4.6",
"object": "chat.completion",
"created": 1786538000,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Prompt caching reuses previously processed prompt prefixes so repeated context is billed at a lower rate.",
"tool_calls": [
{}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 504,
"completion_tokens": 2,
"total_tokens": 526,
"prompt_tokens_details": {
"cached_tokens": 0
}
}
}{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "Insufficient quota",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}
}{
"error": {
"code": 429,
"message": "Rate limit exceeded",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "Internal server error",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "Service temporarily unavailable",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}API tous modèles Grok - Référence complète Chat Completions
- Point de terminaison Chat Completions compatible OpenAI pour les modèles de texte xAI Grok ; sélection du modèle via le paramètre
model(toutes les valeurs figurent dans le tableau du paramètremodel) - Fenêtre de contexte de 500K tokens ; à partir de 200K tokens dans le prompt, tous les types de tokens sont facturés au double du tarif
- La mise en cache du prompt est automatique : les tokens servis depuis le cache sont facturés au tarif d’entrée en cache, moins élevé
- Modes synchrone et streaming (SSE)
- Les appels d’outils
functionclassiques sont pris en charge ; les outils côté serveur de xAI sont disponibles uniquement via la Responses API
curl --request POST \
--url https://direct.evolink.ai/v1/chat/completions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "grok-4.6",
"messages": [
{
"role": "system",
"content": "You are a concise assistant."
},
{
"role": "user",
"content": "Explain prompt caching in one sentence."
}
],
"stream": false,
"max_tokens": 1024,
"reasoning_effort": "high",
"temperature": 0.7,
"top_p": 0.95,
"tools": [
{
"type": "function",
"function": {}
}
]
}
'import requests
url = "https://direct.evolink.ai/v1/chat/completions"
payload = {
"model": "grok-4.6",
"messages": [
{
"role": "system",
"content": "You are a concise assistant."
},
{
"role": "user",
"content": "Explain prompt caching in one sentence."
}
],
"stream": False,
"max_tokens": 1024,
"reasoning_effort": "high",
"temperature": 0.7,
"top_p": 0.95,
"tools": [
{
"type": "function",
"function": {}
}
]
}
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: 'grok-4.6',
messages: [
{role: 'system', content: 'You are a concise assistant.'},
{role: 'user', content: 'Explain prompt caching in one sentence.'}
],
stream: false,
max_tokens: 1024,
reasoning_effort: 'high',
temperature: 0.7,
top_p: 0.95,
tools: [{type: 'function', function: {}}]
})
};
fetch('https://direct.evolink.ai/v1/chat/completions', 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/chat/completions",
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' => 'grok-4.6',
'messages' => [
[
'role' => 'system',
'content' => 'You are a concise assistant.'
],
[
'role' => 'user',
'content' => 'Explain prompt caching in one sentence.'
]
],
'stream' => false,
'max_tokens' => 1024,
'reasoning_effort' => 'high',
'temperature' => 0.7,
'top_p' => 0.95,
'tools' => [
[
'type' => 'function',
'function' => [
]
]
]
]),
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/chat/completions"
payload := strings.NewReader("{\n \"model\": \"grok-4.6\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a concise assistant.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Explain prompt caching in one sentence.\"\n }\n ],\n \"stream\": false,\n \"max_tokens\": 1024,\n \"reasoning_effort\": \"high\",\n \"temperature\": 0.7,\n \"top_p\": 0.95,\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {}\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/chat/completions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"grok-4.6\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a concise assistant.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Explain prompt caching in one sentence.\"\n }\n ],\n \"stream\": false,\n \"max_tokens\": 1024,\n \"reasoning_effort\": \"high\",\n \"temperature\": 0.7,\n \"top_p\": 0.95,\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://direct.evolink.ai/v1/chat/completions")
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\": \"grok-4.6\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are a concise assistant.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Explain prompt caching in one sentence.\"\n }\n ],\n \"stream\": false,\n \"max_tokens\": 1024,\n \"reasoning_effort\": \"high\",\n \"temperature\": 0.7,\n \"top_p\": 0.95,\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "chatcmpl-20260812164515123456789AbCdEfGh",
"model": "grok-4.6",
"object": "chat.completion",
"created": 1786538000,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Prompt caching reuses previously processed prompt prefixes so repeated context is billed at a lower rate.",
"tool_calls": [
{}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 504,
"completion_tokens": 2,
"total_tokens": 526,
"prompt_tokens_details": {
"cached_tokens": 0
}
}
}{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "Insufficient quota",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}
}{
"error": {
"code": 429,
"message": "Rate limit exceeded",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "Internal server error",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "Service temporarily unavailable",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}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.function classiques.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
Modèle à appeler :
| ID du modèle | Positionnement |
|---|---|
grok-4.6 | Modèle xAI de raisonnement et d'appel d'outils, fenêtre de contexte de 500K ; ajoute le niveau de raisonnement xhigh ; connaissances arrêtées au 2026-02-01 |
grok-4.5 | Modèle xAI de raisonnement et d'appel d'outils, fenêtre de contexte de 500K ; niveaux de raisonnement jusqu'à high (xhigh est accepté mais rétrogradé en high) |
grok-4.6, grok-4.5 "grok-4.6"
Liste des messages de chat. Prend en charge les rôles system, user et assistant.
1Show child attributes
Show child attributes
[
{
"role": "system",
"content": "You are a concise assistant."
},
{
"role": "user",
"content": "Explain prompt caching in one sentence."
}
]
Indique s'il faut renvoyer une réponse en streaming (SSE, événements chat.completion.chunk). Par défaut false.
false
Nombre maximal de tokens à générer.
1024
Profondeur de raisonnement : low / medium / high (par défaut) / xhigh. Le raisonnement ne peut pas être désactivé. xhigh n'est pris en charge que par grok-4.6 — grok-4.5 accepte la valeur mais la rétrograde en high. Les tokens de raisonnement sont facturés comme des tokens de sortie.
low, medium, high, xhigh Température d'échantillonnage (0-2). Des valeurs plus élevées produisent une sortie plus aléatoire.
0.7
Paramètre d'échantillonnage nucleus (0-1).
0.95
Définitions d'outils function OpenAI classiques (appels de fonctions côté client, sans frais supplémentaires par appel). Les outils côté serveur de xAI sont disponibles uniquement via la Responses API.
Show child attributes
Show child attributes
Contrôle la sélection de la fonction : "auto" / "none" / "required", ou un objet imposant une fonction précise.
auto, none, required Réponse
Complétion de chat générée avec succès (objet JSON, ou flux SSE d'événements chat.completion.chunk lorsque stream=true)
Identifiant unique pour la complétion de chat
"chatcmpl-20260812164515123456789AbCdEfGh"
Nom du modèle réellement utilisé
"grok-4.6"
Type de réponse
chat.completion "chat.completion"
Horodatage de création
1786538000
Liste des choix de complétion de chat
Show child attributes
Show child attributes
Statistiques d'utilisation des tokens. À partir de 200K tokens dans le prompt, tous les types de tokens (entrée, entrée en cache, sortie) sont facturés au double.
Show child attributes
Show child attributes