/v1/clinics/{id}/subscription/activate
Ativar a assinatura de uma clínica — somente admin da plataforma
Ativação manual enquanto a cobrança é feita fora do sistema: status ativa, abre o primeiro ciclo pago a partir de agora (mensal ou anual) e libera o logo da clínica. Encerra o teste grátis (o painel sai do modo somente leitura). Sem assinatura (clínica antiga), cria uma — informe planId. Corpo vazio ({}) mantém plano e ciclo atuais. Já ativa no mesmo plano → 409 already_active. Registra no histórico da clínica.
billing.subscription_activatedAutenticação
Envie o token de acesso do usuário no cabeçalho Authorization. Integrações servidor a servidor usam o token de serviço com X-Clinic-Id e X-Agent-Key. Como autenticar
Authorization: Bearer <TOKEN>Parâmetros
Parâmetros de caminho
idstringObrigatórioId do recurso. · Entre 1 e 64 caracteres · Padrão (regex):
^[A-Za-z0-9._-]+$
Corpo da requisição
application/json · obrigatório
planIdstringOpcionalTroca o plano na ativação (inclusive planos sob consulta negociados). · Padrão (regex):
^[a-z0-9-]{1,32}$cyclestringOpcionalValores:
mensal,anualnotestringOpcionalObservação para o histórico (ex.: referência do pagamento). · Até 500 caracteres
Exemplo de requisição
Gerado do contrato. Troque os marcadores entre < > pelos seus valores.
const res = await fetch("https://myclinc.leadpoint.com.br/v1/clinics/<id>/subscription/activate", { method: "POST", headers: { Authorization: "Bearer <TOKEN>", "Content-Type": "application/json", }, body: JSON.stringify({ "planId": "<planId>", "cycle": "mensal", "note": "<note>" }),})if (!res.ok) { const { error } = await res.json() throw new Error(`${error.code}: ${error.message} (${error.requestId})`)}const { data } = await res.json()Resposta
{ "data": { "clinicId": "<clinicId>", "subscriptionId": "<subscriptionId>", "planId": "<planId>", "status": "ativa", "cycle": "mensal", "cycleStart": "2026-09-18T14:00:00.000Z", "cycleEnd": "2026-09-18T14:00:00.000Z", "activatedAt": "2026-09-18T14:00:00.000Z" }, "meta": { "webhooks": [ { "event": "appointment.cancelled", "status": "sent" } ] }}Exemplo gerado do esquema da resposta; valores entre < > são ilustrativos.
Códigos de erro
Corpo no formato padrão { error: { code, message, requestId } }. Veja todos os códigos.
Bad Request — Requisição malformada (JSON inválido, cursor inválido ou clínica ativa não informada).
Unauthorized — Token ausente, inválido ou expirado.
Forbidden — Autenticado, mas sem permissão (perfil ou clínica).
Not Found — Recurso não encontrado na clínica ativa.
Conflict — Conflito de estado (duplicidade, transição inválida, conflito de agenda).
Unprocessable Entity — Dados semanticamente inválidos (erros por campo em details).
Too Many Requests — Limite de requisições excedido (veja Retry-After).
Internal Server Error — Erro interno (sem detalhes expostos).
Service Unavailable — Banco de dados indisponível ou não configurado.
Limites
Limite padrão: 120 requisições a cada 60 segundos por token. Sobre limites