ERP · Gestão Escolar Leitura e escrita Escolas privadas

CRM de Prospecção

O funil de captação de alunos: etapas e leads. Envie leads do seu site, landing page ou chatbot direto para o quadro da escola e acompanhe a evolução de cada um até a matrícula.

O modelo lead

id uuid

Identificador do lead.

status string

open (em andamento), won (ganho) ou lost (perdido).

stage object

Etapa atual (id, key, name).

type string

pre_enrollment (aluno novo) ou rematricula.

source string

Origem do lead.

student_* / guardian_* string|null

Dados do aluno e do responsável.

interest_grade / interest_shift / school_year object|null

Série, turno e ano letivo de interesse.

pre_enrollment_id / student_id / enrollment mixed

Preenchidos quando o lead vira pré-matrícula, aluno e matrícula.

O modelo lead
{
  "id": "019ff604-2f05-701b-b3b9-dc9426f2d342",
  "status": "open",
  "status_label": "Em andamento",
  "stage": {
    "id": "019f91d7-47b5-71dd-84d1-1450de044b26",
    "key": "contacted",
    "name": "Contato Realizado"
  },
  "type": "pre_enrollment",
  "source": "website",
  "source_label": "Site",
  "student_name": "Lucas Pereira",
  "student_birthdate": "2016-04-12",
  "guardian_name": "Aline Pereira",
  "guardian_cpf": "39053344705",
  "guardian_email": "aline.pereira@email.com",
  "guardian_phone": "(21) 99999-1234",
  "interest_grade": {
    "id": "019f051a-921b-70c9-b645-e45d945764ae",
    "name": "5º Ano"
  },
  "interest_shift": {
    "id": "019f051a-9a00-7000-8000-000000000001",
    "name": "Manhã"
  },
  "school_year": {
    "id": "019e6e4b-30ff-7140-89ff-810f32d19a18",
    "name": "2027"
  },
  "estimated_value": 14400,
  "lost_reason": null,
  "notes": "Veio pela campanha de rematrícula.",
  "pre_enrollment_id": null,
  "student_id": null,
  "enrollment": null,
  "entered_stage_at": "2026-09-28T10:00:00-03:00",
  "last_activity_at": "2026-09-30T16:20:00-03:00",
  "created_at": "2026-09-25T09:12:00-03:00",
  "updated_at": "2026-09-30T16:20:00-03:00"
}
GET /v1/partners/school/{cnpj}/crm/stages/all

Listar etapas do funil

Etapas do funil de matrícula na ordem do quadro, com a quantidade de leads em cada uma. Na primeira consulta de uma escola, o funil padrão é criado automaticamente. Não paginado.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/crm/stages/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/crm/stages/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "019f91d7-47b5-71dd-84d1-1450de044b26",
      "key": "contacted",
      "name": "Contato Realizado",
      "order": 1,
      "color": "#6366f1",
      "probability": 25,
      "is_won": false,
      "is_lost": false,
      "system_driven": false,
      "leads_count": 12
    }
  ]
}
GET /v1/partners/school/{cnpj}/crm/leads/all

Listar leads

Leads da escola, do mais recente para o mais antigo. Paginado (25 por página).

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Filtros (query string)

search string opcional

Parte do nome do aluno ou do responsável, e-mail ou telefone.

status string opcional

open, won ou lost.

source string opcional

Origem do lead.

stage_id uuid opcional

Somente uma etapa.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição GET
GET /v1/partners/school/{cnpj}/crm/leads/all
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/crm/leads/all \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": [
    {
      "id": "019ff604-2f05-701b-b3b9-dc9426f2d342",
      "status": "open",
      "status_label": "Em andamento",
      "stage": {
        "id": "019f91d7-47b5-71dd-84d1-1450de044b26",
        "key": "contacted",
        "name": "Contato Realizado"
      },
      "type": "pre_enrollment",
      "source": "website",
      "source_label": "Site",
      "student_name": "Lucas Pereira",
      "student_birthdate": "2016-04-12",
      "guardian_name": "Aline Pereira",
      "guardian_cpf": "39053344705",
      "guardian_email": "aline.pereira@email.com",
      "guardian_phone": "(21) 99999-1234",
      "interest_grade": {
        "id": "019f051a-921b-70c9-b645-e45d945764ae",
        "name": "5º Ano"
      },
      "interest_shift": {
        "id": "019f051a-9a00-7000-8000-000000000001",
        "name": "Manhã"
      },
      "school_year": {
        "id": "019e6e4b-30ff-7140-89ff-810f32d19a18",
        "name": "2027"
      },
      "estimated_value": 14400,
      "lost_reason": null,
      "notes": "Veio pela campanha de rematrícula.",
      "pre_enrollment_id": null,
      "student_id": null,
      "enrollment": null,
      "entered_stage_at": "2026-09-28T10:00:00-03:00",
      "last_activity_at": "2026-09-30T16:20:00-03:00",
      "created_at": "2026-09-25T09:12:00-03:00",
      "updated_at": "2026-09-30T16:20:00-03:00"
    }
  ],
  "links": { /* first, prev, next */ },
  "meta": { "current_page": 1, "per_page": 25 }
}
GET /v1/partners/school/{cnpj}/crm/lead/{id}

