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

# Início rápido

> Da chave ao primeiro evento em quatro passos: crie o app, confirme a chave, cadastre um webhook e crie uma paciente.

Você vai precisar da chave de um app da clínica (`wx_…`) e de um endereço `https://` público para receber o webhook. Os exemplos usam a variável `WESTHETICS_API_KEY`.

```bash theme={null}
export WESTHETICS_API_KEY="wx_…"
```

> [!WARNING]
>
> A chave dá acesso aos dados da clínica nos escopos do app. Guarde num cofre de segredos ou numa
> variável de ambiente do servidor. Nunca no navegador, no aplicativo do celular nem no repositório.

**1. Crie o app no painel**

Quem faz é a gestora da clínica (ou a equipe da Westhetics, dentro da clínica):

1. Em [app.westhetics.io](https://app.westhetics.io/admin/integrations), abra **Integrações** e toque em **+ Novo app**.
2. Dê um nome ("CRM da recepção") e marque as permissões. Para este guia: **Pacientes · Ler e escrever** e **Gerenciar os próprios webhooks pela API**.
3. Toque em **Criar app** e copie a chave. Ela não aparece de novo; se perder, regenere.

**2. Confirme a chave**

`GET /v1/me` diz qual app está chamando, em que clínica e com quais escopos.

```bash curl theme={null}
curl https://api.westhetics.io/v1/me \
  -H "Authorization: Bearer $WESTHETICS_API_KEY"
```

```javascript JavaScript theme={null}
const res = await fetch('https://api.westhetics.io/v1/me', {
  headers: { Authorization: `Bearer ${process.env.WESTHETICS_API_KEY}` },
})
const { data } = await res.json()
console.log(data.clinic.name, data.integration.scopes)
```

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

res = requests.get(
    "https://api.westhetics.io/v1/me",
    headers={"Authorization": f"Bearer {os.environ['WESTHETICS_API_KEY']}"},
    timeout=10,
)
print(res.json()["data"]["clinic"]["name"])
```

```json Resposta theme={null}
{
  "data": {
    "type": "integration",
    "integration": {
      "id": "6f1d2c3b-8a4e-4f7a-9c1d-2b3e4f5a6b7c",
      "name": "CRM da recepção",
      "description": null,
      "scopes": ["patients:write", "webhooks:write"],
      "keyPrefix": "1c0a58f5",
      "createdAt": "2026-10-15T14:20:00Z"
    },
    "user": null,
    "role": null,
    "clinic": {
      "id": "0b9a8c7d-6e5f-4a3b-2c1d-0e9f8a7b6c5d",
      "name": "Clínica Aurora",
      "legalName": "Aurora Estética Avançada Ltda",
      "timezone": "America/Sao_Paulo"
    }
  }
}
```

Um `401` quer dizer que a chave não confere ou foi revogada. Veja [erros](https://docs.westhetics.io/erros.md).

**3. Cadastre um webhook**

O webhook recebe os eventos da clínica que o app pode ver. A resposta traz o segredo, que assina cada entrega: guarde junto com a chave.

```bash theme={null}
curl https://api.westhetics.io/v1/webhooks \
  -H "Authorization: Bearer $WESTHETICS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://crm.exemplo.com.br/webhooks/westhetics",
    "description": "CRM: fichas novas",
    "events": ["patient.created", "patient.updated"]
  }'
```

A gestora também pode cadastrar o webhook pela tela do app, em **Integrações**. Os detalhes estão em [webhooks pela API](https://docs.westhetics.io/webhooks/pela-api.md).

**4. Crie uma paciente**

Nome, WhatsApp e e-mail são obrigatórios, e quem tem menos de 18 anos vem com o responsável legal; o resto adianta o atendimento e o contrato.

```bash theme={null}
curl https://api.westhetics.io/v1/patients \
  -H "Authorization: Bearer $WESTHETICS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "name": "Amanda Ribeiro Costa",
    "whatsapp": "11987654321",
    "email": "amanda@email.com",
    "birthDate": "1994-03-12",
    "docNumber": "39053344705"
  }'
```

A resposta é `201` com a ficha inteira. Em seguida o webhook recebe `patient.created`:

```json theme={null}
{
  "id": "3a2b1c0d-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
  "type": "patient.created",
  "createdAt": "2026-10-15T14:31:07Z",
  "clinicId": "0b9a8c7d-6e5f-4a3b-2c1d-0e9f8a7b6c5d",
  "actor": { "type": "integration", "id": "6f1d2c3b-8a4e-4f7a-9c1d-2b3e4f5a6b7c" },
  "data": { "patientId": "f47ac10b-58cc-4372-a567-0e02b2c3d479" }
}
```

Antes de confiar no corpo, confira a assinatura: [verificar a assinatura](https://docs.westhetics.io/webhooks/verificar-assinatura.md).

## Próximos passos

> [card] [Do CRM ao contrato assinado](https://docs.westhetics.io/guias/do-crm-ao-contrato.md)
>
> O fluxo inteiro: paciente, anamnese, contrato, assinatura e o PDF assinado.

> [card] [Referência da API](https://docs.westhetics.io/api-reference/introducao.md)
>
> Todas as rotas, com os campos, os erros e o teste direto na página.


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