Documentación de API Hop
Chat Completions común
API de chat unificada para cambiar de modelo de texto mediante `model`. El formato de solicitud es compatible con OpenAI Chat Completions.
https://api.apihop.ai/v1/chat-completionsAPI de chat unificada para cambiar de modelo de texto mediante model. El formato de solicitud es compatible con OpenAI Chat Completions.
El proveedor admite Claude Sonnet 4.6 (claude-sonnet-4-6), pero actualmente no está publicado en RequestBeam. No es un valor predeterminado activo de integración. Antes de llamar a cualquier modelo, confirma el acceso con tu propia respuesta de GET https://api.apihop.ai/v1/models.
Este endpoint devuelve una respuesta JSON completa de forma predeterminada. Establece stream: true explícitamente cuando necesites streaming SSE.
POST https://api.apihop.ai/v1/chat-completionsAutenticación
Todas las solicitudes requieren autenticación mediante token Bearer.
Authorization: Bearer YOUR_API_KEYSi falla la autenticación, comprueba:
- Si la clave de API es correcta
- Si la clave es válida para esta URL base de API
- Si la cabecera de solicitud está escrita correctamente
- Si un proxy reescribe la cabecera de autorización
Cuerpo
modelstringobligatorioPredeterminado: gpt-5.4ID de modelos de texto documentados (confirma el acceso con GET https://api.apihop.ai/v1/models):
- OpenAI:
gpt-5.4,gpt-5.5,gpt-5.6-sol,gpt-5.6-terra,gpt-6-astra - Anthropic:
claude-fable-5,claude-fable-5-1,claude-opus-4-6,claude-opus-4-7,claude-opus-4-8,claude-opus-5,claude-opus-5-5,claude-sonnet-5,claude-sonnet-5-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro,deepseek-v4.1-flash
(V4.1 Flash es un ID distinto, disponible solo tras desplegar y activar; consulta GET https://api.apihop.ai/v1/models).
- Gemini:
gemini-3.6-flash,gemini-3.7-flash,gemini-3.8-flash,gemini-3.5-flash-lite,gemini-4-argon(tras desplegar y activar) - Kimi:
kimi-k3 - MiniMax:
minimax-m3
Consulta el Catálogo de modelos para la lista completa y los modelos visibles para la clave actual. Usa tu propia respuesta de GET https://api.apihop.ai/v1/models como fuente actual de disponibilidad. Consulta las guías de DeepSeek, Gemini, Kimi y MiniMax para notas de selección y ejemplos por familia.
messagesobject[]obligatorioMensajes del chat. Cada mensaje debe incluir:
role:system,useroassistantcontent: contenido del mensaje
Ejemplo:
[
{"role": "system", "content": "You are a helpful Python tutor."},
{"role": "user", "content": "How should I learn programming?"}
]Límites de muestreo específicos del modelo: gpt-6-astra no acepta los campos antiguos temperature, top_p ni top_logprobs; omítelos aunque un cliente antiguo los incluya. El Playground de GPT-6 Astra de RequestBeam también oculta los controles antiguos de muestreo y penalizaciones. claude-sonnet-5 rechazó top_p en una revisión documentada de integración; omítelo también para ese modelo. Pasar un campo opcional por un proxy no demuestra que el modelo del proveedor lo admita.
temperaturenumberPredeterminado: 1.0Temperatura de muestreo. Los clientes compatibles con OpenAI suelen usar de 0 a 2, pero el modelo elegido toma la decisión final de validación.
max_tokensintegerMáximo opcional de tokens de salida, como entero positivo. Omite el campo para usar el valor predeterminado del proveedor para el modelo; los valores por defecto y máximos varían según el modelo y la configuración del proveedor.
Según el modelo, el límite puede incluir tokens de razonamiento y texto final. Un límite pequeño puede causar finish_reason: "length", truncar la respuesta o agotarse antes del texto final. Aumentarlo puede incrementar el coste.
max_completion_tokensintegerAlternativa opcional de compatibilidad a max_tokens, con las mismas consideraciones de límite. Un modelo puede aceptar solo uno de estos campos, por lo que conviene empezar con un cuerpo mínimo al cambiar de modelo. Omite ambos para usar el valor predeterminado del proveedor.
streambooleanPredeterminado: falseSi se transmite la respuesta en streaming.
true: devuelve eventos enviados por el servidor (SSE)false: devuelve una respuesta completa
top_pnumberPredeterminado: 1.0Parámetro de muestreo de núcleo. Los clientes compatibles con OpenAI suelen usar de 0 a 1; el modelo elegido realiza la validación final.
frequency_penaltynumberPredeterminado: 0Penalización por frecuencia. Los clientes compatibles con OpenAI suelen usar de -2.0 a 2.0; el modelo elegido realiza la validación final.
presence_penaltynumberPredeterminado: 0Penalización por presencia. Los clientes compatibles con OpenAI suelen usar de -2.0 a 2.0; el modelo elegido realiza la validación final.
stopstring | arraySecuencia de parada o matriz de secuencias. El modelo elegido determina la cantidad aceptada y el comportamiento.
nintegerPredeterminado: 1Número de respuestas que generar. Usa un número como 1, no una cadena entre comillas.
Diferencias de parámetros entre modelos
Los modelos de texto actuales admiten solicitudes mínimas de chat con y sin streaming, pero la aceptación y los efectos de los parámetros opcionales varían según el modelo y su implementación de compatibilidad.
La última revisión del 2026-09-26 aceptó claude-fable-5 con temperature: 0 y devolvió texto. La misma revisión rechazó claude-sonnet-5 con top_p: 0.9, con HTTP 400 y top_p is deprecated. Omite top_p para ese modelo. La aceptación no demuestra un efecto sobre el muestreo ni garantiza otros modelos o solicitudes futuras; no supongas que se admiten todos los parámetros de muestreo.
Las comprobaciones de OpenAI del 2026-09-26 aceptaron stop para gpt-5.6-sol y gpt-5.6-terra. La aceptación puede cambiar con el proveedor y no demuestra que la secuencia de parada sea efectiva.
El reenvío nativo de chat compatible con OpenAI conserva top_p y stop en la solicitud al proveedor. Una ruta que convierte Chat a Responses conserva top_p pero no reenvía stop. Reenviar un campo no demuestra la compatibilidad del proveedor ni su efecto; ninguno tiene una garantía global en todas las rutas.
Empieza con una solicitud mínima al cambiar de modelo y verifica por separado muestreo, secuencias de parada y parámetros avanzados de herramientas. Para las secuencias de parada, inspecciona el texto real y el motivo de finalización, no solo el estado HTTP. HTTP 200 no demuestra un efecto de muestreo. Los límites de salida deben cubrir tanto el razonamiento como el texto final.
Ejemplo de solicitud
{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "Hello, introduce yourself briefly."
}
],
"stream": false
}Respuesta
idstringIdentificador único de la respuesta.
objectstringTipo de objeto, normalmente chat.completion o chat.completion.chunk para streaming.
createdintegerMarca de tiempo Unix de creación.
modelstringIdentificador del modelo devuelto en la respuesta.
choicesarrayOpciones generadas, incluidos el contenido del mensaje, índice y motivo de finalización.
usageobjectEstadísticas de uso de tokens.
Ejemplo correcto
{
"id": "chatcmpl-9876543210",
"object": "chat.completion",
"created": 1677652288,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I am an AI assistant that can help with writing, coding, and analysis."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 42,
"total_tokens": 70
}
}Respuesta de error
Consulta Códigos de error y resolución de problemas para la referencia completa de códigos, diferencias de protocolo y pasos de diagnóstico.
Los errores HTTP de Chat Completions usan un cuerpo JSON plano, incluidos los errores HTTP del proveedor devueltos antes de iniciar un flujo SSE. Por ejemplo, HTTP 402 devuelve:
{
"code": 40000,
"message": "Insufficient credit. Required: 30000, Available: 20000",
"type": "api_error"
}code: código numérico de error de plataforma, independiente del estado HTTP y no una cadenamessage: descripción del error legible por personastype:api_errorrequestId: identificador opcional de solicitud para diagnóstico
| Estado HTTP | code | Significado |
|---|---|---|
| 400 | 10000 | Solicitud no válida |
| 401 | 20000 | Autenticación ausente o no válida |
| 402 | 40000 | Saldo insuficiente |
| 403 | 20001 | Acceso denegado o modelo no disponible para esta clave |
| 404 | 30000 | Modelo o recurso no encontrado |
| 409 | 30001 | Conflicto de solicitud |
| 422 | 10001 | Error de validación |
| 429 | 40001 | Límite de velocidad superado |
| 500 | 50003 | Error interno |
| 502 | 50000 | Error del proveedor |
| 503 | 50001 | Servicio no disponible |
| 504 | 50002 | Tiempo de espera de la pasarela agotado |
Comprueba primero el estado HTTP para saber si la solicitud tuvo éxito y después compara el code numérico para el tratamiento específico de la aplicación. No compares code con cadenas como "400", no supongas que coincide con el estado HTTP ni analices message como un identificador estable. Un campo messages ausente o de tipo incorrecto se rechaza con HTTP 400 y code: 10000 antes de llamar al proveedor.
Este formato de error se aplica a las respuestas HTTP de Chat Completions, no a errores dentro de un flujo SSE ya iniciado ni a otros protocolos de API. El catálogo de modelos y los endpoints de protocolos nativos tienen sus propios formatos documentados.