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": "Solicitud inválida",
"type": "invalid_request_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Error de autenticación",
"type": "authentication_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Error de facturación",
"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": "No encontrado",
"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": "Error interno del servidor",
"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": "Cambia la BaseURL a https://direct.evolink.ai; este endpoint es más adecuado para tareas largas"
}Claude - API de mensajes
- Envía una lista estructurada de mensajes de entrada con contenido de texto y/o imagen, y el modelo generará el siguiente mensaje en la conversación.
- La API de Mensajes se puede usar para consultas individuales o conversaciones de múltiples turnos sin estado.
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": "Solicitud inválida",
"type": "invalid_request_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Error de autenticación",
"type": "authentication_error"
},
"request_id": "<string>",
"type": "error"
}{
"error": {
"message": "Error de facturación",
"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": "No encontrado",
"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": "Error interno del servidor",
"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": "Cambia la BaseURL a https://direct.evolink.ai; este endpoint es más adecuado para tareas largas"
}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.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
El modelo utilizado para generar la respuesta. Seleccione uno de los ID de modelo compatibles que se muestran a continuación.
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"
El número máximo de tokens a generar antes de detenerse.
Tenga en cuenta que nuestros modelos pueden detenerse antes de alcanzar este máximo. Este parámetro solo especifica el número máximo absoluto de tokens a generar.
x >= 11024
Mensajes de entrada.
Nuestros modelos están entrenados para operar en turnos conversacionales alternos de user y assistant. Al crear un nuevo Message, se especifican los turnos conversacionales previos con el parámetro messages, y el modelo genera el siguiente Message en la conversación. Los turnos consecutivos de user o assistant en su solicitud se combinarán en un solo turno.
Cada mensaje de entrada debe ser un objeto con role y content. Puede especificar un solo mensaje con rol user, o puede incluir múltiples mensajes de user y assistant.
1 - 100000 elementsShow child attributes
Show child attributes
Parámetros del contenedor con habilidades a cargar.
Show child attributes
Show child attributes
Opciones de configuración para la salida del modelo, como el formato de salida.
Show child attributes
Show child attributes
Secuencias de texto personalizadas que harán que el modelo deje de generar.
Si transmitir incrementalmente la respuesta usando eventos enviados por el servidor.
Prompt del sistema.
"Today's date is 2024-06-01."
Cantidad de aleatoriedad inyectada en la respuesta.
Por defecto es 1.0. Rango de 0.0 a 1.0.
0 <= x <= 11
Configuración para habilitar el pensamiento extendido de Claude.
type: "enabled" requiere budget_tokens, con un mínimo de 1.024, y cuenta dentro de max_tokens.
type: "adaptive" permite que Claude decida cuándo y cuánto pensamiento extendido usar según la complejidad de la solicitud.
type: "disabled" desactiva el pensamiento extendido.
- Habilitar streaming SSE **Detalles**: - `true`: Devuelve resultados parciales del mensaje usando eventos enviados por el servidor - `false`: Devuelve el resultado completo de una vez (por defecto)
- Adaptive
- Deshabilitado
Show child attributes
Show child attributes
Cómo el modelo debe usar las herramientas proporcionadas.
- Auto
- Any
- Herramienta
- None
Show child attributes
Show child attributes
Definiciones de herramientas del cliente que el modelo puede usar. Cada herramienta incluye name, description opcional e input_schema.
Show child attributes
Show child attributes
Solo muestrear de las K opciones principales para cada token subsiguiente.
x >= 05
Usar muestreo de núcleo.
0 <= x <= 10.7
Respuesta
Objeto de mensaje
Identificador único del objeto.
El formato y la longitud de los IDs pueden cambiar con el tiempo.
"msg_013Zva2CMHLNnXjNJJKqJ2EF"
Tipo de objeto.
Para Messages, esto siempre es "message".
"message"Rol conversacional del mensaje generado.
Esto siempre será "assistant".
"assistant"Contenido generado por el modelo.
Este es un array de bloques de contenido, cada uno con un type que determina su forma.
- Texto
- Pensamiento
- Contenido de razonamiento del modelo (solo disponible para modelos thinking, devuelto cuando el modelo genera proceso de pensamiento)
- Uso de herramienta
- Uso de herramientas del servidor
- Resultado de herramienta de búsqueda web
- ResponseWebFetchToolResultBlock
- Resultado de herramienta de ejecución de código
- ResponseBashCodeExecutionToolResultBlock
- ResponseTextEditorCodeExecutionToolResultBlock
- Uso de herramienta MCP
- Resultado de herramienta MCP
- Subida de contenedor
Show child attributes
Show child attributes
El modelo que procesó la solicitud.
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 razón por la que nos detuvimos.
end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal, model_context_window_exceeded Qué secuencia de parada personalizada se generó, si alguna.
Uso de facturación y límite de tasa.
Show child attributes
Show child attributes
Respuesta de gestión de contexto.
Show child attributes
Show child attributes
Información sobre el contenedor utilizado en esta solicitud.
Show child attributes
Show child attributes