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

# Autenticação

> Como autenticar na API da Wappfy usando chaves de API ou tokens JWT.

# Autenticação

A API da Wappfy suporta dois métodos de autenticação. Todas as requisições devem incluir um deles.

## Chave de API (recomendado)

Envie sua chave de API no header `X-Api-Key`:

```bash theme={null}
curl https://api.wappfy.io/api/instances \
  -H "X-Api-Key: wappfy_sk_abc123def456..."
```

### Criando uma chave de API

As chaves de API são criadas pelo painel ou pela API. As chaves são vinculadas a um usuário e possuem as mesmas permissões da conta do usuário.

```bash theme={null}
curl -X POST https://api.wappfy.io/api/api-keys \
  -H "Authorization: Bearer SEU_JWT_SUPABASE" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Chave de Produção" }'
```

<Warning>
  O valor da chave é retornado apenas uma vez no momento da criação. Armazene-o com segurança.
</Warning>

## Bearer Token (JWT do Supabase)

Envie um token de acesso do Supabase no header `Authorization`:

```bash theme={null}
curl https://api.wappfy.io/api/instances \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
```

Tokens JWT têm vida curta e precisam ser renovados. Eles são tipicamente usados pelo painel frontend, não para integracões servidor-a-servidor.

## Boas práticas de segurança

<AccordionGroup>
  <Accordion title="Use chaves de API para integracões servidor-a-servidor">
    Chaves de API não expiram e são mais fáceis de gerenciar para integracões de backend.
  </Accordion>

  <Accordion title="Rotacione as chaves regularmente">
    Se uma chave for comprometida, exclua-a e crie uma nova.
  </Accordion>

  <Accordion title="Use sempre HTTPS">
    Todas as requisições da API devem usar HTTPS. Requisições HTTP serão rejeitadas.
  </Accordion>

  <Accordion title="Não exponha chaves no código frontend">
    Chaves de API devem ser usadas apenas em código server-side, nunca em JavaScript do lado do cliente.
  </Accordion>
</AccordionGroup>

## Respostas de erro

| Status | Descrição                                  |
| ------ | ------------------------------------------ |
| `401`  | Token de autenticação ausente ou inválido  |
| `403`  | Permissões insuficientes para este recurso |
