# GPT-6 Sol — /chat/completions

Chat completions compatible con OpenAI sobre GPT-6 Sol, el modelo de la familia GPT-6 pensado para la programación compleja y los flujos agénticos: contexto de 1 050 000 tokens, hasta 128 000 tokens de salida, reasoning_effort de none a max, entrada de imagen y llamada a herramientas. Pon model en gpt-6-sol; el mismo modelo también se sirve en /v1/responses. La entrada cacheada se liquida a una décima parte de la tarifa de entrada. Este modelo devuelve además un resumen del razonamiento: choices[].message.reasoning_content sin streaming y choices[].delta.reasoning_content con streaming. La respuesta en sí permanece en content y nunca se mezcla con el razonamiento, así que los clientes que solo leen content no necesitan cambios. Si se omite reasoning_effort, la pasarela pide el nivel medium (el valor por defecto del propio modelo) y el resumen llega igualmente. Facturación: los tokens de razonamiento se cobran a la tarifa de salida y se incluyen en usage.completion_tokens; usage.completion_tokens_details.reasoning_tokens detalla cuántos fueron de razonamiento, y esos tokens se facturan leas o no ese campo. Ten en cuenta que OpenAI solo expone un resumen del razonamiento, nunca la cadena de pensamiento en bruto, así que este campo suele ser corto. Nota: este modelo se sirve a través de un upstream de suscripción de ChatGPT que no acepta temperature / top_p / max_tokens / max_completion_tokens / frequency_penalty / presence_penalty; si los envías se ignoran sin avisar (sin error). Usa reasoning_effort para la profundidad del razonamiento y la redacción del prompt para la longitud. Para la entrada de imágenes usa una data: URI en base64 (una URL pública de imagen puede agotar el tiempo de espera en el upstream).

**Endpoint:** `POST https://nezhagate.com/v1/chat/completions`

## Autenticación
```
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## Cuerpo de la petición
| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `model` | string | Sí | ID del modelo; aquí gpt-6-sol. |
| `messages` | array | Sí | Array de mensajes; cada uno tiene role (system/user/assistant) y content. content puede ser una cadena o un array de partes {type:text} y {type:image_url} para comprensión de imágenes (multimodal/visión). |
| `stream` | boolean | No | Devuelve la respuesta en streaming como SSE. Por defecto false. |
| `web_search` | boolean | No | Ponlo en true para activar la búsqueda web: la pasarela amplía el prompt con resultados en tiempo real (citando las fuentes) antes de que el modelo responda. También se puede activar con una entrada {"type":"web_search"} en tools. |
| `reasoning_effort` | string | No | Esfuerzo de razonamiento: none / low / medium / high / xhigh / max. none omite por completo el razonamiento: es lo más rápido, pero los problemas de varios pasos pueden salir mal. Si lo omites, el gateway pide medium (el valor por defecto del propio modelo) y devuelve el resumen del razonamiento en message.reasoning_content. minimal se trata como low. |
| `tools` | array | No | Llamada a funciones. Pasa el array tools estándar de OpenAI; cuando el modelo decide invocar una, devuelve finish_reason=tool_calls junto con tool_calls. Combínalo con tool_choice para forzar una herramienta concreta. |
| `response_format` | object | No | Salida estructurada. Pasa {"type":"json_object"} para que el modelo devuelva únicamente JSON válido. |

## Ejemplo de petición
```bash
curl https://nezhagate.com/v1/chat/completions -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"model": "gpt-6-sol", "messages": [{"role": "user", "content": "Hello"}], "stream": false}'
```

## Respuesta
```json
{
  "id": "chatcmpl_xxx",
  "object": "chat.completion",
  "model": "gpt-6-sol",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning_content": "**Weighing the options** ... (a summary of how the model reasoned)",
        "content": "Hello!"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 11,
    "completion_tokens": 105,
    "total_tokens": 116,
    "completion_tokens_details": {"reasoning_tokens": 43}
  }
}
```

## Entrada de imagen (visión)
Pon una imagen en el array content del mensaje y el modelo la analizará (preguntas sobre la imagen, lectura de texto / OCR, etc.). image_url acepta un enlace público a la imagen o un data URL en base64 (data:image/png;base64,...). Disponible en los modelos multimodales (gpt-5.5, la serie gemini, etc.).

```bash
curl https://nezhagate.com/v1/chat/completions -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"model": "gpt-6-sol", "messages": [{"role": "user", "content": [{"type": "text", "text": "What is in this image?"}, {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}]}]}'
```