A API da Zerosoft.
Zero fricção.

Todos os produtos expõem o mesmo estilo de API: REST, JSON e chaves pessoais. Se o dashboard faz, seu código também faz.

Base URL

https://zerosoft.ai/api/v1

Autenticação

Cada requisição precisa de uma API key, enviada como Bearer token. Para sessões de navegador, o fluxo OAuth do Google cria o cookie de sessão.

Authorization: Bearer zs_live_9f3k...

Crie as chaves em Dashboard → Settings → API keys. A chave é exibida uma única vez — copie e guarde como uma senha. Cada chave permite 100 requisições por minuto.

Login com Google

GET/api/auth/signin/google

Redirecione o usuário para iniciar o fluxo OAuth do Google. Após o sucesso ele retorna ao app com o cookie de sessão.

curl -X GET "https://zerosoft.ai/api/auth/signin/google" \
  -H "Authorization: Bearer zs_live_9f3k..."

CRM — Contatos

Pessoas e leads.

Listar contatos

GET/api/v1/crm/contacts

Lista contatos. Filtros: q, page, pageSize (máx 100).

NomeTipoObrigatórioDescrição
qstringNãoQuery de busca.
pageintegerNãoNúmero da página.
pageSizeintegerNãoItems por página (máx 100).
curl -X GET "https://zerosoft.ai/api/v1/crm/contacts" \
  -H "Authorization: Bearer zs_live_9f3k..."

Resposta · 200

{
  "rows": [
    {
      "id": "b1f47ac2-…",
      "first_name": "Ana",
      "last_name": "Garcia",
      "email": "ana@kallpa.co",
      "lifecycle_stage": "sql",
      "created_at": "2026-07-18 10:04:11"
    }
  ],
  "total": 142,
  "page": 1,
  "pageSize": 10
}

Criar um contato

POST/api/v1/crm/contacts

Cria um contato novo.

NomeTipoObrigatórioDescrição
first_namestringNãoNome.
last_namestringNãoSobrenome.
emailstringNãoEndereço de email.
lifecycle_stagestringNãoEtapa do ciclo de vida (lead, sql, opportunity, customer).
curl -X POST "https://zerosoft.ai/api/v1/crm/contacts" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "first_name": "Ana",
  "last_name": "Garcia",
  "email": "ana@kallpa.co",
  "lifecycle_stage": "sql"
}'

Requisição

{
  "first_name": "Ana",
  "last_name": "Garcia",
  "email": "ana@kallpa.co",
  "lifecycle_stage": "sql"
}

Resposta · 201

{
  "id": "b1f47ac2-…",
  "first_name": "Ana",
  "last_name": "Garcia",
  "email": "ana@kallpa.co",
  "lifecycle_stage": "sql",
  "created_at": "2026-07-18 10:04:11"
}

Ler um contato

GET/api/v1/crm/contacts/{id}

Lê um contato por id.

NomeTipoObrigatórioDescrição
idstringSimId do registro.
curl -X GET "https://zerosoft.ai/api/v1/crm/contacts/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."

Atualizar um contato

PATCH/api/v1/crm/contacts/{id}

Atualize qualquer propriedade de um contato.

NomeTipoObrigatórioDescrição
idstringSimId do registro.
first_namestringNãoNome.
last_namestringNãoSobrenome.
emailstringNãoEndereço de email.
curl -X PATCH "https://zerosoft.ai/api/v1/crm/contacts/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "lifecycle_stage": "opportunity"
}'

Requisição

{
  "lifecycle_stage": "opportunity"
}

CRM — Empresas

Organizações e contas.

Listar empresas

GET/api/v1/crm/companies

Lista empresas. Filtros: q, page, pageSize.

NomeTipoObrigatórioDescrição
qstringNãoQuery de busca.
pageintegerNãoNúmero da página.
pageSizeintegerNãoItems por página (máx 100).
curl -X GET "https://zerosoft.ai/api/v1/crm/companies" \
  -H "Authorization: Bearer zs_live_9f3k..."

Criar uma empresa

POST/api/v1/crm/companies

Cria uma empresa nova.

NomeTipoObrigatórioDescrição
namestringSimNome da empresa.
domainstringNãoNome de domínio.
industrystringNãoIndústria.
curl -X POST "https://zerosoft.ai/api/v1/crm/companies" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "name": "Norte Labs",
  "domain": "nortelabs.co",
  "industry": "Software"
}'

Requisição

{
  "name": "Norte Labs",
  "domain": "nortelabs.co",
  "industry": "Software"
}

Ler uma empresa

GET/api/v1/crm/companies/{id}

Lê uma empresa por id.

