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
- 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".
- Copie a chave na hora. Ela começa com
kpl_live_e aparece por inteiro só uma vez. Se perder, revogue e gere outra. - 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 URL | https://ooeomqusfoavhsxupzqk.supabase.co/functions/v1/api |
|---|---|
| Especificação OpenAPI | https://kroply.app/desenvolvedores/openapi.json |
| Cabeçalho | Authorization: Bearer kpl_live_... |
| Método | só GET |
| Formato | JSON |
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 obraGET /resumos-semanais: resumos semanais dos gruposGET /resumo: retrato do diaGET /programacao: programação de campoGET /compras: solicitações de compra
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âmetro | Padrão | Descrição |
|---|---|---|
de | dia 1 do mês | primeiro dia, no formato AAAA-MM-DD |
ate | hoje | ú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âmetro | Padrão | Descrição |
|---|---|---|
semanas | 1 | quantas semanas para trás, de 1 a 12 |
projeto | todos | parte 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âmetro | Padrão | Descrição |
|---|---|---|
data | hoje (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âmetro | Padrão | Descrição |
|---|---|---|
data | hoje (UTC) | AAAA-MM-DD |
tipo | externos | externos 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âmetro | Padrão | Descrição |
|---|---|---|
status | todos | um ou mais, separados por vírgula: solicitado, cotando, aprovado, rejeitado, comprado, chegou, cancelado |
limite | 20 | de 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"}.
| Status | Motivo |
|---|---|
| 401 | chave ausente, mal formatada, inválida ou revogada |
| 404 | função que não existe (a resposta lista as que existem) |
| 405 | método diferente de GET |
| 500 | erro 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.