Endpoints
Chat completions
Referência de POST /chat/completions: o formato de chat da OpenAI para todos os modelos de texto, com mensagens, parâmetros, respostas e exemplos.
Teste no playgroundO endpoint de chat completions usa o formato de chat da OpenAI e funciona com todos os modelos de texto do catálogo: GPT, Claude, Gemini, Llama, DeepSeek, Mistral e centenas de outros. O corpo da requisição vai para o provedor upstream sem alterações. O api14 apenas verifica sua chave, modelo, limites e saldo, e depois registra o uso quando a requisição termina.
POST https://api14.com/api/v1/chat/completions
Authorization: Bearer sk-api14-...
Content-Type: application/json
Requisição
| Parâmetro | Tipo | Descrição |
|---|---|---|
model | string, obrigatório | Id do modelo, ex.: anthropic/claude-sonnet-4.5. Variantes como :online ou :nitro são permitidas. Veja Ids de modelo. |
messages | array, obrigatório | Conversa como objetos { role, content }. Papéis: system, developer, user, assistant, tool. |
models | string[] | Modelos de fallback a tentar em ordem se o primeiro falhar. Veja Roteamento de provedores. |
stream | boolean | Transmite tokens como server-sent events. Veja Streaming. |
max_tokens / max_completion_tokens | integer | Limite máximo de tokens gerados. |
temperature | number | Temperatura de amostragem, geralmente 0–2. |
top_p, top_k, min_p, top_a | number | Outros controles de amostragem. Modelos que não os suportam os ignoram. |
frequency_penalty, presence_penalty, repetition_penalty | number | Controles de repetição. |
stop | string | string[] | Sequências de parada. |
seed | integer | Amostragem determinística na base do melhor esforço. |
logprobs, top_logprobs | boolean, integer | Retorna as log-probabilidades dos tokens quando o modelo suporta. |
tools, tool_choice, parallel_tool_calls | Chamada de funções. Veja Chamada de ferramentas. | |
response_format | object | Modo JSON ou saída com JSON Schema. Veja Saídas estruturadas. |
reasoning, include_reasoning | object, boolean | Controles de raciocínio. Veja Raciocínio. |
plugins, web_search_options | Busca na web. Veja Busca na web. | |
provider | object | Preferências de provedor upstream. Veja Roteamento de provedores. |
modalities | string[] | ex.: ["image", "text"] para saída de imagem, ou ["text", "audio"] para saída de áudio. |
prediction | object | Saída prevista ({ type: "content", content }) para reduzir a latência em edições. |
transforms | string[] | ex.: ["middle-out"] para comprimir prompts que excedem a janela de contexto. |
user | string | Seu próprio identificador de usuário final. |
O content da mensagem pode ser uma string ou um array de partes de conteúdo (text, image_url, file, input_audio). Veja Visão e arquivos.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.chat.completions.create({
"model": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
]
});
console.log(result.choices[0].message.content);
Resposta
{
"id": "gen-1760000000-abc123",
"object": "chat.completion",
"created": 1760000000,
"model": "anthropic/claude-sonnet-4.5",
"provider": "Anthropic",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": { "role": "assistant", "content": "Hello! How can I help you today?" }
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 9,
"total_tokens": 21,
"prompt_tokens_details": { "cached_tokens": 0 },
"completion_tokens_details": { "reasoning_tokens": 0 },
"cost": 0.000171
}
}
usage.cost é o custo da requisição em USD. O api14 o debita do seu saldo depois que a requisição termina. O id é o id da geração, que você pode consultar depois com a Consulta de geração.
Notas sobre cobrança
- Você paga o preço listado do modelo; a cobrança é retornada em
usage.cost. Veja Preços e cobrança. - Requisições com falha (qualquer status 4xx ou 5xx) não são cobradas.
- Se a requisição incluir
models: [...], todos os modelos de fallback precisam estar permitidos para sua chave e plano, ou o gateway rejeita a requisição antes de enviá-la ao upstream.
Erros
| Status | Código | Quando |
|---|---|---|
| 400 | model_required | model está ausente. |
| 400 | invalid_json | O corpo não é um objeto JSON. |
| 401 | invalid_api_key | A chave está ausente, é inválida ou foi revogada. |
| 402 | insufficient_balance | Seu saldo em USD é $0. |
| 403 | model_not_allowed / plan_required | A lista de permitidos da sua chave ou o seu plano não cobre este modelo. |
| 404 | model_not_found | Id de modelo desconhecido ou desativado. |
| 413 | payload_too_large | O corpo da requisição é maior que 25 MB. |
| 429 | rate_limited / daily_limit_reached | O limite de RPM ou o limite diário em USD da chave foi atingido. |
| 502 | upstream_unavailable | Não foi possível acessar o provedor upstream. |
Erros do upstream, como limite de contexto excedido ou moderação de conteúdo, voltam com o código de status original e o mesmo formato de erro. Veja Erros.