Obter lead

Um lead.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do lead.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

Requisição GET
GET /v1/partners/school/{cnpj}/crm/lead/{id}
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/crm/lead/{id} \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}"
Resposta
{
  "data": {
    "id": "019ff604-2f05-701b-b3b9-dc9426f2d342",
    "status": "open",
    "status_label": "Em andamento",
    "stage": {
      "id": "019f91d7-47b5-71dd-84d1-1450de044b26",
      "key": "contacted",
      "name": "Contato Realizado"
    },
    "type": "pre_enrollment",
    "source": "website",
    "source_label": "Site",
    "student_name": "Lucas Pereira",
    "student_birthdate": "2016-04-12",
    "guardian_name": "Aline Pereira",
    "guardian_cpf": "39053344705",
    "guardian_email": "aline.pereira@email.com",
    "guardian_phone": "(21) 99999-1234",
    "interest_grade": {
      "id": "019f051a-921b-70c9-b645-e45d945764ae",
      "name": "5º Ano"
    },
    "interest_shift": {
      "id": "019f051a-9a00-7000-8000-000000000001",
      "name": "Manhã"
    },
    "school_year": {
      "id": "019e6e4b-30ff-7140-89ff-810f32d19a18",
      "name": "2027"
    },
    "estimated_value": 14400,
    "lost_reason": null,
    "notes": "Veio pela campanha de rematrícula.",
    "pre_enrollment_id": null,
    "student_id": null,
    "enrollment": null,
    "entered_stage_at": "2026-09-28T10:00:00-03:00",
    "last_activity_at": "2026-09-30T16:20:00-03:00",
    "created_at": "2026-09-25T09:12:00-03:00",
    "updated_at": "2026-09-30T16:20:00-03:00"
  }
}
POST /v1/partners/school/{cnpj}/crm/lead

Criar lead

Adiciona um lead ao funil — por exemplo, a partir do formulário do seu site ou de uma campanha. A equipe da escola é notificada e a criação fica no histórico do lead. Dispara o webhook crm_lead.created.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

Parâmetros do corpo

crm_stage_id uuid opcional

Etapa inicial. Padrão: a primeira etapa manual do funil. Etapas automáticas, ganhas ou perdidas não são aceitas.

student_name string obrigatório

Nome do aluno interessado.

guardian_name string obrigatório

Nome do responsável.

student_birthdate date opcional

Nascimento do aluno (AAAA-MM-DD).

guardian_cpf string opcional

CPF do responsável.

guardian_email string opcional

E-mail do responsável.

guardian_phone string opcional

Telefone/WhatsApp do responsável.

source string opcional

Origem: website, walk_in, phone, whatsapp, referral, social_media, public_form ou other (padrão).

interest_grade_id uuid opcional

Série de interesse (veja Séries e Anos).

interest_shift_id uuid opcional

Turno de interesse.

school_year_id uuid opcional

Ano letivo de interesse (da própria escola).

estimated_value number opcional

Valor anual estimado do contrato.

notes string opcional

Observações.

Códigos de resposta

201

Recurso criado.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Dados inválidos, ou etapa inicial não permitida (INVALID_STAGE).

Requisição POST
POST /v1/partners/school/{cnpj}/crm/lead
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/crm/lead \
  -X POST \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"student_name":"Lucas Pereira","guardian_name":"Aline Pereira","guardian_email":"aline.pereira@email.com","guardian_phone":"(21) 99999-1234","source":"website"}'
