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

# Autenticação

> Aprenda como autenticar suas requisições à API First Answer usando chaves de API.

## Autenticação por Chave de API

A API First Answer usa **chaves de API** para autenticar requisições. Toda requisição aos endpoints `/v1/` deve incluir uma chave de API válida nos cabeçalhos da requisição.

```bash theme={null}
curl -H "api-key: SUA_CHAVE_API" \
  https://api.firstanswer.ai/v1/brands/
```

<Warning>
  Chaves de API concedem acesso aos dados da sua conta. Mantenha-as seguras e nunca as exponha em código client-side, repositórios públicos ou requisições do navegador.
</Warning>

## Obtendo uma Chave de API

<Steps>
  <Step title="Navegue até as configurações de API">
    Faça login na plataforma First Answer e acesse **Configurações → Chaves de API**.
  </Step>

  <Step title="Crie uma nova chave">
    Clique em **Criar Chave de API** e dê um nome descritivo (ex: "Dashboard de Produção", "Analytics Interno").
  </Step>

  <Step title="Copie sua chave">
    Sua chave de API será exibida **apenas uma vez**. Copie-a e armazene-a com segurança. Se você perdê-la, precisará gerar uma nova.
  </Step>
</Steps>

## Usando Sua Chave de API

Inclua a chave de API no cabeçalho `api-key` de cada requisição:

<CodeGroup>
  ```bash cURL theme={null}
  curl -H "api-key: SUA_CHAVE_API" \
    https://api.firstanswer.ai/v1/brands/
  ```

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

  headers = {"api-key": "SUA_CHAVE_API"}
  response = requests.get(
      "https://api.firstanswer.ai/v1/brands/",
      headers=headers,
  )

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.firstanswer.ai/v1/brands/", {
    headers: {
      "api-key": "SUA_CHAVE_API",
    },
  });

  const data = await response.json();
  console.log(data);
  ```
</CodeGroup>

## Expiração da Chave

Chaves de API são válidas por **6 meses** a partir da data de criação. Após a expiração, requisições feitas com a chave retornarão um erro `401`:

```json theme={null}
{
  "error": {
    "code": "AUTHENTICATION_FAILED",
    "message": "API key has expired."
  }
}
```

Gere uma nova chave antes que a atual expire para evitar interrupções no serviço.

## Respostas de Erro

### Chave de API Ausente

Se nenhum cabeçalho `api-key` for fornecido, a API retornará:

```json 401 theme={null}
{
  "error": {
    "code": "AUTHENTICATION_FAILED",
    "message": "Authentication credentials were not provided."
  }
}
```

### Chave de API Inválida

Se a chave estiver incorreta ou tiver sido revogada:

```json 401 theme={null}
{
  "error": {
    "code": "AUTHENTICATION_FAILED",
    "message": "Invalid or inactive API key."
  }
}
```

### Chave de API Expirada

Se a chave passou da data de expiração:

```json 401 theme={null}
{
  "error": {
    "code": "AUTHENTICATION_FAILED",
    "message": "API key has expired."
  }
}
```

## Boas Práticas

<AccordionGroup>
  <Accordion title="Use variáveis de ambiente">
    Nunca insira chaves de API diretamente no código-fonte. Armazene-as como variáveis de ambiente:

    ```bash theme={null}
    export FIRSTANSWER_API_KEY="sua-chave-aqui"
    ```

    ```python theme={null}
    import os
    api_key = os.environ["FIRSTANSWER_API_KEY"]
    ```
  </Accordion>

  <Accordion title="Faça rotação de chaves periodicamente">
    Não espere as chaves expirarem. Crie uma nova chave, atualize suas integrações e depois revogue a antiga.
  </Accordion>

  <Accordion title="Use nomes descritivos">
    Nomeie suas chaves de acordo com seu propósito (ex: "Dashboard Looker", "Bot Slack Interno") para que você possa gerenciá-las e revogá-las facilmente.
  </Accordion>

  <Accordion title="Revogue chaves não utilizadas">
    Se uma chave não é mais necessária, revogue-a imediatamente nas configurações de API. Isso previne acessos não autorizados.
  </Accordion>

  <Accordion title="Nunca exponha chaves no client-side">
    Chaves de API devem ser usadas apenas em código server-side. Nunca as inclua em JavaScript frontend, aplicativos mobile ou qualquer código acessível publicamente.
  </Accordion>
</AccordionGroup>
