Para desenvolvedores

API do Kroply

Conecte um agente de IA, um GPT customizado ou uma automação (Zapier, Make, n8n) aos dados da sua empresa no Kroply. A API é só de leitura: nada do que ela faz altera o sistema.

Como começar

  1. No Kroply, abra Configurações → APIe gere uma chave (só administradores veem esse card). Dê um nome que diga quem vai usar, por exemplo "Agente LinkedIn".
  2. Copie a chave na hora. Ela começa com kpl_live_ e aparece por inteiro só uma vez. Se perder, revogue e gere outra.
  3. Entregue ao agente a chave, a base da URL e o endereço da especificação OpenAPI, que estão logo abaixo.

Acesso

Base da URLhttps://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api
Especificação OpenAPIhttps://kroply.app/desenvolvedores/openapi.json
CabeçalhoAuthorization: Bearer kpl_live_...
Métodosó GET
FormatoJSON

Se a ferramenta não deixar escrever o prefixo "Bearer", mande só a chave no cabeçalho Authorization, que também funciona. Cada chave enxerga apenas os dados da empresa que a criou.

Funções

GET /horas · Horas por pessoa e obra

Horas de cada pessoa em cada obra, tiradas da Programação, para totalizar custo por funcionário e por centro de custo. Cada pessoa vale 8 horas no dia, divididas em partes iguais entre as obras em que foi programada. Quem tem ausência lançada no dia vem com 0 hora e o motivo. O centro de custo vem da obra, pelo projeto ligado a ela.

ParâmetroPadrãoDescrição
dedia 1 do mêsprimeiro dia, no formato AAAA-MM-DD
atehojeúltimo dia, no formato AAAA-MM-DD (período de até 1 ano)

Exemplo

curl -s "https://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api/horas?de=2026-10-01&ate=2026-10-31" \
  -H "Authorization: Bearer kpl_live_..."

Resposta

{
  "ok": true,
  "de": "2026-10-01",
  "ate": "2026-10-31",
  "total_horas": 1240,
  "linhas": [
    {
      "data": "2026-10-14",
      "dia_semana": "quarta",
      "tecnico_id": "3f0c…",
      "tecnico": "João",
      "funcao": "Técnico de campo",
      "categoria": "tecnico",
      "obra_id": "9a1b…",
      "obra": "Obra Exemplo",
      "cliente": "Cliente Exemplo",
      "projeto": "Projeto Exemplo",
      "centro_custo_codigo": 123456789,
      "centro_custo": "Obra Exemplo - Operação",
      "horas": 4,
      "status_programacao": "publicada",
      "tipo_programacao": "externos",
      "ausencia": null
    }
  ]
}

GET /resumos-semanais · Resumos semanais dos grupos

Os resumos da aba Resumo: para cada grupo de WhatsApp (obra ou projeto) com mensagem na semana, o que avançou, decisões, pendências, material e fotos. É a fonte mais completa para entender o que aconteceu na empresa. Os resumos saem toda segunda às 7h (Brasília), sobre a semana anterior.

ParâmetroPadrãoDescrição
semanas1quantas semanas para trás, de 1 a 12
projetotodosparte do nome do grupo ou obra, sem diferenciar maiúsculas

Exemplo

curl -s "https://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api/resumos-semanais?semanas=4" \
  -H "Authorization: Bearer kpl_live_..."

Resposta

{
  "ok": true,
  "semanas": [
    {
      "semana_inicio": "2026-10-12",
      "projetos": [
        {
          "projeto": "Obra Exemplo",
          "status": "normal",
          "destaque": "Troca do painel concluída",
          "avancou": ["Troca do painel concluída"],
          "decisoes": ["Instalar hidrômetros na próxima visita"],
          "pendencias": [],
          "materiais": ["Cotação de três hidrômetros de 1 polegada"],
          "fotos": [],
          "total_mensagens": 48,
          "total_fotos": 6
        }
      ]
    }
  ]
}

GET /resumo · Retrato do dia

Quanta gente está em campo, quantas frentes e o estado das compras num dia.

