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
| Campo | Tipo | O que é |
|---|---|---|
| model | string | Um id de GET /v1/models, ou "auto" para escolher pela complexidade. |
| complexity | low | medium | high | No 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. |
| maxOutputTokens | inteiro | Limitado pelo modelo e pela empresa. |
| responseFormat | text | json | json: a resposta precisa ser um JSON válido (com responseSchema, as chaves obrigatórias são conferidas). |
| responseSchema | JSON Schema | Só 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.