API REST Pública
Automatize workflows de compliance, sincronize dados de runs com sistemas externos e construa dashboards ou agentes de IA usando API keys com escopo e uma interface REST padrão.
Crie uma API key
Acesse Configurações → Integrações → API Keys e crie uma nova key. Selecione apenas os escopos que a integração exige.
Faça uma requisição
Inclua a key no header Authorization: Bearer. A URL base é https://api.cadenio.com — não há prefixo de versão.
Trate a resposta
As respostas são JSON com campos em camelCase, iguais aos que o próprio app web do Cadenio envia e recebe. Erros incluem os campos statusCode e error para tratamento.
Autenticação
Todas as requisições à API precisam incluir uma API key válida no header Authorization usando o esquema Bearer. As keys têm prefixo sk_live_ e estão disponíveis para organizações no plano Business ou superior, em Configurações → Integrações → API Keys.
Header obrigatório
AuthorizationstringobrigatórioDeve ser Bearer seguido da sua API key sk_live_.
Content-TypestringopcionalObrigatório para requisições POST e PATCH. Definir como application/json.
curl https://api.cadenio.com/runs \
-H "Authorization: Bearer sk_live_a1b2c3..." \
-H "Content-Type: application/json"Escopos
Cada API key possui um conjunto de escopos que define exatamente quais operações ela pode executar, mais um modo de recurso que restringe ainda mais quais templates ou pastas ela pode acessar. Requisições de sessão (navegador) são sempre permitidas independentemente dos escopos — o controle se aplica apenas a requisições via API key.
| Escopo | Descrição |
|---|---|
runs:read | Leitura de listas de runs, detalhes, analytics e exportações |
runs:write | Atualizar título do run, status/prazo/responsável de tarefas, aprovações |
runs:execute | Iniciar novos runs a partir de um template |
templates:read | Leitura de templates, tarefas, campos, regras e versões |
templates:write | Criação e edição de templates, tarefas, campos, regras e fases |
templates:publish | Publicar um rascunho de template como uma nova versão |
files:read | Download de arquivos, thumbnails e verificação de status de scan |
files:write | Upload e exclusão de arquivos anexados a tarefas de runs |
data-sources:read | Leitura de fontes de dados, colunas, linhas e relações |
data-sources:write | Criação e atualização de fontes de dados, colunas e linhas |
users:read | Leitura da lista de membros da organização |
webhooks:manage | Criar, listar, atualizar, testar e excluir endpoints de webhook |
Modo de recurso (resourceMode)
Além dos escopos, cada key tem um resourceMode: ALL (padrão, acessa qualquer template/run da org), SELECTED_TEMPLATES (restrita a uma lista de templates) ou SELECTED_FOLDERS (restrita a todo template dentro das pastas selecionadas). A restrição vale para templates, seus rascunhos, runs e execução de tarefas — uma key restrita a um template não consegue ler nem alterar outros, mesmo que o request 'pareça' válido.
Rate limits
Os rate limits são aplicados por API key, de forma independente de outras keys ou usuários de sessão da mesma organização. Requisições de leitura (GET) têm uma cota bem maior que requisições de escrita (POST/PATCH/DELETE), já que listar e consultar é muito mais barato que mutações.
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 294
X-RateLimit-Reset: 1785005060HTTP/1.1 429 Too Many Requests
Retry-After: 47
{
"statusCode": 429,
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"retryAfter": 47
}Respostas de erro
Erros retornam um corpo JSON padrão: statusCode (igual ao status HTTP), error (uma frase curta e estável, como "Forbidden" ou "Not Found"), message (uma string legível por humanos, ou um array de strings para erros de validação), timestamp e path. Não existe um código de erro separado legível por máquina para a maioria dos erros — trate por statusCode e, quando útil, por trechos de message.
| Status | exemplo de error / message |
|---|---|
| 400 | Bad RequestFalha na validação de entrada, ou conflito de regra de negócio (ex.: completar um run com tarefas obrigatórias pendentes) |
| 401 | UnauthorizedAPI key ausente, malformada ou revogada ('Authentication required') |
| 401 | UnauthorizedEndpoint exige sessão de navegador; API keys não podem acessá-lo (ex.: o próprio /api-keys) |
| 402 | Payment RequiredCorpo inclui { code: "FEATURE_LOCKED", capability }. O plano da org não inclui este recurso |
| 403 | ForbiddenKey não possui o escopo necessário para esta ação |
| 403 | ForbiddenO modo de recurso da key não concede acesso a este template/pasta |
| 404 | Not FoundRecurso não existe, foi excluído, ou não é acessível a partir desta org |
| 429 | Too Many RequestsRate limit excedido. Verifique o header Retry-After para o atraso de nova tentativa em segundos |
| 500 | Internal Server ErrorErro inesperado no servidor. Tente novamente com backoff; contate o suporte se persistir |
HTTP/1.1 403 Forbidden
{
"statusCode": 403,
"timestamp": "2026-07-24T16:43:10Z",
"path": "/runs",
"message": "API key missing required scope: runs:read",
"error": "Forbidden"
}Runs
Um run é uma instância de execução de um template. Representa um processo em andamento ou concluído, com tarefas atribuídas, prazos e trilha de auditoria completa. Runs têm tanto um id UUID (usado em toda URL) quanto um publicId curto e amigável, usado para exibição.
/runsruns:readRetorna uma lista paginada de runs da organização, mais recentes primeiro. Use parâmetros de consulta para filtrar por status, template ou data agendada.
Parâmetros
statusstringopcionalFiltrar por status do run. Um de: RUNNING, OVERDUE, COMPLETED, CANCELLED.
templateIdstringopcionalFiltrar runs iniciados de um template específico.
scheduledDatestringopcionalFiltrar pela data agendada (YYYY-MM-DD).
stalledForDaysintegeropcionalSomente runs ativos (RUNNING/OVERDUE) sem atividade há pelo menos esse número de dias.
limitintegeropcionalItens por página. Padrão e máximo: 200.
curl -G https://api.cadenio.com/runs \
-H "Authorization: Bearer sk_live_..." \
-d status=RUNNING \
-d limit=20HTTP/1.1 200 OK
{
"data": [
{
"id": "3ed4dcf7-a102-4327-81ab-723b34d8a6b5",
"publicId": "r_3ytXrD6WA7",
"title": "Vendor Onboarding - ACME Corp",
"status": "RUNNING",
"templateId": "6795dfb5-15de-4f41-8a96-b83830526ca6",
"ownerUserId": "2bc947d9-114d-4c7f-9d18-6af9cfa2393c",
"scheduledDateLocal": "2026-07-24",
"createdAt": "2026-07-24T14:22:00Z",
"completedAt": null
}
],
"total": 1,
"hasMore": false
}
// id is the UUID you use in every other endpoint. publicId is a short,
// human-friendly identifier (only runs have one) meant for display in UI/PDFs./runsruns:executeCria um novo run a partir de um template publicado. O run abre imediatamente com status RUNNING e todas as tarefas geradas a partir da versão publicada do template. Se o resourceMode da sua key for SELECTED_TEMPLATES ou SELECTED_FOLDERS, templateId precisa estar dentro do conjunto permitido.
Parâmetros
templateIdstringobrigatórioID do template a ser iniciado. O template precisa estar publicado.
titlestringopcionalNome de exibição personalizado. Padrão: padrão de título do template ou o nome do template.
scheduledDateLocalstringopcionalData agendada no formato YYYY-MM-DD, no fuso horário da org. Padrão: hoje.
ownerEmailstringopcionalEmail do usuário a ser definido como responsável pelo run. Padrão: criador da API key.
variablesobjectopcionalMapa chave-valor sobrescrevendo as variáveis de fluxo do template para este run.
curl -X POST https://api.cadenio.com/runs \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"templateId": "6795dfb5-15de-4f41-8a96-b83830526ca6",
"title": "Vendor Onboarding - ACME Corp"
}'HTTP/1.1 201 Created
{
"id": "3ed4dcf7-a102-4327-81ab-723b34d8a6b5",
"publicId": "r_3ytXrD6WA7",
"title": "Vendor Onboarding - ACME Corp",
"status": "RUNNING",
"templateId": "6795dfb5-15de-4f41-8a96-b83830526ca6",
"templateVersionId": "fbc7dd41-334e-416b-8ddd-acb053aa0dd9",
"ownerUserId": "2bc947d9-114d-4c7f-9d18-6af9cfa2393c",
"createdAt": "2026-07-24T14:22:00Z"
}/runs/tasks/:taskId/statusruns:writeDefine uma tarefa como PENDING ou COMPLETED diretamente, sem coletar campos de formulário. Para tarefas com campos obrigatórios, prefira o fluxo de Execução abaixo para que os valores dos campos sejam capturados — completar uma tarefa assim não envia nenhum valor de campo.
Parâmetros
statusstringobrigatórioNovo status da tarefa.
PENDINGCOMPLETEDcurl -X PATCH \
https://api.cadenio.com/runs/tasks/22074d71-5767-48cf-ad21-88be0b52911c/status \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "status": "COMPLETED" }'HTTP/1.1 204 No Content/runs/tasks/:taskId/due-dateruns:writeDefine ou remove o prazo SLA da tarefa.
Parâmetros
dueAtdatetime | nullobrigatórioTimestamp ISO 8601 do novo prazo, ou null para removê-lo.
dueAtHasTimebooleanopcionalSe dueAt carrega um horário específico (true) ou é um prazo só-data, vencendo ao fim do dia (false).
curl -X PATCH \
https://api.cadenio.com/runs/tasks/22074d71-5767-48cf-ad21-88be0b52911c/due-date \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "dueAt": "2026-08-01T17:00:00Z", "dueAtHasTime": true }'HTTP/1.1 204 No Content/runs/tasks/:taskId/assigneeruns:writeReatribui uma tarefa a outro usuário ou grupo. Envie ambos os campos como null para desatribuir completamente.
Parâmetros
assigneeIdstring | nullopcionalID do usuário a ser atribuído à tarefa. Envie null para desatribuir.
assigneeGroupIdstring | nullopcionalID do grupo a ser atribuído à tarefa, em vez de um usuário individual.
curl -X PATCH \
https://api.cadenio.com/runs/tasks/22074d71-5767-48cf-ad21-88be0b52911c/assignee \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "assigneeId": "2bc947d9-114d-4c7f-9d18-6af9cfa2393c" }'HTTP/1.1 204 No Content| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /runs/counts | runs:read | Contagem de runs por status |
| GET | /runs/analytics | runs:read | Resumo de analytics de runs |
| GET | /runs/analytics/advanced | runs:read | Analytics avançado de runs |
| POST | /runs/analytics/filtered | runs:read | Analytics com corpo de filtro customizado |
| POST | /runs/analytics/advanced/filtered | runs:read | Analytics avançado com corpo de filtro customizado |
| GET | /runs/export/csv | runs:read | Exportar a lista de runs como CSV |
| GET | /runs/analytics/export/pdf | runs:read | Exportar analytics como PDF |
| GET | /runs/analytics/export/csv | runs:read | Exportar analytics como CSV |
| POST | /runs/archive | runs:write | Arquivar runs em lote por ID |
| GET | /runs/:id | runs:read | Obter um run |
| GET | /runs/:id/summaries | runs:read | Obter resumos de tarefas/campos de um run |
| GET | /runs/:id/export/csv | runs:read | Exportar um único run como CSV |
| GET | /runs/:id/export/pdf | runs:read | Exportar um único run como PDF |
| GET | /runs/:id/dependencies | runs:read | Status de dependência de tarefas de um run |
| GET | /runs/:id/activity | runs:read | Log de atividade de um run |
| GET | /runs/:id/variables | runs:read | Valores das variáveis de fluxo de um run |
| PATCH | /runs/:id | runs:write | Renomear um run |
| POST | /runs/:id/complete | runs:write | Concluir um run (rejeita se já estiver em estado terminal) |
| POST | /runs/:id/cancel | runs:write | Cancelar um run |
| POST | /runs/:id/reopen | runs:write | Reabrir um run concluído/cancelado |
| POST | /runs/:id/migrate-to-latest | runs:write | Migrar um run para a versão mais recente do template |
| POST | /runs/tasks/:taskId/approval | runs:write | Aprovar uma tarefa pendente de aprovação |
| POST | /runs/tasks/:taskId/approval/reject | runs:write | Rejeitar a aprovação de uma tarefa |
| GET | /runs/tasks/:taskId/approval-trail | runs:read | Histórico de aprovação de uma tarefa |
| POST | /runs/tasks/:taskId/force-unblock | runs:write | Forçar o desbloqueio de uma tarefa presa em uma dependência |
Execução
Este é o primitivo para de fato preencher o formulário de uma tarefa e concluí-la — o que uma IA agêntica ou uma integração customizada deve chamar para realizar trabalho real em um run, em vez do PATCH de status simples acima. O fluxo é sempre: abrir uma entrada de execução para a tarefa, enviar um ou mais valores de campo para ela, e então concluí-la.
/execution/entriesruns:writeInicia uma entrada de execução preenchível para uma tarefa. A maioria das tarefas permite apenas uma entrada aberta por vez; tarefas repetíveis podem ter várias. Obtenha runTaskId na lista de tarefas de um run (GET /runs/:id).
Parâmetros
runTaskIdstringobrigatórioID da tarefa do run para a qual abrir uma entrada de execução.
curl -X POST https://api.cadenio.com/execution/entries \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "runTaskId": "22074d71-5767-48cf-ad21-88be0b52911c" }'HTTP/1.1 201 Created
{
"id": "4abc71a1-4c8d-4ac0-ae3d-4333f33ad886",
"runTaskId": "22074d71-5767-48cf-ad21-88be0b52911c",
"createdByUserId": "2bc947d9-114d-4c7f-9d18-6af9cfa2393c",
"createdAt": "2026-07-24T17:28:10Z",
"fieldValues": []
}/execution/field-valuesruns:writeGrava o valor de um campo em uma entrada de execução aberta. Chame uma vez por campo, ou use a variante em lote abaixo para múltiplos campos de uma vez. Os IDs de campo são estáveis por versão publicada — obtenha-os em GET /templates/:id/published-fields.
Parâmetros
executionEntryIdstringobrigatórioID da entrada de execução retornada por POST /execution/entries.
runTaskFieldIdstringobrigatórioID do campo sendo preenchido. Obtenha IDs estáveis de campo em GET /templates/:id/published-fields.
valueanyobrigatórioO valor a ser enviado. O formato depende do tipo do campo (string para texto, data ISO para DATE, chave da opção para DROPDOWN, etc.).
curl -X POST https://api.cadenio.com/execution/field-values \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"executionEntryId": "4abc71a1-4c8d-4ac0-ae3d-4333f33ad886",
"runTaskFieldId": "607ebeee-afd1-4834-8c9d-e5019e1373ad",
"value": "42"
}'HTTP/1.1 201 Created
{ "autoFilledFields": [] }
// autoFilledFields lists any other field the platform derived from this
// write (e.g. a lookup field populated from a linked data source row)./execution/entries/completeruns:writeValida que todos os campos obrigatórios estão preenchidos e marca a tarefa como COMPLETED. Rejeita com 400 se algum campo obrigatório ainda estiver faltando ou uma aprovação obrigatória estiver pendente.
Parâmetros
executionEntryIdstringobrigatórioID da entrada de execução a ser concluída. Marca a tarefa subjacente como COMPLETED.
idempotencyKeystringopcionalUUID gerado pelo cliente. Repetir a mesma key retorna o resultado original em vez de concluir duas vezes.
curl -X POST https://api.cadenio.com/execution/entries/complete \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "executionEntryId": "4abc71a1-4c8d-4ac0-ae3d-4333f33ad886" }'HTTP/1.1 204 No Content
// Completing the last required, visible task in a run auto-completes the
// run itself — no separate call to POST /runs/:id/complete is needed.| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| POST | /execution/field-values/batch | runs:write | Enviar múltiplos valores de campo em uma chamada |
| POST | /execution/entries/reopen | runs:write | Reabrir uma entrada de execução concluída |
| GET | /execution/tasks/:runTaskId | runs:read | Listar entradas de execução de uma tarefa (tarefas repetíveis podem ter várias) |
| GET | /execution/field-values/:fieldValueId/history | runs:read | Obter o histórico de edições de um valor de campo enviado |
Templates
Templates são os blueprints de processo: fases, tarefas, campos de formulário, regras de lógica condicional, dependências e variáveis de fluxo. Editar um template sempre altera apenas o rascunho não publicado — publicar cria um snapshot imutável do rascunho como uma nova versão, que é de onde novos runs são iniciados.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /templates | templates:read | Listar templates |
| POST | /templates | templates:write | Criar um rascunho de template |
| GET | /templates/:id | templates:read | Obter um template |
| PUT | /templates/:id | templates:write | Atualizar as configurações do próprio template |
| DELETE | /templates/:id | templates:write | Excluir um template permanentemente. Bloqueado enquanto existirem runs RUNNING/OVERDUE. |
| GET | /templates/:id/runs | templates:read | Listar runs iniciados a partir deste template |
| POST | /templates/:id/runs | runs:execute | Iniciar um run a partir deste template (alias de POST /runs) |
| POST | /templates/:id/duplicate | templates:write | Duplicar um template |
| POST | /templates/:id/archive | templates:write | Arquivar um template |
| POST | /templates/:id/unarchive | templates:write | Desarquivar um template |
| POST | /templates/:id/background-image | templates:write | Upload de imagem de fundo (multipart/form-data) |
| GET | /templates/:id/published-fields | templates:read | Listar campos da versão publicada — os IDs estáveis para usar com /execution/field-values |
| GET | /templates/:id/rules-sync-status | templates:read | Verificar progresso da sincronização de regras em segundo plano após publicar com runs ativos |
| POST | /templates/:id/publish | templates:publish | Publicar o rascunho como uma nova versão |
| POST | /templates/:id/discard-draft | templates:write | Descartar alterações não publicadas do rascunho |
| GET | /templates/:id/versions | templates:read | Listar versões publicadas |
| GET | /templates/:id/versions/:versionId | templates:read | Obter o snapshot de uma versão específica |
| GET | /templates/:id/versions/draft-diff | templates:read | Comparar o rascunho atual com a última versão publicada |
| GET | /templates/:id/versions/:versionId/diff | templates:read | Comparar duas versões publicadas |
| POST | /templates/:id/versions/:versionId/restore | templates:write | Restaurar uma versão anterior para o rascunho |
| GET | /templates/:id/tasks | templates:read | Listar tarefas do rascunho |
| POST | /templates/:id/tasks | templates:write | Adicionar uma tarefa ao rascunho |
| PUT | /templates/:id/tasks/:taskId | templates:write | Atualizar uma tarefa |
| DELETE | /templates/:id/tasks/:taskId | templates:write | Excluir uma tarefa |
| POST | /templates/:id/tasks/bulk-delete | templates:write | Excluir múltiplas tarefas |
| POST | /templates/:id/tasks/bulk-duplicate | templates:write | Duplicar múltiplas tarefas |
| PATCH | /templates/:id/tasks/bulk-update | templates:write | Atualizar múltiplas tarefas em lote |
| POST | /templates/:id/tasks/:taskId/fields | templates:write | Adicionar um campo a uma tarefa |
| PUT | /templates/:id/tasks/:taskId/fields/:fieldId | templates:write | Atualizar um campo |
| PATCH | /templates/:id/tasks/:taskId/fields/:fieldId/move | templates:write | Mover um campo para outra tarefa |
| DELETE | /templates/:id/tasks/:taskId/fields/:fieldId | templates:write | Excluir um campo |
| POST | /templates/:id/tasks/:taskId/rules | templates:write | Adicionar uma regra de lógica condicional (mostrar/ocultar/atribuir/definir variável) |
| PUT | /templates/:id/tasks/:taskId/rules/:ruleId | templates:write | Atualizar uma regra de lógica |
| PATCH | /templates/:id/tasks/:taskId/rules/reorder | templates:write | Reordenar regras de lógica |
| DELETE | /templates/:id/tasks/:taskId/rules/:ruleId | templates:write | Excluir uma regra de lógica |
| GET | /templates/:id/tasks/:taskId/dependencies | templates:read | Listar as dependências de uma tarefa |
| PUT | /templates/:id/tasks/:taskId/dependencies | templates:write | Definir as dependências de uma tarefa |
| GET | /templates/:id/tasks/:taskId/dependency-tree | templates:read | Obter a árvore completa de dependências de uma tarefa |
| GET | /templates/:id/phases | templates:read | Listar fases |
| POST | /templates/:id/phases | templates:write | Criar uma fase |
| PUT | /templates/:id/phases/:phaseId | templates:write | Atualizar uma fase |
| DELETE | /templates/:id/phases/:phaseId | templates:write | Excluir uma fase |
| GET | /templates/:id/variables | templates:read | Listar variáveis de fluxo |
| POST | /templates/:id/variables | templates:write | Criar uma variável de fluxo |
| PUT | /templates/:id/variables/:variableId | templates:write | Atualizar uma variável de fluxo |
| DELETE | /templates/:id/variables/:variableId | templates:write | Excluir uma variável de fluxo |
Webhooks
Webhooks entregam notificações de eventos em tempo real para o seu sistema. Toda entrega é assinada com HMAC-SHA256 usando um único segredo de assinatura, no nível da organização (não retornado por este endpoint — ver Configurações → Integrações → Webhooks), para que você possa verificar que os payloads vieram mesmo do Cadenio.
/webhookswebhooks:manageRegistra um novo endpoint de webhook. url precisa ser HTTPS — HTTP simples e endereços privados/loopback/link-local são rejeitados de imediato, e a URL é revalidada a cada tentativa de entrega para fechar janelas de DNS-rebind.
Parâmetros
namestringobrigatórioNome de exibição para este webhook.
urlstringobrigatórioEndpoint HTTPS para entrega dos payloads. HTTP simples e endereços privados/loopback/link-local são rejeitados.
enabledEventsstring[]obrigatórioEventos aos quais este webhook está inscrito.
run.startedrun.completedrun.cancelledrun.reopenedtask.completedtask.overdueapproval.requestedapproval.grantedapproval.rejectedenabledbooleanopcionalSe o webhook está ativo. Padrão: true.
templateModestringopcionalRestringe entregas a todos os flows ou a um subconjunto selecionado de templates.
ALL_FLOWSSELECTED_TEMPLATEStemplateIdsstring[]opcionalIDs de templates para restringir, quando templateMode for SELECTED_TEMPLATES.
descriptionstringopcionalNota opcional em texto livre, para referência própria.
curl -X POST https://api.cadenio.com/webhooks \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Sync to ERP",
"url": "https://your-system.com/hooks/cadenio",
"enabledEvents": ["run.completed", "task.overdue"]
}'POST https://your-system.com/hooks/cadenio
content-type: application/json
x-flow-timestamp: 1785005000000
x-flow-signature: 6f9b1c... (hex HMAC-SHA256)
{
"event": "run.completed",
"deliveryId": "9b1e2c3d-...",
"timestamp": "2026-07-24T16:05:00Z",
"orgId": "0c861a32-d927-47d7-a8f5-861a4adf28ed",
"data": {
"runId": "3ed4dcf7-a102-4327-81ab-723b34d8a6b5",
"templateId": "6795dfb5-15de-4f41-8a96-b83830526ca6"
}
}const crypto = require("crypto");
function isValid(req, secret) {
const timestamp = req.headers["x-flow-timestamp"];
const signature = req.headers["x-flow-signature"];
const body = JSON.stringify(req.body); // raw body, exactly as received
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${body}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}
// The signing secret is a single org-wide value (WEBHOOK_SIGNING_SECRET),
// shared across all of your org's webhooks — not returned per-webhook by
// this endpoint. Find it under Settings → Integrations → Webhooks.| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /webhooks | webhooks:manage | Listar webhooks |
| GET | /webhooks/deliveries | webhooks:manage | Listar entregas recentes de todos os webhooks |
| GET | /webhooks/:id | webhooks:manage | Obter um webhook |
| PATCH | /webhooks/:id | webhooks:manage | Atualizar um webhook (a URL é revalidada) |
| DELETE | /webhooks/:id | webhooks:manage | Excluir um webhook |
| POST | /webhooks/:id/test | webhooks:manage | Enviar uma entrega de teste |
| GET | /webhooks/:id/deliveries | webhooks:manage | Listar entregas de um webhook |
Arquivos
Upload e download de arquivos anexados a tarefas de runs. Uploads diretos precisam estar vinculados à entrada de execução de um campo específico do tipo FILE_UPLOAD/SIGNATURE; uploads grandes podem, em vez disso, usar um fluxo de upload-url assinado + confirm.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| POST | /files/direct-upload | files:write | Upload de arquivo (multipart/form-data) e anexação à entrada de execução de uma tarefa em uma chamada |
| POST | /files/upload-url | files:write | Obter uma URL de upload assinada para arquivos grandes (passo 1 de 2) |
| POST | /files/confirm | files:write | Confirmar que um upload assinado terminou (passo 2 de 2) |
| GET | /files/:id/download | files:read | Obter uma URL de download assinada para um arquivo |
| GET | /files/:id/thumbnail | files:read | Obter uma URL de thumbnail para um anexo de imagem/vídeo |
| GET | /files/:id/scan-status | files:read | Verificar o status do scan antivírus de um upload |
| POST | /files/bulk-download-zip | files:read | Baixar múltiplos arquivos como um único ZIP |
| GET | /files | files:read | Listar arquivos anexados a um campo/entrada de execução |
| DELETE | /files/:id | files:write | Excluir um arquivo |
| POST | /files/template-asset | files:write | Upload de um asset de imagem no nível do template (ex.: a imagem de um campo IMAGE) |
| GET | /files/template-asset/download-url | files:read | Obter uma URL de download para um asset de template |
Fontes de dados
Tabelas estruturadas usadas para preencher campos de formulário (campos DATA_SOURCE / lookup) e orientar lógica condicional. Linhas são compostas por células tipadas; operações de linha em lote são atômicas — uma linha inválida rejeita o lote inteiro.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /data-sources | data-sources:read | Listar fontes de dados |
| POST | /data-sources | data-sources:write | Criar uma fonte de dados (nome + nomes de coluna) |
| GET | /data-sources/:id | data-sources:read | Obter uma fonte de dados e suas colunas |
| PATCH | /data-sources/:id | data-sources:write | Atualizar nome/descrição de uma fonte de dados |
| DELETE | /data-sources/:id | data-sources:write | Excluir uma fonte de dados |
| POST | /data-sources/:id/columns | data-sources:write | Adicionar uma coluna. Tipos: TEXT, DATE, DATETIME, NUMBER, BOOLEAN, STATUS, RELATION |
| PATCH | /data-sources/:id/columns/:columnId | data-sources:write | Atualizar uma coluna (nome, tipo ou config) |
| DELETE | /data-sources/:id/columns/:columnId | data-sources:write | Excluir uma coluna |
| PATCH | /data-sources/:id/columns/reorder | data-sources:write | Reordenar colunas |
| GET | /data-sources/:id/rows | data-sources:read | Listar linhas (com busca, filtro de ativos e por coluna) |
| GET | /data-sources/:id/rows/:rowId | data-sources:read | Obter uma única linha |
| POST | /data-sources/:id/rows | data-sources:write | Criar uma linha |
| POST | /data-sources/:id/rows/bulk | data-sources:write | Criar linhas em lote (até o limite de linhas da org) |
| PATCH | /data-sources/:id/rows/:rowId | data-sources:write | Atualizar os valores de célula de uma linha |
| POST | /data-sources/:id/rows/bulk-update | data-sources:write | Aplicar a mesma atualização de célula a várias linhas de forma atômica |
| DELETE | /data-sources/:id/rows/:rowId | data-sources:write | Excluir uma linha |
| POST | /data-sources/:id/rows/bulk-delete | data-sources:write | Excluir várias linhas de forma atômica |
| GET | /data-sources/:id/rows/:rowId/impact | data-sources:read | Ver onde uma linha é referenciada (runs, outras linhas) |
| GET | /data-sources/:id/rows/:rowId/timeline | data-sources:read | Obter o histórico de alterações de uma linha |
| GET | /data-sources/:id/rows/:rowId/relations | data-sources:read | Listar vínculos RELATION de/para uma linha |
| POST | /data-sources/:id/relations | data-sources:write | Vincular duas linhas via uma coluna RELATION |
| DELETE | /data-sources/:id/relations | data-sources:write | Remover um vínculo entre duas linhas |
| GET | /data-sources/:id/lookup | data-sources:read | Buscar linhas para um campo de template do tipo DATA_SOURCE |
Gatilhos de fontes de dados
Gatilhos de automação que disparam quando uma linha de fonte de dados corresponde a uma condição (mais comumente uma coluna DATE atingindo hoje) — a base de automações agendadas/recorrentes construídas sobre uma fonte de dados.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /data-source-triggers | data-sources:read | Listar gatilhos de automação |
| POST | /data-source-triggers | data-sources:write | Criar um gatilho (ex.: disparar quando uma coluna DATE é atingida) |
| GET | /data-source-triggers/:id | data-sources:read | Obter um gatilho |
| PATCH | /data-source-triggers/:id | data-sources:write | Atualizar um gatilho |
| DELETE | /data-source-triggers/:id | data-sources:write | Excluir um gatilho |
| GET | /data-source-triggers/:id/firings | data-sources:read | Listar disparos anteriores de um gatilho |
| POST | /data-source-triggers/:id/dry-run | data-sources:read | Pré-visualizar quais linhas disparariam agora, sem despachar |
Visualizações salvas
Conjuntos de filtros de run nomeados e reutilizáveis — os mesmos filtros disponíveis na UI de Runs, salvos no servidor para que um dashboard ou relatório agendado possa referenciá-los por ID em vez de recodificar a lógica de filtro.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /saved-views | runs:read | Listar visualizações salvas |
| POST | /saved-views | runs:read | Criar uma visualização salva (um conjunto de filtros de run salvo) |
| GET | /saved-views/:id | runs:read | Obter uma visualização salva |
| PATCH | /saved-views/:id | runs:read | Atualizar uma visualização salva |
| DELETE | /saved-views/:id | runs:read | Excluir uma visualização salva |
| POST | /saved-views/preview | runs:read | Pré-visualizar contagens de runs para um conjunto de filtros sem salvá-lo |
| GET | /saved-views/:id/runs | runs:read | Listar os runs que correspondem a uma visualização salva |
Compartilhamento de templates entre organizações via um token público: publique um link de compartilhamento e deixe outra org pré-visualizar e importar seu template como uma cópia própria e independente.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| POST | /templates/:templateId/shares | templates:write | Criar um link/token compartilhável para um template |
| GET | /templates/:templateId/shares | templates:read | Listar compartilhamentos de um template |
| PATCH | /shared-templates/:shareId | templates:write | Atualizar um compartilhamento |
| POST | /shared-templates/:shareId/refresh | templates:write | Rotacionar o token de um compartilhamento |
| DELETE | /shared-templates/:shareId | templates:write | Revogar um compartilhamento |
| GET | /shared-templates/:token/preview | templates:read | Pré-visualizar um template compartilhado pelo token público |
| POST | /shared-templates/:token/import | templates:write | Importar um template compartilhado para sua org como um novo template |
Portal
Construtor de portal voltado ao cliente final: páginas compostas por blocos de conteúdo (incluindo widgets de relatório ao vivo), regras de acesso por usuário/grupo, e uma visualização pública publicada servida em um slug.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /portals | templates:read | Listar portais |
| POST | /portals | templates:write | Criar um portal |
| GET | /portals/me | templates:read | Obter os portais que o chamador pode acessar |
| GET | /portals/:portalId | templates:read | Obter um portal |
| PATCH | /portals/:portalId | templates:write | Atualizar um portal |
| DELETE | /portals/:portalId | templates:write | Excluir um portal |
| POST | /portals/:portalId/publish | templates:write | Publicar um portal |
| POST | /portals/:portalId/unpublish | templates:write | Despublicar um portal |
| GET | /portals/by-slug/:slug/view | templates:read | Obter o conteúdo de um portal publicado pelo slug público |
| GET | /portals/:portalId/pages | templates:read | Listar as páginas de um portal |
| POST | /portals/:portalId/pages | templates:write | Criar uma página |
| GET | /portals/:portalId/pages/:pageId | templates:read | Obter uma página |
| PATCH | /portals/:portalId/pages/:pageId | templates:write | Atualizar uma página |
| DELETE | /portals/:portalId/pages/:pageId | templates:write | Excluir uma página |
| PUT | /portals/:portalId/pages/:pageId/blocks | templates:write | Substituir os blocos de conteúdo de uma página |
| POST | /portals/:portalId/pages/:pageId/publish-changes | templates:write | Publicar as alterações pendentes de uma única página |
| GET | /portals/:portalId/access-rules | templates:read | Listar regras de acesso |
| POST | /portals/:portalId/access-rules | templates:write | Conceder acesso ao portal a um usuário/grupo |
| DELETE | /portals/:portalId/access-rules/:ruleId | templates:write | Revogar uma regra de acesso |
| GET | /portals/report-presets | templates:read | Listar presets de relatório salvos |
| POST | /portals/report-presets | templates:write | Salvar um preset de relatório |
| DELETE | /portals/report-presets/:presetId | templates:write | Excluir um preset de relatório |
Usuários
Leitura da lista de membros da organização. Use os IDs de membros para atribuir runs e tarefas via API de Runs.
| Método | Endpoint | Escopo | Descrição |
|---|---|---|---|
| GET | /users | users:read | Listar membros da organização |
Gerenciamento de API keys
API keys são criadas e revogadas em Configurações → Integrações → API Keys. Cada key tem nome, conjunto de escopos, data de expiração opcional e modo de recurso (todos os templates/pastas, ou um subconjunto selecionado). Apenas proprietários e admins privilegiados da organização podem gerenciar as keys. O valor completo da key é exibido apenas uma vez, na criação.
Endpoints
/api-keysListar API keys ativas/api-keysCriar uma nova API key/api-keys/:idRevogar uma API keyParâmetros de criação
namestringobrigatórioNome de exibição para esta key.
scopesstring[]obrigatórioEscopos de permissão concedidos a esta key. Ver a referência de Escopos.
resourceModestringopcionalQuais templates/pastas esta key pode acessar. Padrão: ALL.
ALLSELECTED_TEMPLATESSELECTED_FOLDERSscopedTemplateIdsstring[]opcionalIDs de templates acessíveis quando resourceMode for SELECTED_TEMPLATES.
scopedFolderIdsstring[]opcionalIDs de pastas acessíveis a esta key (e todo template dentro delas) quando resourceMode for SELECTED_FOLDERS.
expiresAtdatetimeopcionalTimestamp ISO 8601 após o qual a key é automaticamente rejeitada. Padrão: nunca expira.
curl -X POST https://api.cadenio.com/api-keys \
-H "Cookie: flow_session=...; flow_csrf=..." \
-H "x-cadenio-csrf: ..." \
-H "Content-Type: application/json" \
-d '{
"name": "ERP Sync Integration",
"scopes": ["runs:read", "runs:execute"],
"resourceMode": "ALL"
}'HTTP/1.1 201 Created
{
"id": "1105c74c-bc73-4d7c-b9b0-c88ca1824a5f",
"name": "ERP Sync Integration",
"keyPrefix": "sk_live_...93f7",
"scopes": ["runs:read", "runs:execute"],
"resourceMode": "ALL",
"scopedTemplateIds": [],
"scopedFolderIds": [],
"status": "ACTIVE",
"expiresAt": null,
"createdAt": "2026-07-24T16:41:11Z",
"plainKey": "sk_live_beda794d400a159f4214c69965412267bacfb9eafc8893f7"
}
// plainKey is shown only in this response, store it securely.API keys, permissões com escopo, webhooks e acesso programático a runs, templates e fontes de dados estão disponíveis nos planos Business e Enterprise. Fale conosco para habilitar na sua organização.