Resposta
{
  "data": {
    "id": "019ff604-2f05-701b-b3b9-dc9426f2d342",
    "status": "open",
    "status_label": "Em andamento",
    "stage": {
      "id": "019f91d7-47b5-71dd-84d1-1450de044b26",
      "key": "contacted",
      "name": "Contato Realizado"
    },
    "type": "pre_enrollment",
    "source": "website",
    "source_label": "Site",
    "student_name": "Lucas Pereira",
    "student_birthdate": "2016-04-12",
    "guardian_name": "Aline Pereira",
    "guardian_cpf": "39053344705",
    "guardian_email": "aline.pereira@email.com",
    "guardian_phone": "(21) 99999-1234",
    "interest_grade": {
      "id": "019f051a-921b-70c9-b645-e45d945764ae",
      "name": "5º Ano"
    },
    "interest_shift": {
      "id": "019f051a-9a00-7000-8000-000000000001",
      "name": "Manhã"
    },
    "school_year": {
      "id": "019e6e4b-30ff-7140-89ff-810f32d19a18",
      "name": "2027"
    },
    "estimated_value": 14400,
    "lost_reason": null,
    "notes": "Veio pela campanha de rematrícula.",
    "pre_enrollment_id": null,
    "student_id": null,
    "enrollment": null,
    "entered_stage_at": "2026-09-28T10:00:00-03:00",
    "last_activity_at": "2026-09-30T16:20:00-03:00",
    "created_at": "2026-09-25T09:12:00-03:00",
    "updated_at": "2026-09-30T16:20:00-03:00"
  }
}
PUT /v1/partners/school/{cnpj}/crm/lead/{id}

Editar lead

Atualiza os dados do lead. Somente os campos enviados são alterados; a etapa muda pelos endpoints abaixo.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do lead.

Parâmetros do corpo

student_name string opcional

Nome do aluno interessado.

guardian_name string opcional

Nome do responsável.

student_birthdate date opcional

Nascimento do aluno (AAAA-MM-DD).

guardian_cpf string opcional

CPF do responsável.

guardian_email string opcional

E-mail do responsável.

guardian_phone string opcional

Telefone/WhatsApp do responsável.

source string opcional

Origem: website, walk_in, phone, whatsapp, referral, social_media, public_form ou other (padrão).

interest_grade_id uuid opcional

Série de interesse (veja Séries e Anos).

interest_shift_id uuid opcional

Turno de interesse.

school_year_id uuid opcional

Ano letivo de interesse (da própria escola).

estimated_value number opcional

Valor anual estimado do contrato.

notes string opcional

Observações.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Parâmetros inválidos — veja errors.

Requisição PUT
PUT /v1/partners/school/{cnpj}/crm/lead/{id}
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/crm/lead/{id} \
  -X PUT \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"guardian_phone":"(21) 98888-0000","notes":"Agendou visita para sexta."}'
Resposta
{
  "data": {
    "id": "019ff604-2f05-701b-b3b9-dc9426f2d342",
    "status": "open",
    "status_label": "Em andamento",
    "stage": {
      "id": "019f91d7-47b5-71dd-84d1-1450de044b26",
      "key": "contacted",
      "name": "Contato Realizado"
    },
    "type": "pre_enrollment",
    "source": "website",
    "source_label": "Site",
    "student_name": "Lucas Pereira",
    "student_birthdate": "2016-04-12",
    "guardian_name": "Aline Pereira",
    "guardian_cpf": "39053344705",
    "guardian_email": "aline.pereira@email.com",
    "guardian_phone": "(21) 99999-1234",
    "interest_grade": {
      "id": "019f051a-921b-70c9-b645-e45d945764ae",
      "name": "5º Ano"
    },
    "interest_shift": {
      "id": "019f051a-9a00-7000-8000-000000000001",
      "name": "Manhã"
    },
    "school_year": {
      "id": "019e6e4b-30ff-7140-89ff-810f32d19a18",
      "name": "2027"
    },
    "estimated_value": 14400,
    "lost_reason": null,
    "notes": "Veio pela campanha de rematrícula.",
    "pre_enrollment_id": null,
    "student_id": null,
    "enrollment": null,
    "entered_stage_at": "2026-09-28T10:00:00-03:00",
    "last_activity_at": "2026-09-30T16:20:00-03:00",
    "created_at": "2026-09-25T09:12:00-03:00",
    "updated_at": "2026-09-30T16:20:00-03:00"
  }
}
PATCH /v1/partners/school/{cnpj}/crm/lead/{id}/stage

Mover lead de etapa

Move o lead para outra etapa do funil, como arrastar o cartão no quadro. Mover para uma etapa ganha ou perdida altera o status para won / lost. Dispara o webhook crm_lead.stage_changed.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do lead.

Parâmetros do corpo

crm_stage_id uuid obrigatório

Etapa de destino (do funil desta escola).

As etapas Pré-matrícula, Rematrícula e Matriculado (system_driven: true) refletem o fluxo real de matrícula: não podem ser destino nem origem de uma movimentação manual — a resposta é 422 com code: "SYSTEM_DRIVEN_STAGE". Elas são alcançadas quando a escola converte o lead em pré-matrícula e efetiva a matrícula.

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Etapa automática (SYSTEM_DRIVEN_STAGE) ou dados inválidos.

Requisição PATCH
PATCH /v1/partners/school/{cnpj}/crm/lead/{id}/stage
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/crm/lead/{id}/stage \
  -X PATCH \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"crm_stage_id":"019f91d7-47b9-7037-aec8-c7a63dc485ef"}'
