Introducción
Un endpoint de chat compatible con OpenAI para Grok 4.6 de xAI, donde una captura y la pregunta sobre ella llegan en el mismo turno.
Grok 4.6 viene de xAI y responde en POST https://api.spicyapi.ai/v1/chat/completions bajo el nombre de modelo xai/grok-4.6. La solicitud tiene la forma conocida: un arreglo messages de 256 turnos ordenados como máximo, un tope de salida, dos controles de muestreo, una lista de herramientas, un formato de respuesta y reasoning_effort para indicar cuánto trabaja el modelo antes de escribir. La ventana admite 500.000 tokens y una sola respuesta puede tomar 450.000 de ellos, así que la parte más grande del presupuesto queda del lado de la respuesta y no del lado del prompt. El contenido acepta partes text e image_url; en este endpoint no existe una parte de archivo ni de PDF, y la modalidad es texto e imágenes de entrada, texto de salida.
Funciones y aspectos destacados
Una imagen y la frase que la acompaña, en un turno
El contenido puede ser una cadena simple o un arreglo de partes, y una parte de imagen lleva una url más una indicación detail de auto, low o high. La captura y la pregunta llegan juntas, así que el modelo lee los píxeles en lugar de tu descripción de ellos, que es toda la diferencia cuando la respuesta depende de un eje mal rotulado, de un rastro de llamadas cortado en el borde o de una maquetación que solo se rompe a un ancho. El contenido de las imágenes se contabiliza dentro de la ventana de 500.000 tokens y no al lado, así que varias capturas grandes y un historial largo compiten por el mismo presupuesto.
Casi todo el presupuesto puede ir a la respuesta
Una sola respuesta alcanza 450.000 tokens, una forma poco común para un modelo de chat: la mayor parte de la ventana se puede gastar escribiendo en vez de leyendo. max_tokens sigue en 4.096 por defecto, así que una generación larga se pide a propósito y no se cae en ella por accidente, y un corte en el valor por defecto llega sin aviso. reasoning_effort toma low, medium, high o xhigh y parte de high; el esfuerzo se paga en tokens de salida, de modo que pesa a la vez en tu tope y en tu factura.
En el camino no hay nada nuestro
No ponemos ningún clasificador de contenido propio entre tú y este modelo. Lo que se niega a escribir es su propio comportamiento y no una capa insertada aquí, y lo que envías no se revisa, ni se puntúa, ni se reescribe de paso. Los derechos del material que envías son tuyos, y tú respondes por el uso que se le dé a la respuesta.
Parámetros de la solicitud
| Parámetro | Obligatorio | Descripción |
|---|---|---|
messages | Sí | 256 turnos como máximo. El contenido puede mezclar partes de texto e |
reasoning_effort | No | low, medium, high o xhigh; por defecto high. El esfuerzo se factura como salida. |
max_tokens | No | Limita la respuesta visible a 450.000; el valor por defecto de 4.096 trunca en silencio una respuesta larga. |
temperature | No | De 0 a 2, 0,7 por defecto. Usa 0 cuando compares dos mockups o dos corridas. |
top_p | No | De 0,01 a 1. Ajusta este valor o temperature, pero no ambos a la vez. |
tools | No | Hasta 128 definiciones de funciones por solicitud. máximo 128 elementos |
parallel_tool_calls | No | true o false, true por defecto: el modelo puede pedir varias llamadas a herramientas en un mismo turno. Valor predeterminado: |
tool_choice | No | auto, none, required, o un objeto que nombre la función a llamar. |
response_format | No | Pide un objeto JSON cuando la respuesta la lea código y no una persona. |
Precios
Entrada $2 / Salida $6 por 1 millón de tokens; Prompts de 200K tokens o más: Entrada $4 / Salida $12
La entrada total incluye los tokens en caché. A partir de 200.000 tokens de entrada se aplican las tarifas de contexto largo a toda la entrada, la entrada en caché y la salida de la solicitud; por debajo se aplican las tarifas estándar. La salida incluye los tokens de razonamiento. Revisa el presupuesto antes de enviar. La retención inicial se calcula sin descontar ahorro por caché, y la liquidación devuelve la diferencia respecto del uso medido.
Casos de uso
Revisa una captura en lugar de describirla
Manda la captura con detail high junto a la pregunta en un solo mensaje de usuario y el modelo trabaja sobre los píxeles: el rótulo de eje equivocado, la fila que desapareció, el cuadro cortado en el borde. Dos capturas con una hora de diferencia en el mismo turno te dejan preguntar qué número se movió, en vez de preguntar por un resumen escrito a mano.
Escribe algo del largo de un libro en una sola llamada
Sube max_tokens hacia 450.000 y la guía de migración, el informe largo o la batería completa de pruebas vuelve como una respuesta en lugar de una cadena de continuaciones, cada una de las cuales pierde un poco del hilo. Con stream: true el texto llega mientras todavía se está escribiendo.
Mantén legible un ciclo de herramientas
Declara hasta 128 definiciones de función, emparéjalas con tool_choice y devuelve cada resultado en el turno siguiente como un mensaje de rol tool. Deja reasoning_effort fijo para todo el ciclo y lo único que cambia entre iteraciones es la conversación, que es lo que hace que valga la pena leer el rastro cuando el ciclo falla.
Entrega la respuesta al código y no a una persona
Pide un objeto JSON con response_format y baja temperature a 0, y la respuesta vuelve como una estructura que tu parser toma directo. Combina eso con una parte de imagen y tienes extracción directa desde un comprobante, un gráfico o la captura de un formulario, sin un paso de transcripción en el medio.
Guía de prompts y consejos prácticos
Pon la imagen donde está la pregunta
Mantén la parte text y las partes image_url dentro del mismo mensaje de usuario en vez de mandar primero la imagen y después la pregunta. Di qué quieres que se lea de ahí, si un número, una diferencia o un veredicto, y nombra el panel cuando haya más de uno: detail high compra resolución, no atención.
POST https://api.spicyapi.ai/v1/chat/completions
{
"model": "xai/grok-4.6",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "These two captures are an hour apart on the same dashboard. Which metric regressed, and what in the second image explains it?"},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/c681580c3c6a0b63.jpeg", "detail": "high"}},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/59f0bc6291069978.jpeg", "detail": "high"}}
]
}
],
"reasoning_effort": "high",
"max_tokens": 4000
}
Gasta el esfuerzo donde cambia la respuesta
reasoning_effort parte de high, así que un campo omitido ya te hace pagar un ajuste cauteloso y los tokens de salida que vienen con él. Guarda xhigh para el trabajo que tiene que salir bien a la primera, usa medium para la revisión corriente y baja a low en los turnos cortos y mecánicos. El esfuerzo se factura como salida y comparte tope con la respuesta misma, así que un tope generoso en xhigh es una solicitud grande en los dos sentidos.
Mira en qué tramo cae la solicitud
La entrada y la entrada en caché se suman, y desde 200.000 tokens toda la solicitud se cobra con la tarifa de contexto largo, no solo la parte por encima de la línea. Recortar un historial de 210.000 tokens a 190.000 cambia entonces más que el costo de los tokens que quitaste. La retención tomada antes de la llamada no supone ningún ahorro de caché y la liquidación devuelve la diferencia respecto del uso medido, así que la cifra que ves al principio es un techo y no el precio.
Inicio rápido de la API
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "xai/grok-4.6/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
Consulta la referencia de la API para autenticación, el esquema completo, sondeo y gestión de errores.










