Ir para o conteúdo

Chat Completions

Gera uma resposta a partir de uma lista de mensagens, com ou sem streaming.

Atualizado em 16 de set. de 2026

O endpoint central da API. Envie o histórico como uma lista de mensagens e receba a próxima resposta do modelo — a chamada é sem estado, então o contexto é exatamente o que você mandou. O uso guiado está em Geração de texto.

POSThttps://api.hinow.ai/v1/chat/completionsBearer

Gera uma resposta a partir de uma lista de mensagens. Suporta streaming por SSE.

Parâmetros

  • modelstring· bodyobrigatório

    Id namespaced do modelo, como `hinow/himax`.

  • messagesarray· bodyobrigatório

    Mensagens da conversa. O conteúdo pode incluir texto e, nos modelos compatíveis, partes como `image_url`.

  • streamboolean· body

    Devolve os tokens conforme saem, por SSE. O `usage` vem no último evento.

  • temperaturenumber· body

    Controla a variação da amostragem. Valores menores tendem a produzir respostas mais estáveis.

  • max_tokensinteger· body

    Teto de tokens da resposta. Ao cortar, o `finish_reason` vem `"length"`.

  • response_formatobject· body

    `{"type": "json_object"}` solicita conteúdo em JSON. Valide os campos na aplicação.

  • toolsarray· body

    Ferramentas em JSON Schema para chamada de função.

  • tool_choicestring· body

    `"auto"` deixa o modelo decidir se chama uma ferramenta.

  • reasoningobject· body

    Controle de raciocínio: `{ effort, enabled, exclude, max_tokens }`. Ver a página Raciocínio.

  • reasoning_effortstring· body

    Atalho para `reasoning.effort`: `none`, `minimal`, `low`, `medium`, `high`, `xhigh` ou `max`.

  • include_reasoningboolean· body

    `false` esconde o raciocínio na resposta (o mesmo que `reasoning.exclude: true`).

  • thinkingstring· body

    `"on"` ou `"off"`. Alias anterior de `reasoning.enabled`; continua aceito.

Respostas

200Resposta gerada
{
  "id": "chatcmpl-R2dSu3p8...",
  "object": "chat.completion",
  "model": "hinow/hinova",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "..." },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 132, "completion_tokens": 60, "total_tokens": 192 }
}
400Corpo fora do formato (`invalid_request_error`)
404Modelo inexistente ou não liberado (`model_not_found`)
429Limite por minuto estourado (`rate_limit_exceeded`)

Raciocínio na resposta

Quando a chamada pede raciocínio (ou o modelo raciocina por padrão), a mensagem traz o traço junto do conteúdo, no padrão OpenRouter. Como ligar, escolher o nível e esconder está em Raciocínio.

CampoO que diz
message.reasoningO raciocínio como texto; ausente com exclude
message.reasoning_details[]type, text, format, index e, quando houver, signature
native_finish_reasonO motivo de parada original do modelo
usage.completion_tokens_details.reasoning_tokensTokens de saída gastos em raciocínio
usage.prompt_tokens_details.cached_tokensTokens de entrada servidos do cache

Em streaming, delta.reasoning chega antes de delta.content.

finish_reason

ValorO que significaO que fazer
stopO modelo terminou a respostaNada — é o caso normal
lengthA geração bateu no max_tokensA resposta está cortada; aumente o teto ou peça mais curto no prompt
tool_callsO modelo pediu uma ferramentaLeia message.tool_calls e devolva o resultado

Streaming e contagem de tokens

Com stream: true o campo usage só aparece no último evento, junto do finish_reason, e o fluxo encerra com data: [DONE]. Consuma o evento final quando precisar registrar a contagem retornada pela API.