# Westhetics · Desenvolvedores > A API pública, os webhooks e o MCP da Westhetics: pacientes, anamneses e contratos com assinatura, ligados ao seu CRM, ao seu WhatsApp e ao Claude ou ao ChatGPT. - [Westhetics para desenvolvedores](https://docs.westhetics.io/index.md): Ligue a clínica ao CRM, ao WhatsApp, à agenda e ao assistente de IA. Pacientes, anamneses e contratos com assinatura, pela API, por webhook e pelo MCP. - [Início rápido](https://docs.westhetics.io/inicio-rapido.md): Da chave ao primeiro evento em quatro passos: crie o app, confirme a chave, cadastre um webhook e crie uma paciente. - [Autenticação](https://docs.westhetics.io/autenticacao.md): A chave do app para sistemas da clínica, o OAuth para apps de parceiro e assistentes, e os escopos que dizem o que cada app pode. - [Conceitos](https://docs.westhetics.io/conceitos.md): Clínica, paciente, anamnese, atendimento, documento e envio para assinatura: o que cada um é, como se ligam e os estados de cada um. - [Do CRM ao contrato assinado](https://docs.westhetics.io/guias/do-crm-ao-contrato.md): O fluxo inteiro pela API: a ficha da paciente, a anamnese, o contrato e os termos, o envio para assinatura e o PDF assinado, com os eventos de cada passo. - [A anamnese pelo seu WhatsApp](https://docs.westhetics.io/guias/anamnese-pelo-seu-whatsapp.md): Peça o link da anamnese com o canal link e mande pela ferramenta de WhatsApp que a clínica já usa. A Westhetics avisa quando a paciente responder. - [Sincronizar pacientes](https://docs.westhetics.io/guias/sincronizar-pacientes.md): Mantenha o cadastro igual nos dois sistemas: uma carga inicial por cursor, a atualização por updatedSince e os eventos patient.* no meio do caminho. - [Saber na hora quando a paciente assina](https://docs.westhetics.io/guias/assinatura-na-hora.md): Assine signature_request.completed e libere o procedimento, a nota fiscal ou a agenda no momento em que o último documento é assinado. - [Erros](https://docs.westhetics.io/erros.md): Um envelope só, em pt-BR, com a causa e o caminho. O código diz o que fazer; a mensagem pode ir direto para a tela. - [Limites](https://docs.westhetics.io/limites.md): 100 requisições por minuto por app, somando a API e o MCP. Os cabeçalhos dizem quanto sobra e quando a janela recomeça. - [Paginação](https://docs.westhetics.io/paginacao.md): Listas por cursor, com updatedSince para sincronizar. Sem número de página e sem total: siga o nextCursor até ele vir nulo. - [Idempotência](https://docs.westhetics.io/idempotencia.md): Mande a mesma Idempotency-Key ao repetir um POST e a Westhetics devolve a mesma resposta, sem criar duas fichas nem mandar duas mensagens. - [Versões](https://docs.westhetics.io/versoes.md): A versão está no caminho (/v1). Campos novos podem aparecer a qualquer momento; remover ou renomear só numa versão nova, com convivência. - [Mudanças](https://docs.westhetics.io/mudancas.md): O que mudou na API pública, nos webhooks e no MCP, do mais recente para o mais antigo. - [Webhooks](https://docs.westhetics.io/webhooks/visao-geral.md): A Westhetics manda um POST assinado para o seu endereço a cada evento da clínica: ficha criada, anamnese respondida, contrato assinado. - [Eventos](https://docs.westhetics.io/webhooks/eventos.md): O catálogo de eventos da clínica: quando cada um acontece, o escopo que mostra e o que vem em data. - [Verificar a assinatura](https://docs.westhetics.io/webhooks/verificar-assinatura.md): Toda entrega é assinada no padrão Standard Webhooks, com HMAC-SHA256 e o segredo whsec_ do webhook. Confira antes de confiar no corpo. - [Tentativas e falhas](https://docs.westhetics.io/webhooks/tentativas.md): Oito tentativas em cerca de 42 horas, reenvio manual e o webhook que só falha desligado depois de 72 horas, com aviso às gestoras. - [Testar](https://docs.westhetics.io/webhooks/testar.md): Ponha um evento de teste na fila do webhook e veja a entrega no minuto seguinte, com o código HTTP e a duração. - [Webhooks pela API](https://docs.westhetics.io/webhooks/pela-api.md): O app com o escopo de webhooks cria, altera, testa e remove os próprios webhooks, e acompanha as entregas, pela API. - [A Westhetics no seu assistente de IA](https://docs.westhetics.io/mcp/visao-geral.md): Conecte o Claude, o ChatGPT, o Claude Code, o Codex ou o Cursor à Westhetics e peça em português: o que está pendente, cadastre, mande a anamnese, prepare o contrato. - [No dia a dia](https://docs.westhetics.io/mcp/no-dia-a-dia.md): Conversas prontas para a recepção, a profissional e a gestora: o que pedir ao assistente e o que ele faz na Westhetics. - [Segurança e privacidade](https://docs.westhetics.io/mcp/seguranca.md): O assistente age com o seu perfil, na sua clínica, por 12 horas; pede confirmação antes de mandar mensagem; tudo fica na trilha. O que nunca sai, e a LGPD. - [Conectar no Claude](https://docs.westhetics.io/mcp/claude.md): Adicione a Westhetics como conector personalizado no claude.ai e no app do Claude no computador, e entre com a sua conta. - [Conectar no ChatGPT](https://docs.westhetics.io/mcp/chatgpt.md): Adicione a Westhetics como servidor MCP personalizado no ChatGPT, entre com a sua conta e use na conversa. - [Conectar no Claude Code](https://docs.westhetics.io/mcp/claude-code.md): Um comando no terminal e um /mcp para entrar: a Westhetics no Claude Code, por OAuth ou com a chave de um app. - [Conectar no Codex](https://docs.westhetics.io/mcp/codex.md): codex mcp add e codex mcp login: a Westhetics no Codex por OAuth, ou com a chave de um app numa variável de ambiente. - [Conectar no Cursor](https://docs.westhetics.io/mcp/cursor.md): A Westhetics no mcp.json do Cursor, com o login por OAuth ou com a chave de um app numa variável de ambiente. - [MCP com a chave de um app](https://docs.westhetics.io/mcp/chave-do-app.md): Para automações e desenvolvimento: o MCP aceita a chave wx_ de um app da clínica, com os escopos do app no lugar do perfil de uma pessoa. - [Ferramentas](https://docs.westhetics.io/mcp/ferramentas.md): As 41 ferramentas que o MCP da Westhetics oferece, o que cada uma faz, quem pode usar e o que pedir para o assistente usá-la. - [Prompts prontos](https://docs.westhetics.io/mcp/prompts.md): Cinco atalhos: resumo do dia, cadastrar paciente, enviar anamnese, preparar contrato e, para a equipe da Westhetics, revisar um modelo. O assistente segue os passos certos e confirma antes de mandar algo à paciente ou publicar um modelo. - [Referência da API](https://docs.westhetics.io/api-reference/introducao.md): Todas as rotas da API pública v1, geradas do OpenAPI que a própria API serve. Teste direto na página com a chave de um app. - [Quem está chamando](https://docs.westhetics.io/api-reference/conta/quem-esta-chamando.md): Devolve o app (com os escopos) ou a pessoa conectada pelo OAuth, e a clínica. Use para testar a chave. - [Este documento](https://docs.westhetics.io/api-reference/conta/este-documento.md): O OpenAPI 3.1 desta API, sem autenticação. - [Listar pacientes](https://docs.westhetics.io/api-reference/pacientes/listar-pacientes.md): As fichas da clínica em ordem de atualização. Com `updatedSince`, só o que mudou depois do instante: o jeito de sincronizar. `search` busca por nome, e-mail, CPF, RG ou WhatsApp. - [Criar paciente](https://docs.westhetics.io/api-reference/pacientes/criar-paciente.md): Cria a ficha com as regras do cadastro da clínica: nome, WhatsApp e e-mail são obrigatórios; quem tem menos de 18 anos vem com o responsável legal; CPF com dígito; documento estrangeiro para quem não tem CPF. CPF repetido é 409 com o id da ficha que já existe. - [Ler paciente](https://docs.westhetics.io/api-reference/pacientes/ler-paciente.md): O cadastro inteiro da paciente nesta clínica. - [Editar paciente](https://docs.westhetics.io/api-reference/pacientes/editar-paciente.md): Muda só os campos enviados. Campo ausente fica como está; `null` limpa. - [Listar anamneses](https://docs.westhetics.io/api-reference/anamneses/listar-anamneses.md): As anamneses enviadas, sem as respostas, em ordem de atualização. - [Enviar anamnese](https://docs.westhetics.io/api-reference/anamneses/enviar-anamnese.md): Envia a anamnese à paciente por WhatsApp, e-mail, os dois, ou só gera o link (`link`) para o seu sistema mandar. A resposta traz a URL do link, válido por 7 dias. Uma anamnese aberta por paciente: a segunda é 409. - [Ler anamnese](https://docs.westhetics.io/api-reference/anamneses/ler-anamnese.md): O status, o link (sem a URL), o protocolo e o hash quando respondida. - [Reenviar anamnese](https://docs.westhetics.io/api-reference/anamneses/reenviar-anamnese.md): Gera link novo (o anterior deixa de valer) e manda pelo canal escolhido; o rascunho da paciente fica. - [Cancelar anamnese](https://docs.westhetics.io/api-reference/anamneses/cancelar-anamnese.md): Cancela antes de a paciente responder; o motivo é opcional. A respondida não se cancela. - [Ler as respostas](https://docs.westhetics.io/api-reference/anamneses/ler-as-respostas.md): As respostas da anamnese preenchida, com as perguntas em pt-BR e o que pede atenção. É dado de saúde: pede o escopo próprio `anamneses:answers`. - [Listar procedimentos](https://docs.westhetics.io/api-reference/catalogo/listar-procedimentos.md): Os procedimentos ativos da clínica, com valor e condição de pagamento. - [Listar prestadores](https://docs.westhetics.io/api-reference/catalogo/listar-prestadores.md): Os prestadores ativos, com conselho e registro. - [Listar modelos de documento](https://docs.westhetics.io/api-reference/catalogo/listar-modelos-de-documento.md): Os modelos que a geração aceita na clínica: os inclusos (anamnese e contrato) e os termos, com os procedimentos ligados a cada um. - [Listar atendimentos](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/listar-atendimentos.md): Os atendimentos com documentos gerados, com o status da assinatura, em ordem de atualização. - [Gerar contrato e termos](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/gerar-contrato-e-termos.md): Cria o atendimento e gera os documentos numa chamada: o contrato certo, a anamnese respondida e os termos ligados aos procedimentos (ou os de `templateIds`). Faltou dado, 422 com cada pendência; rascunho aberto no app para a mesma paciente, 409. - [Ler atendimento](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/ler-atendimento.md): Os procedimentos, o valor, os documentos e o status da assinatura. - [Enviar para assinatura](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/enviar-para-assinatura.md): Envia os documentos gerados para a paciente assinar (a responsável, se menor). Sai depois da janela de 10 segundos (`sendsAt`); o status volta pelos eventos `signature_request.*`. - [Reenviar o link de assinatura](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/reenviar-o-link-de-assinatura.md): Reenvia o link; sem `channels`, pelos canais do envio. Também sai depois da janela de 10 segundos (`sendsAt`). - [Cancelar o envio](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/cancelar-o-envio.md): Cancela o envio, com o motivo; o link deixa de valer e o cancelamento vale depois da janela de 10 segundos (`effectiveAt`). Depois que a paciente assinou, só a gestora e a Westhetics cancelam (pelo OAuth, com o perfil delas; o app recebe 403), e a paciente recebe o aviso por e-mail. - [Ler documento](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/ler-documento.md): O status, o hash e as datas de um documento. `isRestricted` marca o documento da anamnese que quem chama não lê (o app, sem `anamneses:answers`): os dados saem, o arquivo não. - [Baixar o PDF](https://docs.westhetics.io/api-reference/contratos-e-assinaturas/baixar-o-pdf.md): Um endereço de 5 minutos para o PDF protegido; assinado o documento, o PDF assinado (montado na hora, quando ainda não estava guardado). O documento da anamnese traz as respostas: o app precisa de `anamneses:answers`, e a pessoa, do perfil que lê a anamnese (403). Assinado na Autentique, o arquivo d… - [Listar eventos](https://docs.westhetics.io/api-reference/eventos/listar-eventos.md): Os eventos dos últimos 30 dias que o app vê, em ordem (`asc`, padrão, para consumir) ou dos mais recentes (`desc`). A alternativa ao webhook para quem prefere consultar. Em `asc`, o evento aparece quando nenhuma gravação mais antiga ainda está em andamento: o cursor nunca pula evento, e um evento po… - [Ler evento](https://docs.westhetics.io/api-reference/eventos/ler-evento.md): Um evento pelo id (o `webhook-id` da entrega). - [Patient created](https://docs.westhetics.io/api-reference/eventos/patient-created.md): Uma ficha de paciente foi criada: pelo app, pelo link de cadastro da clínica ou pela API. - [Patient updated](https://docs.westhetics.io/api-reference/eventos/patient-updated.md): O cadastro da paciente mudou; `changedFields` diz quais campos, quando a mudança veio do cadastro. - [Patient archived](https://docs.westhetics.io/api-reference/eventos/patient-archived.md): A ficha foi arquivada pela gestora. - [Patient restored](https://docs.westhetics.io/api-reference/eventos/patient-restored.md): A ficha arquivada voltou a ativa. - [Patient merged](https://docs.westhetics.io/api-reference/eventos/patient-merged.md): Duas fichas da mesma pessoa foram unificadas. - [Anamnesis sent](https://docs.westhetics.io/api-reference/eventos/anamnesis-sent.md): A anamnese foi enviada à paciente (ou o link foi gerado). - [Anamnesis resent](https://docs.westhetics.io/api-reference/eventos/anamnesis-resent.md): O link da anamnese foi reenviado; o anterior deixou de valer. - [Anamnesis completed](https://docs.westhetics.io/api-reference/eventos/anamnesis-completed.md): A paciente respondeu e enviou a anamnese; traz o protocolo. - [Anamnesis canceled](https://docs.westhetics.io/api-reference/eventos/anamnesis-canceled.md): A anamnese foi cancelada antes de ser respondida. - [Appointment documents generated](https://docs.westhetics.io/api-reference/eventos/appointment-documents-generated.md): O contrato e os termos do atendimento foram gerados (ou gerados de novo); traz a geração. - [Appointment canceled](https://docs.westhetics.io/api-reference/eventos/appointment-canceled.md): Os documentos do atendimento foram cancelados. - [Signature request sent](https://docs.westhetics.io/api-reference/eventos/signature-request-sent.md): Os documentos saíram para a paciente assinar, depois da janela de 10 segundos. - [Signature request resent](https://docs.westhetics.io/api-reference/eventos/signature-request-resent.md): O link de assinatura foi reenviado. - [Signature request viewed](https://docs.westhetics.io/api-reference/eventos/signature-request-viewed.md): A paciente abriu o link de assinatura. - [Signature request signed](https://docs.westhetics.io/api-reference/eventos/signature-request-signed.md): Alguém assinou: `signer` é `patient`, `guardian` ou `clinic`. - [Signature request completed](https://docs.westhetics.io/api-reference/eventos/signature-request-completed.md): Todos assinaram todos os documentos do envio. É o evento para marcar a venda. - [Signature request declined](https://docs.westhetics.io/api-reference/eventos/signature-request-declined.md): A paciente recusou assinar. - [Signature request expired](https://docs.westhetics.io/api-reference/eventos/signature-request-expired.md): O link de assinatura venceu sem todas as assinaturas. - [Signature request canceled](https://docs.westhetics.io/api-reference/eventos/signature-request-canceled.md): O envio foi cancelado pela clínica. - [Signature request delivery failed](https://docs.westhetics.io/api-reference/eventos/signature-request-delivery-failed.md): A mensagem com o link não chegou por um canal; traz `channel`. - [Listar webhooks](https://docs.westhetics.io/api-reference/webhooks/listar-webhooks.md): Os webhooks do app, sem o segredo. - [Criar webhook](https://docs.westhetics.io/api-reference/webhooks/criar-webhook.md): Até 5 por app. O endereço é https na porta 443, com domínio público. A resposta traz o segredo `whsec_…` que assina as entregas. - [Ler webhook](https://docs.westhetics.io/api-reference/webhooks/ler-webhook.md): O webhook, com as contagens de entregas pendentes e com falha. - [Remover webhook](https://docs.westhetics.io/api-reference/webhooks/remover-webhook.md): Para de entregar; as entregas na fila ficam como falhou. - [Alterar webhook](https://docs.westhetics.io/api-reference/webhooks/alterar-webhook.md): Muda endereço, descrição, eventos ou status (`active` · `disabled`). Reativar zera a falha. - [Revelar o segredo](https://docs.westhetics.io/api-reference/webhooks/revelar-o-segredo.md): O segredo atual e, nas 24 horas depois de trocar, o anterior. Fica na trilha. - [Trocar o segredo](https://docs.westhetics.io/api-reference/webhooks/trocar-o-segredo.md): Gera outro segredo; o anterior vale por 24 horas e cada entrega leva as duas assinaturas. - [Enviar teste](https://docs.westhetics.io/api-reference/webhooks/enviar-teste.md): Põe o evento `webhook.test` na fila só deste webhook; ele sai no próximo minuto. Um teste por vez: o anterior ainda na fila é 409. - [Listar entregas](https://docs.westhetics.io/api-reference/webhooks/listar-entregas.md): As entregas deste webhook, das mais novas para as mais antigas. - [Reenviar entrega](https://docs.westhetics.io/api-reference/webhooks/reenviar-entrega.md): Põe a entrega na fila de novo; sai no próximo minuto. ## OpenAPI Specs - [openapi](/api-reference/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.