curl --request POST \
--url https://direct.evolink.ai/v1/chat/completions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "grok-4.7",
"messages": [
{
"role": "user",
"content": "Explica el almacenamiento en caché de prompts en una frase."
}
],
"reasoning_effort": "xhigh",
"max_tokens": 2048,
"prompt_cache_key": "grok-session-001"
}
'import requests
url = "https://direct.evolink.ai/v1/chat/completions"
payload = {
"model": "grok-4.7",
"messages": [
{
"role": "user",
"content": "Explica el almacenamiento en caché de prompts en una frase."
}
],
"reasoning_effort": "xhigh",
"max_tokens": 2048,
"prompt_cache_key": "grok-session-001"
}
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.7',
messages: [
{
role: 'user',
content: 'Explica el almacenamiento en caché de prompts en una frase.'
}
],
reasoning_effort: 'xhigh',
max_tokens: 2048,
prompt_cache_key: 'grok-session-001'
})
};
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.7',
'messages' => [
[
'role' => 'user',
'content' => 'Explica el almacenamiento en caché de prompts en una frase.'
]
],
'reasoning_effort' => 'xhigh',
'max_tokens' => 2048,
'prompt_cache_key' => 'grok-session-001'
]),
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.7\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Explica el almacenamiento en caché de prompts en una frase.\"\n }\n ],\n \"reasoning_effort\": \"xhigh\",\n \"max_tokens\": 2048,\n \"prompt_cache_key\": \"grok-session-001\"\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.7\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Explica el almacenamiento en caché de prompts en una frase.\"\n }\n ],\n \"reasoning_effort\": \"xhigh\",\n \"max_tokens\": 2048,\n \"prompt_cache_key\": \"grok-session-001\"\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.7\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Explica el almacenamiento en caché de prompts en una frase.\"\n }\n ],\n \"reasoning_effort\": \"xhigh\",\n \"max_tokens\": 2048,\n \"prompt_cache_key\": \"grok-session-001\"\n}"
response = http.request(request)
puts response.read_body{
"id": "chatcmpl-20260812164515123456789AbCdEfGh",
"model": "grok-4.7",
"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"
}
}Interfaz de todos los modelos Grok - Referencia completa de Chat Completions
- Endpoint Chat Completions compatible con OpenAI para los modelos de texto xAI Grok; selecciona el modelo con el parámetro
model(todos los valores están en la tabla del parámetromodel) - Ventana de contexto de 500K tokens; a partir de 200K tokens en el prompt, todos los tipos de token se facturan al doble
- El almacenamiento en caché del prompt es automático: los tokens de entrada servidos desde la caché se facturan a la tarifa de caché, más baja
- Modos sincrónico y streaming (SSE)
- Se admiten llamadas
functionnormales; para herramientas del servidor como búsqueda web y búsqueda en X, se recomienda 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.7",
"messages": [
{
"role": "user",
"content": "Explica el almacenamiento en caché de prompts en una frase."
}
],
"reasoning_effort": "xhigh",
"max_tokens": 2048,
"prompt_cache_key": "grok-session-001"
}
'import requests
url = "https://direct.evolink.ai/v1/chat/completions"
payload = {
"model": "grok-4.7",
"messages": [
{
"role": "user",
"content": "Explica el almacenamiento en caché de prompts en una frase."
}
],
"reasoning_effort": "xhigh",
"max_tokens": 2048,
"prompt_cache_key": "grok-session-001"
}
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.7',
messages: [
{
role: 'user',
content: 'Explica el almacenamiento en caché de prompts en una frase.'
}
],
reasoning_effort: 'xhigh',
max_tokens: 2048,
prompt_cache_key: 'grok-session-001'
})
};
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.7',
'messages' => [
[
'role' => 'user',
'content' => 'Explica el almacenamiento en caché de prompts en una frase.'
]
],
'reasoning_effort' => 'xhigh',
'max_tokens' => 2048,
'prompt_cache_key' => 'grok-session-001'
]),
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.7\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Explica el almacenamiento en caché de prompts en una frase.\"\n }\n ],\n \"reasoning_effort\": \"xhigh\",\n \"max_tokens\": 2048,\n \"prompt_cache_key\": \"grok-session-001\"\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.7\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Explica el almacenamiento en caché de prompts en una frase.\"\n }\n ],\n \"reasoning_effort\": \"xhigh\",\n \"max_tokens\": 2048,\n \"prompt_cache_key\": \"grok-session-001\"\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.7\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Explica el almacenamiento en caché de prompts en una frase.\"\n }\n ],\n \"reasoning_effort\": \"xhigh\",\n \"max_tokens\": 2048,\n \"prompt_cache_key\": \"grok-session-001\"\n}"
response = http.request(request)
puts response.read_body{
"id": "chatcmpl-20260812164515123456789AbCdEfGh",
"model": "grok-4.7",
"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, que ofrece mejor compatibilidad con modelos de texto y admite conexiones persistentes. https://api.evolink.ai es el endpoint principal para servicios multimodales y actúa como dirección de respaldo para los modelos de texto.function normales. Para herramientas del servidor (búsqueda web, búsqueda en X, ejecución de código, búsqueda de adjuntos y de colecciones), se recomienda la Responses API, donde se explican su configuración y facturación.Usar Grok 4.7
Establecemodel en grok-4.7 y conserva el formato de solicitud messages. La ventana de contexto es de 500 000 tokens y el conocimiento llega hasta mayo de 2026.
Usa el parámetro de nivel superior reasoning_effort. Nivel de razonamiento: low / medium / high (predeterminado) / xhigh. El razonamiento no se puede desactivar. grok-4.7 y grok-4.6 admiten xhigh; grok-4.5 lo acepta pero lo trata como high. Los tokens de razonamiento se facturan como tokens de salida.
prompt_cache_key ofrece una indicación estable de enrutamiento de caché para solicitudes con el mismo prefijo de prompt; no garantiza aciertos. Consulta usage.prompt_tokens_details.cached_tokens para ver los aciertos reales. Para conservar el razonamiento cifrado entre turnos, usa la Responses API.Autorizaciones
##Todas las APIs requieren autenticación Bearer Token##
Obtener API Key:
Visita la Página de gestión de API Key para obtener tu API Key
Agregar al encabezado de la solicitud:
Authorization: Bearer YOUR_API_KEY
Cuerpo
Modelo a invocar:
| ID del modelo | Posicionamiento |
|---|---|
grok-4.7 | Modelo xAI de razonamiento y uso de herramientas; contexto de 500K tokens; admite xhigh; conocimiento hasta 2026-05 |
grok-4.6 | Modelo xAI de razonamiento y uso de herramientas, ventana de contexto de 500K; añade el nivel de razonamiento xhigh; corte de conocimiento 2026-02-01 |
grok-4.5 | Modelo xAI de razonamiento y uso de herramientas, ventana de contexto de 500K; niveles de razonamiento hasta high (xhigh se acepta pero se degrada a high) |
grok-4.7, grok-4.6, grok-4.5 "grok-4.7"
Lista de mensajes de chat. Admite los roles system, user y assistant.
1Show child attributes
Show child attributes
[
{
"role": "system",
"content": "You are a concise assistant."
},
{
"role": "user",
"content": "Explain prompt caching in one sentence."
}
]
Indica si se devuelve una respuesta en streaming (SSE, eventos chat.completion.chunk). Predeterminado false.
false
Número máximo de tokens a generar.
1024
Nivel de razonamiento: low / medium / high (predeterminado) / xhigh. El razonamiento no se puede desactivar. grok-4.7 y grok-4.6 admiten xhigh; grok-4.5 lo acepta pero lo trata como high. Los tokens de razonamiento se facturan como tokens de salida.
low, medium, high, xhigh Temperatura de muestreo (0-2). Los valores más altos producen una salida más aleatoria.
0.7
Parámetro de muestreo nucleus (0-1).
0.95
Esta página describe las herramientas OpenAI normales de tipo function (llamadas a funciones del cliente sin tarifa de llamada a herramientas del servidor). Consulta la Responses API para configurar herramientas del servidor, como búsqueda web y búsqueda en X, y revisar su uso.
Show child attributes
Show child attributes
Controla la selección de la función: "auto" / "none" / "required", o un objeto que fija una función concreta.
auto, none, required Clave opcional de enrutamiento de caché. Un valor estable para la misma conversación o para solicitudes con el mismo prefijo de prompt puede mejorar la probabilidad de acierto. No se garantiza el acierto ni cambian las reglas de facturación de caché. Consulta cached_tokens en usage para conocer los aciertos reales.
"grok-session-001"
Respuesta
Completado de chat generado exitosamente (objeto JSON, o un flujo SSE de eventos chat.completion.chunk cuando stream=true)
Identificador único para la completación de chat
"chatcmpl-20260812164515123456789AbCdEfGh"
Nombre del modelo realmente utilizado
"grok-4.7"
Tipo de respuesta
chat.completion "chat.completion"
Marca de tiempo de creación
1786538000
Lista de opciones de completado de chat
Show child attributes
Show child attributes
Estadísticas de uso de tokens. Los prompts de 200K tokens o más se facturan al doble en todos los tipos de token (entrada, entrada en caché, salida).
Show child attributes
Show child attributes