Fluxos

URL base da API
https://crm.vdgestaobranding.com/api/v1

A documentação fica em developers.vdgestaobranding.com, mas todas as chamadas vão para crm.vdgestaobranding.com/api/v1.

GET/flows
flows:read

Listar fluxos

  • status — rascunho | ativo | inativo.
  • limit — Itens por página (1–100, padrão 25).
  • cursor — Valor de next_cursor da página anterior.
curl -X GET "https://crm.vdgestaobranding.com/api/v1/flows" \
  -H "Authorization: Bearer $VDCRM_API_KEY"
Resposta 200
{
  "data": [
    {
      "id": "f1…",
      "name": "Boas-vindas",
      "status": "ativo",
      "trigger_kind": "keyword",
      "priority": 0,
      "runs_count": 42,
      "published_version_id": "v1…",
      "shared": false,
      "created_at": "2026-11-03T15:00:00Z"
    }
  ],
  "next_cursor": null
}
POST/flows
flows:write
Idempotency-Key

Criar fluxo

draft é o JSON do fluxo (nodes/edges), o mesmo do editor do CRM.

curl -X POST "https://crm.vdgestaobranding.com/api/v1/flows" \
  -H "Authorization: Bearer $VDCRM_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Boas-vindas",
  "draft": {
    "nodes": [],
    "edges": []
  }
}'
Resposta 201
{
  "id": "f1…",
  "name": "Boas-vindas",
  "status": "ativo",
  "trigger_kind": "keyword",
  "priority": 0,
  "runs_count": 42,
  "published_version_id": "v1…",
  "shared": false,
  "created_at": "2026-11-03T15:00:00Z"
}
GET/flows/{id}
flows:read

Obter fluxo (JSON)

Inclui o rascunho (draft) e a versão publicada (published.graph).

curl -X GET "https://crm.vdgestaobranding.com/api/v1/flows/{id}" \
  -H "Authorization: Bearer $VDCRM_API_KEY"
Resposta 200
{
  "id": "f1…",
  "name": "Boas-vindas",
  "status": "ativo",
  "trigger_kind": "keyword",
  "priority": 0,
  "runs_count": 42,
  "published_version_id": "v1…",
  "shared": false,
  "created_at": "2026-11-03T15:00:00Z",
  "draft": {
    "nodes": [],
    "edges": []
  },
  "published": {
    "id": "v1…",
    "version": 3,
    "graph": {
      "nodes": [],
      "edges": []
    }
  }
}
PATCH/flows/{id}
flows:write

Atualizar fluxo

Altera o rascunho; publique para que passe a rodar.

curl -X PATCH "https://crm.vdgestaobranding.com/api/v1/flows/{id}" \
  -H "Authorization: Bearer $VDCRM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Boas-vindas v2"
}'
POST/flows/{id}/publish
flows:write

Publicar e ativar

Valida o fluxo (422 flow_invalid com details.issues) e respeita os limites do plano.

curl -X POST "https://crm.vdgestaobranding.com/api/v1/flows/{id}/publish" \
  -H "Authorization: Bearer $VDCRM_API_KEY"
Resposta 200
{
  "id": "f1…",
  "name": "Boas-vindas",
  "status": "ativo",
  "trigger_kind": "keyword",
  "priority": 0,
  "runs_count": 42,
  "published_version_id": "v1…",
  "shared": false,
  "created_at": "2026-11-03T15:00:00Z",
  "version": 4
}
POST/flows/{id}/unpublish
flows:write

Despublicar

Desativa o fluxo e encerra as execuções em andamento.

curl -X POST "https://crm.vdgestaobranding.com/api/v1/flows/{id}/unpublish" \
  -H "Authorization: Bearer $VDCRM_API_KEY"
DELETE/flows/{id}
flows:write

Excluir fluxo

curl -X DELETE "https://crm.vdgestaobranding.com/api/v1/flows/{id}" \
  -H "Authorization: Bearer $VDCRM_API_KEY"
POST/flows/{id}/start
flows:write
Idempotency-Key

Iniciar fluxo para um contato

Com a janela de 24h fechada, o primeiro envio do fluxo precisa ser um modelo aprovado. Contatos com opt-out são recusados. Chaves de teste não enviam nada.

curl -X POST "https://crm.vdgestaobranding.com/api/v1/flows/{id}/start" \
  -H "Authorization: Bearer $VDCRM_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "contact_id": "c1d2…",
  "variables": {
    "pedido": "1234"
  }
}'
Resposta 202
{
  "started": true,
  "run": {
    "id": "r1…",
    "state": "aguardando"
  }
}
GET/flows/{id}/runs
flows:read

Listar execuções

  • limit — 1–100.
  • before — ISO 8601; use next_before para paginar.
curl -X GET "https://crm.vdgestaobranding.com/api/v1/flows/{id}/runs" \
  -H "Authorization: Bearer $VDCRM_API_KEY"
Resposta 200
{
  "data": [
    {
      "id": "r1…",
      "flow_id": "f1…",
      "contact_id": "c1d2…",
      "state": "concluido",
      "outcome": "concluido",
      "current_node": "end",
      "started_at": "2026-11-03T15:00:00Z",
      "finished_at": "2026-11-03T15:03:00Z"
    }
  ],
  "next_before": null
}
GET/flow-runs/{id}
flows:read

Execução e caminho percorrido

curl -X GET "https://crm.vdgestaobranding.com/api/v1/flow-runs/{id}" \
  -H "Authorization: Bearer $VDCRM_API_KEY"
Resposta 200
{
  "id": "r1…",
  "flow_id": "f1…",
  "contact_id": "c1d2…",
  "state": "concluido",
  "outcome": "concluido",
  "current_node": "end",
  "started_at": "2026-11-03T15:00:00Z",
  "finished_at": "2026-11-03T15:03:00Z",
  "variables": {
    "pedido": "1234"
  },
  "path": [
    {
      "node_id": "n1",
      "node_type": "message",
      "action": "sent",
      "created_at": "2026-11-03T15:00:01Z"
    }
  ]
}