API Criar Fluxo
Cria um fluxo inteiro numa chamada só, com os blocos e as ligações no próprio corpo.
API: Todas
Endpoint
https://api.talkz.ai/api/flowbuilder
Método
POST
Autenticação
Bearer {seutokenaqui}
Payload
{
"name": "Boas-vindas",
"categoryId": 3,
"active": true,
"userId": 4,
"nodes": [
{
"id": "1",
"type": "start",
"data": {
"label": "Início"
},
"position": {
"x": 0,
"y": 0
}
},
{
"id": "2",
"type": "message",
"data": {
"label": "Olá! Em que posso ajudar?"
},
"position": {
"x": 0,
"y": 150
}
}
],
"connections": [
{
"id": "e1-2",
"source": "1",
"target": "2"
}
]
}
“name”: nome do fluxo, único na empresa. Obrigatório.
“nodes”: os blocos, do mesmo jeito que a tela grava — cada um com
id único, type, data e position.
“connections”: as ligações, cada uma com
source e target apontando para ids de blocos que existem.
“flow”: o arquivo do Exportar da tela, inteiro, no lugar do
nodes e do connections.
É um jeito OU o outro. Mandar o
flow junto do nodes/connections é recusado.
É por aqui que se copia um fluxo de uma empresa para outra: exporte na origem e mande o arquivo como
flow.
“categoryId”: categoria do fluxo. Precisa ser uma categoria de fluxo da mesma empresa.
“active”:
true faz o fluxo nascer ativo.
“userId”: o dono do fluxo, que precisa ser usuário da empresa. Sem ele, o fluxo nasce do primeiro administrador.
O desenho é conferido antes de gravar, e a recusa diz onde está o problema:
bloco sem
id único ou sem type;
ligação que sai ou chega num bloco que não existe;
nome de fluxo repetido na empresa;
fluxo maior que o teto — o mesmo do salvar pela tela.
Campo fora desta lista não é gravado: ele volta na resposta, em
camposIgnorados.
Utilize o código em requisições HTTPS com ferramentas como cURL ou bibliotecas de integração.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.talkz.ai/api/flowbuilder',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"name": "Boas-vindas",
"categoryId": 3,
"active": true,
"userId": 4,
"nodes": [
{
"id": "1",
"type": "start",
"data": {
"label": "Início"
},
"position": {
"x": 0,
"y": 0
}
},
{
"id": "2",
"type": "message",
"data": {
"label": "Olá! Em que posso ajudar?"
},
"position": {
"x": 0,
"y": 150
}
}
],
"connections": [
{
"id": "e1-2",
"source": "1",
"target": "2"
}
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;