NomeTipoObrigatórioDescrição
idstringSimId do registro.
curl -X GET "https://zerosoft.ai/api/v1/crm/companies/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."

Atualizar uma empresa

PATCH/api/v1/crm/companies/{id}

Atualize qualquer propriedade de uma empresa.

NomeTipoObrigatórioDescrição
idstringSimId do registro.
namestringNãoNome da empresa.
domainstringNãoNome de domínio.
curl -X PATCH "https://zerosoft.ai/api/v1/crm/companies/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "industry": "Cloud infrastructure"
}'

Requisição

{
  "industry": "Cloud infrastructure"
}

CRM — Deals

Oportunidades e pipelines.

Listar deals

GET/api/v1/crm/deals

Lista deals. Filtro: pipelineId.

NomeTipoObrigatórioDescrição
pipelineIdstringNãoId do pipeline.
qstringNãoQuery de busca.
pageintegerNãoNúmero da página.
pageSizeintegerNãoItems por página (máx 100).
curl -X GET "https://zerosoft.ai/api/v1/crm/deals" \
  -H "Authorization: Bearer zs_live_9f3k..."

Criar um deal

POST/api/v1/crm/deals

Cria um deal em uma etapa do pipeline.

NomeTipoObrigatórioDescrição
namestringSimNome do deal.
amountnumberNãoValor do deal.
currencystringNãoCódigo da moeda.
stage_idstringSimId da etapa.
curl -X POST "https://zerosoft.ai/api/v1/crm/deals" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "name": "Norte Labs — New business",
  "amount": 24000,
  "currency": "USD",
  "stage_id": "{stage_id}"
}'

Requisição

{
  "name": "Norte Labs — New business",
  "amount": 24000,
  "currency": "USD",
  "stage_id": "{stage_id}"
}

Ler um deal

GET/api/v1/crm/deals/{id}

Lê um deal por id.

NomeTipoObrigatórioDescrição
idstringSimId do registro.
curl -X GET "https://zerosoft.ai/api/v1/crm/deals/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."

Atualizar um deal

PATCH/api/v1/crm/deals/{id}

Atualize valor, etapa ou datas.

NomeTipoObrigatórioDescrição
idstringSimId do registro.
namestringNãoNome do deal.
amountnumberNãoValor do deal.
stage_idstringNãoId da etapa.
curl -X PATCH "https://zerosoft.ai/api/v1/crm/deals/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "amount": 28000
}'

Requisição

{
  "amount": 28000
}

CRM — Tarefas

Atividades e acompanhamentos.

Listar tarefas

GET/api/v1/crm/tasks

Lista tarefas. bucket: overdue, today, upcoming, done.

NomeTipoObrigatórioDescrição
bucketstringNãoBucket de filtro: overdue, today, upcoming, done.
pageintegerNãoNúmero da página.
pageSizeintegerNãoItems por página (máx 100).
curl -X GET "https://zerosoft.ai/api/v1/crm/tasks" \
  -H "Authorization: Bearer zs_live_9f3k..."

Criar uma tarefa

POST/api/v1/crm/tasks

Cria uma tarefa, opcionalmente ligada a um registro.

NomeTipoObrigatórioDescrição
subjectstringSimAssunto da tarefa.
due_atstring (ISO)NãoData de vencimento em formato ISO.
contact_idstringNãoId do contato vinculado.
company_idstringNãoId da empresa vinculada.
deal_idstringNãoId do deal vinculado.
curl -X POST "https://zerosoft.ai/api/v1/crm/tasks" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "subject": "Follow-up call",
  "due_at": "2026-07-25T15:00:00Z",
  "deal_id": "{deal_id}"
}'

Requisição

{
  "subject": "Follow-up call",
  "due_at": "2026-07-25T15:00:00Z",
  "deal_id": "{deal_id}"
}

Atualizar uma tarefa

PATCH/api/v1/crm/tasks/{id}

Edite ou conclua uma tarefa.

NomeTipoObrigatórioDescrição
idstringSimId do registro.
subjectstringNãoAssunto da tarefa.
donebooleanNãoMarcar como concluída.
curl -X PATCH "https://zerosoft.ai/api/v1/crm/tasks/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "done": true
}'

Requisição

{
  "done": true
}

CRM — Pipelines e etapas

Pipelines de vendas e suas etapas.

Listar pipelines

GET/api/crm/pipelines

Lista pipelines com suas etapas.

curl -X GET "https://zerosoft.ai/api/crm/pipelines" \
  -H "Authorization: Bearer zs_live_9f3k..."

Criar um pipeline

POST/api/crm/pipelines

Cria um pipeline novo.

