> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinglog.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Chaves de API

> Crie, liste e revogue a chave kl_live_ que liga o assistente à sua conta na empresa.

A chave `kl_live_` é a sessão do assistente. Ela pertence a um usuário numa empresa e carrega as permissões dessa pessoa.

O segredo completo volta só na resposta de criação. A listagem mostra o prefixo, o nome e o status.

## Criar

A criação usa o JWT normal da KingLog, o mesmo da sessão logada no produto.

```bash theme={null}
curl -X POST "https://SUA_API/mcp/keys/COMPANY_ID/USER_ID" \
  -H "Authorization: Bearer SEU_JWT" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Cursor do João" }'
```

`COMPANY_ID` e `USER_ID` são UUIDs. O nome tem de 1 a 80 caracteres.

A resposta traz três partes:

* `key`: id, nome, prefixo, status e, se houver, as permissões restritas
* `secret`: a chave `kl_live_...`, exibida uma vez
* `configs`: o JSON para colar no Cursor e no Claude, já com a URL do assistente e a chave

Guarde o `secret` nesse momento. Uma listagem depois devolve o prefixo, nunca o segredo de novo. Cole o `configs` como está em [MCP Server](https://docs.kinglog.com.br/pages/ai/mcp.md). Se a URL dentro dele ainda for um texto de exemplo, use a URL que a KingLog passou para o seu ambiente.

## Restringir o que a chave faz

Sem `grants`, a chave age com as permissões atuais da conta na empresa.

Com `grants`, ela fica limitada àquele conjunto. Cada item é um par `resource` e `action`. A API recusa uma permissão que a conta não tem, com o código `MCP_API_KEY_GRANT_FORBIDDEN`.

O catálogo do que a conta pode conceder está em:

```bash theme={null}
curl "https://SUA_API/mcp/keys/COMPANY_ID/USER_ID/catalog" \
  -H "Authorization: Bearer SEU_JWT"
```

Uma chave restrita deixa de ser tratada como administrador, mesmo que a conta seja.

## Listar

```bash theme={null}
curl "https://SUA_API/mcp/keys/COMPANY_ID/USER_ID" \
  -H "Authorization: Bearer SEU_JWT"
```

Cada item traz `id`, `name`, `prefix`, `createdAt`, `lastUsedAt`, `status` (`active` ou `revoked`) e `limited`.

Há no máximo 10 chaves ativas por usuário na empresa. Ao passar disso, a criação responde `MCP_API_KEY_LIMIT`.

## Uso

```bash theme={null}
curl "https://SUA_API/mcp/keys/COMPANY_ID/USER_ID/KEY_ID/logs?from=2026-10-01&q=/called" \
  -H "Authorization: Bearer SEU_JWT"
```

Os filtros `from`, `to` e `q` são opcionais. Cada linha guarda método, caminho, status HTTP e data. O corpo da requisição não entra no log.

## Revogar

```bash theme={null}
curl -X DELETE "https://SUA_API/mcp/keys/COMPANY_ID/USER_ID/KEY_ID" \
  -H "Authorization: Bearer SEU_JWT"
```

A revogação vale na próxima chamada à API. O processo do assistente pode manter em memória, por até 2 minutos, o JWT que já tinha trocado. A API recusa a chave revogada com 401.

## Troca pela sessão

O cliente MCP chama isto sozinho. Você não cola o JWT curto em lugar nenhum.

```bash theme={null}
curl -X POST "https://SUA_API/mcp/session" \
  -H "Authorization: Bearer kl_live_SUA_CHAVE"
```

A resposta traz um JWT de 1 dia, `companyId` e `userId`. Chave ausente, malformada ou revogada responde `MCP_API_KEY_INVALID`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.