Resposta
{
  "data": {
    "id": "019ff604-2f05-701b-b3b9-dc9426f2d342",
    "status": "open",
    "status_label": "Em andamento",
    "stage": {
      "id": "019f91d7-47b9-7037-aec8-c7a63dc485ef",
      "key": "visit_scheduled",
      "name": "Visita Agendada"
    },
    "type": "pre_enrollment",
    "source": "website",
    "source_label": "Site",
    "student_name": "Lucas Pereira",
    "student_birthdate": "2016-04-12",
    "guardian_name": "Aline Pereira",
    "guardian_cpf": "39053344705",
    "guardian_email": "aline.pereira@email.com",
    "guardian_phone": "(21) 99999-1234",
    "interest_grade": {
      "id": "019f051a-921b-70c9-b645-e45d945764ae",
      "name": "5º Ano"
    },
    "interest_shift": {
      "id": "019f051a-9a00-7000-8000-000000000001",
      "name": "Manhã"
    },
    "school_year": {
      "id": "019e6e4b-30ff-7140-89ff-810f32d19a18",
      "name": "2027"
    },
    "estimated_value": 14400,
    "lost_reason": null,
    "notes": "Veio pela campanha de rematrícula.",
    "pre_enrollment_id": null,
    "student_id": null,
    "enrollment": null,
    "entered_stage_at": "2026-09-28T10:00:00-03:00",
    "last_activity_at": "2026-09-30T16:20:00-03:00",
    "created_at": "2026-09-25T09:12:00-03:00",
    "updated_at": "2026-09-30T16:20:00-03:00"
  }
}
PATCH /v1/partners/school/{cnpj}/crm/lead/{id}/lost

Marcar lead como perdido

Registra o motivo da perda e move o lead para a etapa de perdidos. Dispara o webhook crm_lead.stage_changed.

Parâmetros de rota

cnpj string obrigatório

CNPJ da escola (14 dígitos, sem formatação).

id uuid obrigatório

UUID do lead.

Parâmetros do corpo

lost_reason string opcional

Motivo da perda (até 1000 caracteres).

Códigos de resposta

200

Sucesso.

401

Credenciais inválidas (X-Partner, X-Client ou X-Authorization).

403

Cliente fora do plano Gestão Escolar (ERP_REQUIRED) ou módulo exclusivo de escolas privadas (PRIVATE_CLIENT_REQUIRED).

404

Escola ou recurso não encontrado.

422

Lead em etapa automática (SYSTEM_DRIVEN_STAGE) ou dados inválidos.

Requisição PATCH
PATCH /v1/partners/school/{cnpj}/crm/lead/{id}/lost
curl https://toakiescola.com.br/api/v1/partners/school/{cnpj}/crm/lead/{id}/lost \
  -X PATCH \
  -H "X-Authorization: {api_token}" \
  -H "X-Partner: {partner_token}" \
  -H "X-Client: {client_slug}" \
  -H "Content-Type: application/json" \
  -d '{"lost_reason":"Mudou de cidade"}'
Resposta
{
  "data": {
    "id": "019ff604-2f05-701b-b3b9-dc9426f2d342",
    "status": "lost",
    "status_label": "Perdido",
    "stage": {
      "id": "019f91d7-47c9-7000-8000-000000000009",
      "key": "lost",
      "name": "Perdido"
    },
    "type": "pre_enrollment",
    "source": "website",
    "source_label": "Site",
    "student_name": "Lucas Pereira",
    "student_birthdate": "2016-04-12",
    "guardian_name": "Aline Pereira",
    "guardian_cpf": "39053344705",
    "guardian_email": "aline.pereira@email.com",
    "guardian_phone": "(21) 99999-1234",
    "interest_grade": {
      "id": "019f051a-921b-70c9-b645-e45d945764ae",
      "name": "5º Ano"
    },
    "interest_shift": {
      "id": "019f051a-9a00-7000-8000-000000000001",
      "name": "Manhã"
    },
    "school_year": {
      "id": "019e6e4b-30ff-7140-89ff-810f32d19a18",
      "name": "2027"
    },
    "estimated_value": 14400,
    "lost_reason": "Mudou de cidade",
    "notes": "Veio pela campanha de rematrícula.",
    "pre_enrollment_id": null,
    "student_id": null,
    "enrollment": null,
    "entered_stage_at": "2026-09-28T10:00:00-03:00",
    "last_activity_at": "2026-09-30T16:20:00-03:00",
    "created_at": "2026-09-25T09:12:00-03:00",
    "updated_at": "2026-09-30T16:20:00-03:00"
  }
}