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

# Autenticação

> As duas credenciais da API, o que cada uma autoriza e onde colocá-las.

A API tem duas capacidades e duas credenciais, e a diferença não é acidente: cada uma
autoriza uma coisa diferente e por isso é protegida de um jeito diferente.

## Chave de API

Autentica as rotas de consulta. Ela gasta dinheiro, então precisa ser revogável, ter
escopo e ter teto.

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
Authorization: Bearer sk_live_...
```

O cabeçalho `X-API-Key` também é aceito, com o mesmo valor. A chave começa com `sk_live_`
e aparece uma única vez, na criação. Onde gerá-la está em
[credenciais](/pages/guias/credenciais).

<Warning>
  Nunca em query string. Query aparece em log de servidor, no referer e no histórico do
  navegador. Pelo mesmo motivo, as rotas de consulta não respondem a preflight: elas são
  de servidor para servidor, e uma página que carregasse a chave a entregaria a quem
  abrisse o site.
</Warning>

## Token de webhook

Autentica a entrada de contatos, e vai no caminho da URL em vez de num cabeçalho.

```
POST /api/webhooks/receive/SEU_TOKEN
```

Ele só cria contato. Não lê, não lista e não altera o que já existe, e é por isso que
pode viver no `action` de um formulário HTML sem consequência séria.

## O que cada erro de autenticação quer dizer

| Código             | O que aconteceu                          |
| ------------------ | ---------------------------------------- |
| `sem_chave`        | Nenhuma credencial no cabeçalho          |
| `chave_invalida`   | A chave não existe                       |
| `chave_revogada`   | Foi revogada no app                      |
| `chave_expirada`   | Passou da data de expiração              |
| `chave_desativada` | Desligada sem ser revogada               |
| `sem_escopo`       | A chave não cobre esse tipo de documento |

A mensagem de chave inexistente é a mesma para "nunca existiu" e para "já existiu":
distinguir as duas entregaria informação a quem tenta adivinhar.