ParâmetroPadrãoDescrição
datahoje (UTC)AAAA-MM-DD

Exemplo

curl -s "https://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api/resumo?data=2026-10-20" \
  -H "Authorization: Bearer kpl_live_..."

Resposta

{
  "ok": true,
  "data": "2026-10-20",
  "programacao": {
    "externos": { "status": "publicada", "frentes": 5, "pessoas_em_campo": 12 },
    "sites": { "status": "rascunho", "frentes": 2, "pessoas_em_campo": 3 }
  },
  "compras": {
    "por_status": { "solicitado": 4, "cotando": 2, "comprado": 8 },
    "paradas_ha_mais_de_3_dias": 2
  }
}

GET /programacao · Programação de campo

As frentes de um dia: obra, atividade, veículo, equipe e o retorno do campo (feito, não feito ou pendência).

ParâmetroPadrãoDescrição
datahoje (UTC)AAAA-MM-DD
tipoexternosexternos ou sites

Exemplo

curl -s "https://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api/programacao?data=2026-10-20&tipo=externos" \
  -H "Authorization: Bearer kpl_live_..."

Resposta

{
  "ok": true,
  "data": "2026-10-20",
  "tipo": "externos",
  "status": "publicada",
  "frentes": [
    {
      "obra": "Obra Exemplo",
      "atividade": "Monitoramento",
      "observacao": null,
      "veiculo": "Onix 03",
      "equipe": ["Ana", "Carlos"],
      "execucao": "feito",
      "pendencia": null
    }
  ]
}

GET /compras · Solicitações de compra

Solicitações de compra, das mais recentes para as mais antigas.

ParâmetroPadrãoDescrição
statustodosum ou mais, separados por vírgula: solicitado, cotando, aprovado, rejeitado, comprado, chegou, cancelado
limite20de 1 a 100

Exemplo

curl -s "https://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api/compras?status=solicitado,cotando&limite=10" \
  -H "Authorization: Bearer kpl_live_..."

Resposta

{
  "ok": true,
  "itens": [
    {
      "id": "…",
      "descricao": "Mangueira 1 polegada",
      "quantidade": "50m",
      "prioridade": "normal",
      "status": "solicitado",
      "centro_custo": "Obra Exemplo",
      "fornecedor": null,
      "valor": null,
      "pedido_omie": null,
      "previsao_entrega": null,
      "criado_em": "2026-10-20T13:02:11Z",
      "atualizado_em": "2026-10-20T13:02:11Z"
    }
  ]
}

Erros

Toda resposta de erro vem no formato {"erro": "mensagem"}.

StatusMotivo
401chave ausente, mal formatada, inválida ou revogada
404função que não existe (a resposta lista as que existem)
405método diferente de GET
500erro interno; tente de novo e, se continuar, avise o suporte

Conectando um agente de IA

Agentes que aceitam ferramentas OpenAPI (GPTs customizados, Claude, n8n, LangChain e outros) conseguem ler a especificação sozinhos e descobrir as funções. Para os demais, cole estas instruções no agente, trocando a chave:

Você tem acesso somente leitura ao Kroply, o sistema de gestão da empresa.
Especificação da API: https://kroply.app/desenvolvedores/openapi.json
Base: https://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api
Mande em toda chamada o cabeçalho: Authorization: Bearer <SUA_CHAVE>

Toda segunda depois das 7h (horário de Brasília), chame
GET /resumos-semanais?semanas=1 e use o que avançou e as decisões de cada
grupo como matéria-prima para os posts.

Regras: não cite nomes de clientes, funcionários, valores nem problemas
internos sem eu aprovar. Me mostre cada post antes de publicar.

Cuidados

  • Os resumos vêm das conversas dos grupos e podem citar clientes, funcionários, valores e problemas. Revise tudo antes de publicar fora da empresa.
  • Trate a chave como uma senha: não coloque em sites, planilhas compartilhadas ou código público. Se vazar, revogue em Configurações → API; a chave para de funcionar na hora.
  • Ainda não há limite de chamadas por minuto. Para integrações com volume alto, fale com a gente antes.