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

# Autenticação

> Como autenticar suas requisições na API

## Visão Geral

A API do Leavo utiliza **Bearer Token** para autenticação. Todas as requisições devem incluir sua chave de API no header `Authorization`.

<Warning>
  Mantenha sua chave de API segura e nunca a compartilhe publicamente. Não inclua chaves em código-fonte versionado.
</Warning>

## Obtendo sua Chave de API

1. Acesse o [Dashboard](https://app.leavo.ai)
2. Navegue até **Configurações** > **Chaves de API**
3. Clique em **Gerar Nova Chave**
4. Copie e armazene a chave com segurança

<Note>
  As chaves são exibidas apenas uma vez no momento da criação. Armazene-as em um local seguro.
</Note>

## Usando a Chave de API

Inclua o header `Authorization` em todas as suas requisições:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://api.leavo.ai/backend/leads" \
    -H "Authorization: Bearer sua_chave_aqui" \
    -H "Content-Type: application/json"
  ```

  ```javascript JavaScript theme={null}
  const API_KEY = process.env.LEAVO_API_KEY;

  const response = await fetch('https://api.leavo.ai/backend/leads', {
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json'
    }
  });
  ```

  ```python Python theme={null}
  import os
  import requests

  API_KEY = os.environ.get('LEAVO_API_KEY')

  response = requests.get(
      'https://api.leavo.ai/backend/leads',
      headers={
          'Authorization': f'Bearer {API_KEY}',
          'Content-Type': 'application/json'
      }
  )
  ```

  ```php PHP theme={null}
  <?php
  $apiKey = getenv('LEAVO_API_KEY');

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://api.leavo.ai/backend/leads');
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      'Authorization: Bearer ' . $apiKey,
      'Content-Type: application/json'
  ]);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  $response = curl_exec($ch);
  curl_close($ch);
  ```
</CodeGroup>

## Boas Práticas de Segurança

<CardGroup cols={2}>
  <Card title="Use Variáveis de Ambiente" icon="lock">
    Nunca hardcode suas chaves. Use variáveis de ambiente como `LEAVO_API_KEY`.
  </Card>

  <Card title="Defina Expiração" icon="clock">
    Configure datas de expiração para suas chaves e rotacione-as periodicamente.
  </Card>

  <Card title="Use HTTPS" icon="shield">
    Sempre use HTTPS para todas as requisições à API.
  </Card>

  <Card title="Delete Chaves Não Utilizadas" icon="trash">
    Remova chaves que não estão mais em uso para minimizar riscos.
  </Card>
</CardGroup>

## Erros de Autenticação

Se sua autenticação falhar, você receberá uma resposta com status `401`:

```json theme={null}
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing API key"
  }
}
```

### Causas Comuns

| Erro           | Causa                              | Solução                           |
| -------------- | ---------------------------------- | --------------------------------- |
| Missing header | Header `Authorization` não enviado | Adicione o header à requisição    |
| Invalid token  | Chave inválida ou mal formatada    | Verifique se a chave está correta |
| Expired token  | Chave expirou                      | Gere uma nova chave no dashboard  |
| Revoked token  | Chave foi revogada                 | Gere uma nova chave no dashboard  |
