O que o contrato do Afya iClinic permite, o que ele proíbe, o que a rede entrega por dentro — e por qual porta a Obralivre entra sem apostar a conta do cliente.
O iClinic tem API pública prevista em contrato — e ela autoriza, com todas as letras, consumo por fornecedor terceiro da clínica.
A mesma escritura proíbe, duas vezes, acesso automatizado pela interface. Não é contradição: é hierarquia de canal. Pela API você é parceiro. Pela tela, infrator.
E o teste de campo mostrou que a API interna já existe, é REST/JSON e aceita filtros de banco. O pedido comercial deixa de ser “vocês têm API?” e passa a ser um pedido por nome de recurso.
Fonte primária: iclinic.com.br/termos/, extraído em 19/08/2026. Emissor: Afya iClinic, CNPJ 20.432.039/0001-95. Foro: Ribeirão Preto/SP.
Não utilizar softwares spider, ou de mineração de dados… que atue de modo automatizado
Utilização de robôs, “spiders” ou qualquer outro dispositivo, automático ou manual, para monitorar ou copiar
Proíbe acesso às áreas de programação e ao banco de dados.
conforme aplicável ao plano contratado
Consumo permitido por fornecedores ou ambientes de terceiros autorizados pelo usuário.
API Key, tokens, validação de entrada, limite de requisições, controle por endpoint e somente-leitura em parte dos dados.
Quem consome pode virar controlador independente ou conjunto — a responsabilidade migra junto com o dado.
A busca dizia "não tem API". O contrato dizia que tem. Ausência de documentação nunca foi prova de ausência de produto — é só sinal de que ninguém perguntou.
Na tela de entrada, embaixo do botão: Ao clicar em Entrar, você aceita nossos Termos de uso
— com link direto para o documento que contém os itens h e c. A proibição não é cláusula assinada uma vez e esquecida: ela é reafirmada em cada sessão. Isso encerra qualquer defesa de “a clínica nem sabia”.
Sessão autenticada por login manual do operador, dirigida por leitura da árvore de acessibilidade. Nenhum dado real de paciente envolvido, nenhuma escrita executada — nem em conta de teste, porque a pergunta era o que dá para fazer, não quanto dá para mexer.
Senha e entrou. Sem 2FA, sem código, sem app autenticador. Duas leituras opostas do mesmo fato:
415967, profissional 451596 — isso é achado de segurança para levar ao cliente. Não como susto: como serviço.Não está em Gestão, como a hipótese inicial supunha. Está em Configurações da Conta, em /configuracoes/exportacao-dados/ — confirmado no painel, com /v2/configuracoes/migracao-dados/ ao lado. Isso tira o fato F3 da condição de fonte única.
O menu Gestão abriga outra coisa: Finanças, Relatórios, Controle de Estoque, TISS e Satisfação do Paciente.
Três gerações de aplicação convivendo no mesmo domínio:
| Camada | Evidência observada |
|---|---|
| Next.js App Router + NextAuth | /v2/api/auth/{providers, csrf, callback/credentials, session}Server components via parâmetro _rsc |
| Aplicação legada versionada | /new/static/v4.372.0/ |
| Login clássico estilo Django | POST /usuarios/login/?next=/dashboard/ |
| Seleção de clínica | POST /v2/selecionar-clinica/Multi-unidade é nativo |
| Cloudflare na borda | /cdn-cgi/rumTelemetria de cliente ativa — automação de tela deixa rastro |
GET /dashboard/data.json?physician=451596&date_from=2026-07-20&date_to=2026-08-19 GET /pacientes/aniversariantes.json?birth_date__day=19&birth_date__month=08&died=0 GET /dashboard/day-events.json
Repare em birth_date__day, birth_date__month, died=0. Esse é padrão de lookup de queryset do Django. Significa que os endpoints internos aceitam filtros no nível do banco — __gte, __lte, __in — e portanto são bem mais flexíveis do que a interface expõe.
É por isso que a conversa comercial muda de tom: não se pergunta se existe API. Pede-se o recurso pelo nome, no formato de filtro que eles já usam internamente.
Catálogo completo em Gestão › Relatórios, todo exportável em XLS. Não é consolo pela falta de API — é diagnóstico comercial inteiro, sem tocar em prontuário.
| Relatório | Para que serve no nosso trabalho |
|---|---|
| Pacientes para retorno/relatorios/atendimento/retorno/ | Reativação — a campanha mais rentável que existe em clínica |
| Faltas por paciente/relatorios/atendimento/faltas/ | No-show: o dinheiro que vaza da agenda todo mês |
| Paciente por indicação/relatorios/atendimento/indicacao/ | Atribuição de origem — de onde o paciente realmente vem |
| Pacientes por CID/relatorios/atendimento/cid/ | Segmentação clínica para conteúdo e oferta |
| Repasse por profissionais/relatorios/financas/calculo-repasse/ | Rentabilidade por profissional |
| Fluxo de caixa · receitas · despesas/relatorios/financas/ | Saúde financeira, base de qualquer meta de aquisição |
/logs/agenda/, no menu Outros. É evidência de rastreabilidade — exatamente o que o art. 46 pede e o que se apresenta numa auditoria./configuracoes/permissoes-de-envio/. O consentimento de comunicação vive dentro do próprio sistema, o que resolve o opt-in de marketing sem inventar controle paralelo. Ao lado: sms-enviados e teleconsultas-realizadas.Somados, indicação + faltas + retorno respondem as três perguntas que todo dono de clínica faz e nenhuma agência responde com dado: de onde vem, quanto escapa, e quem volta.
| Rota | Contrato | Alcance | Risco p/ o cliente | Prazo |
|---|---|---|---|---|
| A · Export e relatórios | É feature | Leitura em lote5 tipos de dado + 10 relatórios, CSV/XLS | Zero | Hoje |
| B · Automação de tela | Vedado h + c | Lê e escreve tudoo que a tela mostra | Bloqueio de conta | 1–2 dias |
| C · API Cláusula 16ª | Cláusula própria | Conforme endpointparte só-leitura | Zero | Pedido comercial |
| D · Perímetro | Não toca o app | Fora do iClinicWhatsApp, funil, agenda | Zero | Dias |
C é o destino. A + D é a ponte. B só em conta de teste. Depois do teste de campo, a rota A cobre mais terreno do que a estimativa inicial previa — e a rota B ganhou um terceiro argumento contra: além dos itens h e c e da conta intransferível, existe telemetria de borda registrando comportamento de cliente.
Vender automação de tela como serviço recorrente sobre a conta da clínica não arrisca uma multa — arrisca o cliente perder acesso ao sistema que roda o consultório dele, por causa nossa.
Teste de conexão em conta de teste
Concluído em 19/08. Leitura estável, estrutura mapeada, arquitetura interna identificada. Trial expira em 5 dias — se precisar de mais evidência desta conta, é dentro dessa janela.
Pedir a API pelo nome do recurso
Citar a Cláusula 16ª explicitamente e perguntar: qual plano habilita, qual a documentação técnica, como se autoriza um fornecedor terceiro.
E pedir os recursos com o vocabulário deles: equivalente de dashboard/data.json com physician e intervalo de datas, mais pacientes e agenda com filtros de data. Quem chega assim não recebe “não temos API” do primeiro nível.
Assinar o DPA antes de qualquer dado real
Papéis, finalidade, categorias de dado, medidas do art. 46, retenção, suboperadores autorizados — incluindo o provedor de LLM — e prazo de notificação de incidente em 24–48h, para a clínica cumprir os 3 dias úteis do art. 48.
Entregar valor sem tocar em prontuário
Captação, qualificação, recuperação de falta e follow-up rodam no perímetro. Origem, no-show e retorno saem dos relatórios. O opt-in de comunicação vive em permissoes-de-envio. A clínica segue dona do dado sensível.
Levar o achado de segurança como conversa, não como alarme
Ausência de segundo fator na conta que guarda prontuário é fato, não opinião. Apresentar junto com a trilha de /logs/ e a política de acesso por perfil transforma um risco silencioso em pauta — e em serviço.
Pelo Guia de Agentes de Tratamento da ANPD: a clínica é controladora, o iClinic é operador, e a Obralivre entra como operadora — o próprio Guia usa agência de marketing como exemplo. Se subcontratarmos nuvem ou LLM, aparece a figura da suboperadora.
O efeito é o art. 42, §1º, I: o operador responde solidariamente quando descumpre a lei ou as instruções do controlador. Prontuário é dado sensível do art. 11, com base legal de tutela da saúde — não consentimento. E marketing para a base de pacientes é outra finalidade: exige opt-in separado do atendimento.
Traduzindo: sem DPA assinado, um vazamento na nossa ponta vira problema jurídico da clínica — e nosso, junto.
| Fonte | Parece | É |
|---|---|---|
| wiki.iclinic.ua | API e webhooks completos, OpenAPI 3.1 | iClinic Ucrânia — outra empresa. Um plano inteiro apontaria para o servidor errado. |
| MDLand iClinic | 2FA com Google Authenticator | Produto dos EUA. |
| Dasi eClinic | Verificação em duas etapas | Produto espanhol. |
Os dois últimos por pouco não viraram resposta para a pergunta do segundo fator. Quem resolveu foi a tela de login real — e a resposta era o oposto: o produto brasileiro não tem 2FA.
| # | Afirmação | Como foi resolvido | Status |
|---|---|---|---|
| F1 | O Termo Geral proíbe acesso automatizado à interface | Termo Geral, itens h e c + Termo AgendarConsulta 8.1.8 + aceite renovado na tela de login | Confirmado |
| F2 | iClinic BR não tem API pública | Cláusula 16ª refuta; teste de campo mostra API interna REST/JSON com filtros de ORM | Refutado |
| F3 | Export nativo cobre os 5 tipos de dado em CSV/XLS | Central de Suporte + verificado no painel: /configuracoes/exportacao-dados/ | Confirmado |
| F4 | Conta é pessoal e intransferível; compartilhar pode gerar bloqueio | Termo AgendarConsulta 3.1.2 + Termo iClinicRx Farmácia | Confirmado |
| F5 | Existe 2FA no login do Afya iClinic BR | Login real executado: nenhum segundo fator solicitado | Refutado |
Os cinco fatos-chave estão resolvidos, e os dois que faltavam foram fechados por observação direta no produto — evidência mais forte que uma segunda fonte secundária.
O que ainda limita a confiança é o processo, não os fatos: o Phase Gate desta pesquisa prevê verificador independente por subagente, e a instrução de sessão proíbe acionar subagente sem pedido explícito. O gate rodou por checklist manual, o que pela regra da própria skill mantém a confiança final em média, ainda que a base factual tenha subido de patamar.
O que falta para virar alta: resposta escrita do iClinic sobre plano e documentação da API pública — o único item do dossiê que não depende de nós.