API para os seus sistemas

Os sistemas da empresa (back ends, integrações, robôs) chamam Claude e GPT pelo Keener AI, com a mesma chave do MCP. A empresa paga com os créditos ou com a própria chave do provedor, e cada chamada fica no extrato e na auditoria.

Endereço base: https://keener-ai-api.azurewebsites.net

Endpoints

  • GET /v1/models

    Os modelos que a empresa liberou, com o preço em reais por 1 mil tokens e os níveis (rápido, equilibrado, avançado).

  • POST /v1/chat

    Uma chamada ao modelo: mensagens, arquivos opcionais (base64 ou https), resposta em texto ou em JSON conferido.

  • POST /v1/chat/async

    O mesmo pedido na fila: responde 202 com o jobId e envia a resposta, assinada, para o seu webhook (https). Com o cabeçalho Idempotency-Key, repetir o pedido em até 24 h devolve o mesmo jobId (200) sem cobrar de novo.

  • GET /v1/jobs/:id

    A situação de um pedido assíncrono e, quando pronto, a resposta ou o erro.

  • POST /v1/jobs/:id/cancel

    Cancela um pedido assíncrono: na fila, na hora (200); rodando, ele é interrompido e o que já rodou é cobrado (202); já terminado, 409.

Autenticação

  • Cabeçalho Authorization: Bearer <chave>, com uma chave de acesso do Keener AI (ka_…) ou um token OAuth (kaa_…) do keener-id, o login único da Keener. A mesma chave serve para o MCP.
  • A chave é de uma pessoa numa empresa: crie-a no portal, em Conta › Chaves de acesso. A pessoa precisa de uma licença do Keener AI.
  • Valem as regras da empresa: modelos liberados, limite de saída, limites de gasto e de pedidos por minuto (120 por padrão).
  • Cada chamada é cobrada dos créditos da empresa, ou não custa créditos quando a empresa tem a própria chave do provedor, e fica no extrato e na auditoria (sem o conteúdo das mensagens).

POST /v1/chat: o pedido

CampoTipoO que é
modelstringUm id de GET /v1/models, ou "auto" para escolher pela complexidade.
complexitylow | medium | highNo lugar de model: o modelo mais barato do nível (medium quando nenhum dos dois vem).
messages[{ role, content }]De 1 a 200 mensagens (system, user, assistant); pelo menos uma de user, terminando com user.
files[{ mimeType, data } | { url }]Até 20 arquivos na última mensagem: imagens, PDF, docx, xlsx, csv, texto. O tipo real vem dos bytes.
maxOutputTokensinteiroLimitado pelo modelo e pela empresa.
responseFormattext | jsonjson: a resposta precisa ser um JSON válido (com responseSchema, as chaves obrigatórias são conferidas).
responseSchemaJSON SchemaSó com responseFormat json.

Exemplo

curl -X POST https://keener-ai-api.azurewebsites.net/v1/chat \
  -H "Authorization: Bearer ka_..." -H "content-type: application/json" \
  -d '{
    "complexity": "low",
    "messages": [
      { "role": "system", "content": "Você classifica e-mails de uma corretora." },
      { "role": "user", "content": "Classifique: Bati o carro ontem, como abro o sinistro?" }
    ],
    "maxOutputTokens": 200
  }'

A resposta

{
  "requestId": "5f0c…",
  "content": "…o texto do modelo…",
  "json": { "nome": "João", "idade": 32 },
  "model": "claude-sonnet-5-5",
  "tier": "medium",
  "usage": { "inputTokens": 1200, "outputTokens": 80, "cacheReadTokens": 0, "cacheWriteTokens": 0 },
  "costCentavos": 3,
  "balanceCentavos": 49870
}
  • json só no modo JSON; tier só quando o pedido usou complexity; byok: true quando a chave da empresa atendeu (custo 0); truncated quando a resposta bateu no limite de saída.
  • costCentavos é o que o pedido descontou dos créditos; o cabeçalho X-Request-Id repete o requestId.

Erros

  • Todo erro vem como { statusCode, message, reason }, com a mensagem em português.
  • 401 nao_autenticado (sem chave, chave vencida ou de outro destino); 403 sem_plano, plano_suspenso, sem_licenca ou chat_desligado; 429 limite_requisicoes (com Retry-After).
  • 400 pedido_invalido, modelo_nao_liberado, url_recusada; 402 sem_creditos, limite_mensal, limite_empresa; 413 arquivo_grande; 415 tipo_nao_suportado; 422 resposta_invalida (JSON que não confere, cobrado).
  • 502 erro_modelo (nada cobrado); 504 tempo_esgotado.

Para começar

Crie a conta, compre créditos (ou cadastre a chave da empresa) e gere uma chave de acesso em Conta › Chaves de acesso. O texto completo, para agentes de IA, está em /llms-full.txt.