NomeTipoObrigatórioDescrição
namestringSimNome do pipeline.
curl -X POST "https://zerosoft.ai/api/crm/pipelines" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "name": "Sales"
}'

Requisição

{
  "name": "Sales"
}

Listar etapas

GET/api/crm/pipelines/{id}/stages

Lista as etapas de um pipeline.

NomeTipoObrigatórioDescrição
idstringSimId do pipeline.
curl -X GET "https://zerosoft.ai/api/crm/pipelines/{id}/stages" \
  -H "Authorization: Bearer zs_live_9f3k..."

Criar uma etapa

POST/api/crm/pipelines/{id}/stages

Cria uma etapa dentro de um pipeline.

NomeTipoObrigatórioDescrição
idstringSimId do pipeline.
namestringSimNome da etapa.
probabilityintegerNãoProbabilidade de ganhar (0-100).
curl -X POST "https://zerosoft.ai/api/crm/pipelines/{id}/stages" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "name": "Proposal",
  "probability": 50
}'

Requisição

{
  "name": "Proposal",
  "probability": 50
}

Equipes

Convidar, aceitar e trocar de workspace.

Convidar para a equipe

POST/api/teams/invites

Convide um email para entrar em uma equipe.

NomeTipoObrigatórioDescrição
teamIdstringSimId da equipe.
emailstringSimEmail para convidar.
curl -X POST "https://zerosoft.ai/api/teams/invites" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "teamId": "{team_id}",
  "email": "teammate@company.com"
}'

Requisição

{
  "teamId": "{team_id}",
  "email": "teammate@company.com"
}

Resposta · 201

{
  "invite": {
    "id": "inv_…",
    "token": "…"
  },
  "url": "https://zerosoft.ai/en/invite/…"
}

Aceitar convite

POST/api/teams/accept

Aceite um convite por token.

NomeTipoObrigatórioDescrição
tokenstringSimToken de convite.
curl -X POST "https://zerosoft.ai/api/teams/accept" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "token": "{invite_token}"
}'

Requisição

{
  "token": "{invite_token}"
}

Resposta · 200

{
  "ok": true,
  "team": {
    "id": "{team_id}",
    "name": "Norte Labs"
  }
}

Trocar de equipe

POST/api/teams/switch

Troque o workspace ativo. Use teamId: null para o workspace pessoal.

NomeTipoObrigatórioDescrição
teamIdstring | nullNãoId da equipe ou null para o workspace pessoal.
curl -X POST "https://zerosoft.ai/api/teams/switch" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "teamId": "{team_id}"
}'

Requisição

{
  "teamId": "{team_id}"
}

Resposta · 200

{
  "ok": true
}

Docs

Páginas e wikis.

Listar páginas

GET/api/docs/pages

Lista as páginas de docs.

curl -X GET "https://zerosoft.ai/api/docs/pages" \
  -H "Authorization: Bearer zs_live_9f3k..."

Resposta · 200

{
  "rows": [
    {
      "id": "page_…",
      "title": "Wiki home",
      "parent_id": null,
      "updated_at": "2026-07-18T12:00:00Z"
    }
  ]
}

Criar página

POST/api/docs/pages

Cria uma página de docs nova.

NomeTipoObrigatórioDescrição
titlestringSimTítulo da página.
parent_idstringNãoId da página pai.
contentDocsBlock[]NãoBlocos de conteúdo da página.
curl -X POST "https://zerosoft.ai/api/docs/pages" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "title": "Onboarding",
  "parent_id": null,
  "content": []
}'

Requisição

{
  "title": "Onboarding",
  "parent_id": null,
  "content": []
}

Ler página

GET/api/docs/pages/{id}

Lê uma página por id.

NomeTipoObrigatórioDescrição
idstringSimId da página.
curl -X GET "https://zerosoft.ai/api/docs/pages/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."

Atualizar página

PATCH/api/docs/pages/{id}

Atualize título, conteúdo ou arquive uma página.

NomeTipoObrigatórioDescrição
idstringSimId da página.
titlestringNãoTítulo da página.
contentDocsBlock[]NãoBlocos de conteúdo da página.
archivedbooleanNãoFlag de arquivo.
curl -X PATCH "https://zerosoft.ai/api/docs/pages/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."
  -H "Content-Type: application/json" \
  -d '{
  "title": "Onboarding v2"
}'

Requisição

{
  "title": "Onboarding v2"
}

Excluir página

DELETE/api/docs/pages/{id}

Exclua uma página por id.

NomeTipoObrigatórioDescrição
idstringSimId da página.
curl -X DELETE "https://zerosoft.ai/api/docs/pages/{id}" \
  -H "Authorization: Bearer zs_live_9f3k..."

Resposta · 200

{
  "ok": true
}