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

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

# Chat Completions

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

Resposta do modelo a uma conversa no formato OpenAI. É o formato mais comum: é compatível com quase todos os clientes.

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": "Explique em duas frases o que é uma 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": "Explique em duas frases o que é uma 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: "Explique em duas frases o que é uma 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": "Uma API é um acordo sobre como um programa pede a outro que faça algo…"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 48,
    "total_tokens": 69
  }
}
```

## Autorização

| Parâmetro | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `Authorization` | header | obrigatório | Chave no formato `Bearer sk-…`. Também são aceites os cabeçalhos `x-api-key` ou `x-goog-api-key`. |

## Corpo do pedido

| Parâmetro | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `model` | string | obrigatório | ID do modelo do [catálogo](https://ailoot.ai/models/pt-pt/), por exemplo `claude-sonnet-5-5`. O modelo tem de suportar o formato OpenAI Chat. |
| `messages` | array | obrigatório | Histórico da conversa: objetos com `role` (`system`, `developer`, `user`, `assistant`, `tool`) e `content` — uma cadeia de caracteres ou um array de partes (texto, `image_url`). |
| `stream` | boolean | opcional | Resposta no formato Server-Sent Events. Por predefinição, `false`. O texto pago chega num único bloco após o cálculo do custo, e não palavra a palavra. |
| `stream_options` | object | opcional | `{"include_usage": true}` — enviar os dados finais de `usage` no último evento do fluxo. |
| `max_tokens` | integer | opcional | Número máximo de tokens da resposta. O novo nome é `max_completion_tokens`. Se não indicar um limite, o Ailoot utiliza 4096 (ou menos, se o limite de resposta do modelo for inferior; o Grok tem o seu próprio limite). Para respostas longas, defina o limite explicitamente; caso contrário, a resposta termina aos 4096 tokens com `finish_reason: "length"`. O limite é incluído na reserva: quanto maior for, mais saldo disponível é necessário. |
| `temperature` | number | opcional | Aleatoriedade da resposta, normalmente de 0 a 2. Pode ser ignorada pelos modelos de raciocínio. |
| `top_p` | number | opcional | Alternativa a temperature: proporção da massa de probabilidade utilizada para selecionar tokens. |
| `stop` | string \| array | opcional | Cadeias de caracteres nas quais a geração deve parar. |
| `tools` | array | opcional | Descrições das funções que o modelo pode chamar. O formato é o mesmo do OpenAI: `{"type": "function", "function": {...}}`. |
| `tool_choice` | string \| object | opcional | `auto`, `none`, `required` ou uma função específica. |
| `response_format` | object | opcional | `{"type": "json_object"}` ou `{"type": "json_schema", ...}` para uma resposta estruturada — se o modelo o suportar. |
| `reasoning_effort` | string | opcional | Profundidade de raciocínio dos modelos de raciocínio: `low`, `medium`, `high`. |

Os restantes parâmetros OpenAI são transmitidos sem alterações; o suporte de cada parâmetro depende do programador do modelo.

## Resposta

| Parâmetro | Tipo | Obrigatório | Descrição |
| --- | --- | --- | --- |
| `choices[].message` | object |  | Resposta do modelo: `content`, ao chamar ferramentas — `tool_calls`. |
| `choices[].finish_reason` | string |  | `stop` — resposta concluída; `length` — atingiu o limite de `max_tokens` (a resposta continua a ser considerada completa e é cobrada pelo uso efetivo); `tool_calls` — o modelo está a chamar uma ferramenta. |
| `usage` | object |  | `prompt_tokens`, `completion_tokens`, `total_tokens` — são utilizados para calcular o débito. |

Ainda tem dúvidas? Envie o Request ID e uma descrição — ajudamos a esclarecer.[Contactar o suporte](mailto:support@ailoot.ai)

## Ailoot · A empresa e a sua carteira de projetos





A Ailoot assenta numa experiência operacional consolidada, numa ampla base de clientes, num serviço estável e no acompanhamento contínuo dos KPI.





A empresa e a sua carteira de projetos: milhões de clientes; vendas mensais na ordem dos milhares de milhões.





A Ailoot aplica essa experiência operacional ao acesso por API a funcionalidades de IA nos produtos dos clientes, agentes, aplicações e automatizações.
