Source: https://ailoot.ai/docs/es/api/chat-completions/
Canonical: https://ailoot.ai/docs/es/api/chat-completions/
Language: es

[API](https://ailoot.ai/docs/es/) 

# Chat Completions

[Markdown](https://ailoot.ai/docs/es/api/chat-completions/index.md)

Respuesta del modelo a una conversación en formato OpenAI. Es el formato más extendido: casi todos los clientes lo admiten.

POST`https://api.ailoot.ai/v1/chat/completions`

Chat Completions

```bash
curl https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5-5",
    "messages": [
      {"role": "user", "content": "Explica en dos frases qué es una API."}
    ]
  }' 
```

```python
from openai import OpenAI
import os

client = OpenAI(max_retries=0, 
    base_url="https://api.ailoot.ai/v1",
    api_key=os.environ["AILOOT_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Explica en dos frases qué es una API."}],
)
print(resp.choices[0].message.content)
```

```js
import OpenAI from "openai";

const client = new OpenAI({ maxRetries: 0,
  baseURL: "https://api.ailoot.ai/v1",
  apiKey: process.env.AILOOT_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "claude-sonnet-5-5",
  messages: [{ role: "user", content: "Explica en dos frases qué es una API." }],
});
console.log(resp.choices[0].message.content);
```

200 OK

```json
{
  "id": "chatcmpl-8f2c…",
  "object": "chat.completion",
  "created": 1790812800,
  "model": "claude-sonnet-5-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Una API es un acuerdo sobre cómo un programa le pide a otro que haga algo…"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 48,
    "total_tokens": 69
  }
}
```

## Autenticación

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `Authorization` | header | obligatorio | Clave en formato `Bearer sk-…`. También se admiten las cabeceras `x-api-key` o `x-goog-api-key`. |

## Cuerpo de la solicitud

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `model` | string | obligatorio | ID de modelo del [catálogo](https://ailoot.ai/models/es/), por ejemplo, `claude-sonnet-5-5`. El modelo debe admitir el formato OpenAI Chat. |
| `messages` | array | obligatorio | Historial de conversación: objetos con `role` (`system`, `developer`, `user`, `assistant`, `tool`) y `content` como cadena o array de partes (texto, `image_url`). |
| `stream` | boolean | opcional | Respuesta en formato Server-Sent Events. El valor predeterminado es `false`. El texto de pago llega en un único bloque después de calcular el coste, no palabra a palabra. |
| `stream_options` | object | opcional | `{"include_usage": true}` : enviar el valor final de `usage` como último evento del flujo. |
| `max_tokens` | integer | opcional | Número máximo de tokens de respuesta. El nuevo nombre es `max_completion_tokens`. Si no se indica el límite, Ailoot establece 4096 (o menos, si el máximo de respuesta del modelo es inferior; Grok tiene su propio límite). Para respuestas largas, indica el límite expresamente; de lo contrario, la respuesta se detendrá en 4096 tokens con `finish_reason: "length"`. El límite forma parte de la reserva: cuanto mayor sea, más saldo disponible se necesita. |
| `temperature` | number | opcional | Aleatoriedad de la respuesta, normalmente de 0 a 2. Los modelos de razonamiento pueden ignorarla. |
| `top_p` | number | opcional | Alternativa a temperature: proporción de la masa de probabilidad para seleccionar tokens. |
| `stop` | string \| array | opcional | Cadenas que detienen la generación. |
| `tools` | array | opcional | Definiciones de funciones que puede llamar el modelo. El formato es el de OpenAI: `{"type": "function", "function": {...}}`. |
| `tool_choice` | string \| object | opcional | `auto`, `none`, `required` o una función concreta. |
| `response_format` | object | opcional | `{"type": "json_object"}` o `{"type": "json_schema", ...}` para obtener una respuesta estructurada, si el modelo lo admite. |
| `reasoning_effort` | string | opcional | Intensidad de razonamiento en los modelos que razonan: `low`, `medium`, `high`. |

Los demás parámetros de OpenAI se transmiten sin cambios; el desarrollador del modelo determina si ese modelo los admite.

## Respuesta

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `choices[].message` | object |  | Respuesta del modelo: `content`; si llama a herramientas, `tool_calls`. |
| `choices[].finish_reason` | string |  | `stop` : la respuesta ha terminado; `length` : se ha alcanzado `max_tokens` (la respuesta sigue siendo completa y se factura por el uso real); `tool_calls` : el modelo llama a una herramienta. |
| `usage` | object |  | `prompt_tokens`, `completion_tokens`, `total_tokens` : se utilizan para calcular el cargo. |

¿Tienes alguna pregunta? Envíanos el Request ID y una descripción; te ayudaremos a resolverla.[Contactar con soporte](mailto:support@ailoot.ai)

## Ailoot · La empresa y su cartera de proyectos





Ailoot se apoya en la experiencia operativa acumulada, una amplia base de clientes, un servicio estable y el seguimiento continuo de KPI.





La empresa y su cartera de proyectos: millones de clientes; ventas por miles de millones al mes.





Ailoot aplica esa experiencia operativa al acceso por API a funciones de IA en productos de clientes, agentes, aplicaciones y automatizaciones.
