# Doubao Seed 2.1 Turbo — /chat/completions

Chat completions compatibles con OpenAI respaldados por ByteDance Doubao Seed 2.1 Turbo, la versión económica de la familia Seed 2.1, con aproximadamente la mitad del precio unitario de Pro. El razonamiento está activado por defecto; se devuelve en message.reasoning_content y sus tokens se facturan a la tarifa de salida dentro de usage.completion_tokens. Con reasoning_effort: "minimal" suele saltarse el razonamiento, aunque con menos fiabilidad que Pro (8 de 12 llamadas en nuestras pruebas; el parámetro thinking no tiene efecto). max_tokens no limita la salida; la facturación sigue el usage. Un prefijo largo repetido puede acertar en la caché automáticamente, y esa parte se liquida a la tarifa de caché. Admite llamadas a herramientas, salida JSON, streaming y entrada de imágenes (base64 o enlaces públicos); usa stream=true para respuestas largas. Indica model=doubao-seed-2-1-turbo; solo se sirve en /v1/chat/completions.

**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í doubao-seed-2-1-turbo. |
| `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. |
| `temperature` | number | No | Temperatura de muestreo, 0–2. |
| `max_tokens` | integer | No | Se acepta, pero no limita la salida (con 60 o 100 seguimos obteniendo de cientos a miles de tokens en nuestras pruebas); la facturación sigue el usage. Para respuestas cortas, pide brevedad en el prompt. |
| `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. "minimal" suele saltarse el razonamiento, aunque con menos fiabilidad que en Pro (8 de 12 llamadas en nuestras pruebas); si se omite, el modelo piensa primero. El parámetro thinking no tiene efecto en este modelo. |

## 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": "doubao-seed-2-1-turbo", "messages": [{"role": "user", "content": "Hello"}], "stream": false}'
```

## Respuesta
```json
{
  "id": "chatcmpl_xxx",
  "object": "chat.completion",
  "model": "doubao-seed-2-1-turbo",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning_content": "The user is greeting me, so a short friendly reply fits...",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 42,
    "total_tokens": 51,
    "completion_tokens_details": {"reasoning_tokens": 31}
  }
}
```

## 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": "doubao-seed-2-1-turbo", "messages": [{"role": "user", "content": [{"type": "text", "text": "What is in this image?"}, {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}]}]}'
```