curl --request POST \
--url https://direct.evolink.ai/v1beta/models/{model}:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Please introduce yourself"
}
]
}
]
}
'{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "Hello! I'm pleased to introduce myself.\n\nI'm a large language model, trained and developed by Google...",
"thought": true,
"thoughtSignature": "<Signature_A>"
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{}
]
}
],
"promptFeedback": {
"safetyRatings": [
{}
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
],
"cachedContentTokenCount": 0
},
"modelVersion": "gemini-3.6-flash",
"responseId": "l-LoaPu0BPmo1dkP6ZPHiQc"
}{
"error": {
"code": 400,
"message": "Parámetros de solicitud inválidos",
"type": "invalid_request_error"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "Cuota insuficiente",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}
}{
"error": {
"code": 403,
"message": "Access denied for this model",
"type": "permission_error"
}
}{
"error": {
"code": 404,
"message": "Model not found",
"type": "not_found_error"
}
}{
"error": {
"code": 413,
"message": "Cuerpo de solicitud demasiado grande",
"type": "request_too_large_error",
"fallback_suggestion": "reduce file size"
}
}{
"error": {
"code": 429,
"message": "Semilla aleatoria, rango `[1, 2147483647]`\n\n**Nota:**\n- Usar el mismo valor de semilla puede mantener resultados de generación consistentes\n- Dejar vacío para semilla aleatoria",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "Error interno del servidor",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 502,
"message": "Upstream AI service unavailable",
"type": "upstream_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "Servicio temporalmente no disponible",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}Interfaz de todos los modelos Gemini - formato de API nativa
Selecciona el modelo de texto Gemini que deseas invocar mediante {model} en la ruta (consulta la tabla de referencia del parámetro model para ver todos los valores posibles).
- Usa el formato de API nativa de Google y devuelve el contenido de la conversación de forma síncrona
- Entrada de texto plano / multimodal: entrada mixta de texto + imagen / audio / video
- Streaming: reemplaza
generateContentporstreamGenerateContenten la ruta (puedes añadir?alt=ssepara obtener SSE)
Especificaciones y diferencias de los modelos
- Comportamiento de 3.8: en comparación con 3.7, mejora la ingeniería de software, los agentes, el razonamiento multipaso y la precisión multimodal; puede consumir más tokens de razonamiento / salida, especialmente con
high. Usalowcuando la latencia sea crítica, el valor predeterminadomediumpara uso general yhighpara código complejo, vídeos largos o razonamiento multipaso. - Parámetros de muestreo
temperature/topP/topK: consistente en toda la serie Gemini 3.x, los valores personalizados no afectan a la salida;topKse ignora y no surte efecto, ytemperature/topPdevuelven un 400 si están fuera del rango válido. - Control del razonamiento: la serie Gemini 3.x usa
thinkingConfig.thinkingLevel(consulta el parámetrothinkingLevelpara ver los niveles admitidos y el valor por defecto de cada modelo); la serie Gemini 2.5 usathinkingConfig.thinkingBudget(entero,0=desactivado). Ambos son mutuamente excluyentes.gemini-3.8-flash/gemini-3.7-flashy la serie Pro no admitenminimal; si se envía, se degrada automáticamente alow. - Llamadas a funciones: en Gemini 3.x, el
FunctionResponsedebe devolver elidy elnameque coincidan con elFunctionCallcorrespondiente; de lo contrario, se produce un error. - Rol del último turno: el
roledel último mensaje no puede sermodel(Gemini 3.5+ devuelve un error). - Límite de tokens:
gemini-3.8-flash/gemini-3.7-flash/gemini-3.6-flash/gemini-3.5-flash-litetienen un contexto de 1,048,576 y una salida máxima de 65,536; el resto de los modelos se rigen por sus propias especificaciones.
curl --request POST \
--url https://direct.evolink.ai/v1beta/models/{model}:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Please introduce yourself"
}
]
}
]
}
'{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "Hello! I'm pleased to introduce myself.\n\nI'm a large language model, trained and developed by Google...",
"thought": true,
"thoughtSignature": "<Signature_A>"
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{}
]
}
],
"promptFeedback": {
"safetyRatings": [
{}
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 611,
"totalTokenCount": 2422,
"thoughtsTokenCount": 1807,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
],
"cachedContentTokenCount": 0
},
"modelVersion": "gemini-3.6-flash",
"responseId": "l-LoaPu0BPmo1dkP6ZPHiQc"
}{
"error": {
"code": 400,
"message": "Parámetros de solicitud inválidos",
"type": "invalid_request_error"
}
}{
"error": {
"code": 401,
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": 402,
"message": "Cuota insuficiente",
"type": "insufficient_quota_error",
"fallback_suggestion": "https://evolink.ai/dashboard/billing"
}
}{
"error": {
"code": 403,
"message": "Access denied for this model",
"type": "permission_error"
}
}{
"error": {
"code": 404,
"message": "Model not found",
"type": "not_found_error"
}
}{
"error": {
"code": 413,
"message": "Cuerpo de solicitud demasiado grande",
"type": "request_too_large_error",
"fallback_suggestion": "reduce file size"
}
}{
"error": {
"code": 429,
"message": "Semilla aleatoria, rango `[1, 2147483647]`\n\n**Nota:**\n- Usar el mismo valor de semilla puede mantener resultados de generación consistentes\n- Dejar vacío para semilla aleatoria",
"type": "rate_limit_error",
"fallback_suggestion": "retry after 60 seconds"
}
}{
"error": {
"code": 500,
"message": "Error interno del servidor",
"type": "internal_server_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 502,
"message": "Upstream AI service unavailable",
"type": "upstream_error",
"fallback_suggestion": "try again later"
}
}{
"error": {
"code": 503,
"message": "Servicio temporalmente no disponible",
"type": "service_unavailable_error",
"fallback_suggestion": "retry after 30 seconds"
}
}generateContent por streamGenerateContent en la URL. Los parámetros del cuerpo de la solicitud son idénticos. Las respuestas se devolverán en bloques de streaming. Consulte la sección «Respuesta en streaming» a continuación para el formato de respuesta.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
Parámetros de ruta
Selecciona el modelo de texto Gemini que deseas invocar:
| ID del modelo | Serie | Posicionamiento |
|---|---|---|
gemini-3.8-flash | 3.8 Flash | Ingeniería de software / agentes / razonamiento multipaso / precisión multimodal mejorados |
gemini-3.7-flash | 3.7 Flash | Agentic de nivel Pro / generación de código / ejecución en terminal |
gemini-3.6-flash | 3.6 Flash | Orquestación multipaso / refactorización de código / razonamiento general |
gemini-3.5-flash | 3.5 Flash | Flash general |
gemini-3.5-flash-lite | 3.5 Flash-Lite | Bajo costo / alto rendimiento / agente ligero |
gemini-3.1-pro-preview | 3.1 Pro (Preview) | Razonamiento avanzado |
gemini-3.1-pro-preview-customtools | 3.1 Pro · CustomTools | Razonamiento avanzado + herramientas personalizadas |
gemini-3.1-flash-lite-preview | 3.1 Flash-Lite (Preview) | Bajo costo |
gemini-3-pro-preview | 3.0 Pro (Preview) | Razonamiento avanzado |
gemini-3-flash-preview | 3.0 Flash (Preview) | Flash general |
gemini-2.5-pro | 2.5 Pro | Razonamiento avanzado |
gemini-2.5-flash | 2.5 Flash | Flash general |
gemini-2.5-flash-lite | 2.5 Flash-Lite | Bajo costo |
gemini-3.8-flash, gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash, gemini-3.5-flash-lite, gemini-3.1-pro-preview, gemini-3.1-pro-preview-customtools, gemini-3.1-flash-lite-preview, gemini-3-pro-preview, gemini-3-flash-preview, gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite "gemini-3.6-flash"
Cuerpo
List of conversation contents, supports multi-turn dialogue and multimodal input
1Show child attributes
Show child attributes
Generation configuration parameters (optional)
Show child attributes
Show child attributes
System instruction (optional), mainly text content
Show child attributes
Show child attributes
List of tools the model can call, such as function calling or code execution
Tool calling configuration (optional)
Safety settings list (optional)
Cached content name, in the form cachedContents/{cachedContent}
Respuesta
Contenido generado exitosamente
Descripción del formato de respuesta:
- Al usar el endpoint
generateContent, devuelveGenerateContentResponse(devuelve la respuesta completa de una vez) - Al usar el endpoint
streamGenerateContent, devuelveStreamGenerateContentResponse(respuesta en streaming, devuelve contenido en fragmentos)
- Respuesta sincrónica
- Respuesta en streaming