curl --request POST \
--url https://api.olie.ai/api/management/clone-funnel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"project_funnel_id": 97,
"name": "Comercial (Clone)",
"automations": false,
"step_restrictions": true,
"step_assistants": true,
"step_checklists": true,
"funnel_step_blockings": true,
"funnel_tags": true,
"funnel_statuses": true,
"funnel_attachments": false,
"funnel_config_templates": true,
"permissions": true,
"template_projects": false
}
'import requests
url = "https://api.olie.ai/api/management/clone-funnel"
payload = {
"project_funnel_id": 97,
"name": "Comercial (Clone)",
"automations": False,
"step_restrictions": True,
"step_assistants": True,
"step_checklists": True,
"funnel_step_blockings": True,
"funnel_tags": True,
"funnel_statuses": True,
"funnel_attachments": False,
"funnel_config_templates": True,
"permissions": True,
"template_projects": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
project_funnel_id: 97,
name: 'Comercial (Clone)',
automations: false,
step_restrictions: true,
step_assistants: true,
step_checklists: true,
funnel_step_blockings: true,
funnel_tags: true,
funnel_statuses: true,
funnel_attachments: false,
funnel_config_templates: true,
permissions: true,
template_projects: false
})
};
fetch('https://api.olie.ai/api/management/clone-funnel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.olie.ai/api/management/clone-funnel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'project_funnel_id' => 97,
'name' => 'Comercial (Clone)',
'automations' => false,
'step_restrictions' => true,
'step_assistants' => true,
'step_checklists' => true,
'funnel_step_blockings' => true,
'funnel_tags' => true,
'funnel_statuses' => true,
'funnel_attachments' => false,
'funnel_config_templates' => true,
'permissions' => true,
'template_projects' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.olie.ai/api/management/clone-funnel"
payload := strings.NewReader("{\n \"project_funnel_id\": 97,\n \"name\": \"Comercial (Clone)\",\n \"automations\": false,\n \"step_restrictions\": true,\n \"step_assistants\": true,\n \"step_checklists\": true,\n \"funnel_step_blockings\": true,\n \"funnel_tags\": true,\n \"funnel_statuses\": true,\n \"funnel_attachments\": false,\n \"funnel_config_templates\": true,\n \"permissions\": true,\n \"template_projects\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.olie.ai/api/management/clone-funnel")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"project_funnel_id\": 97,\n \"name\": \"Comercial (Clone)\",\n \"automations\": false,\n \"step_restrictions\": true,\n \"step_assistants\": true,\n \"step_checklists\": true,\n \"funnel_step_blockings\": true,\n \"funnel_tags\": true,\n \"funnel_statuses\": true,\n \"funnel_attachments\": false,\n \"funnel_config_templates\": true,\n \"permissions\": true,\n \"template_projects\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olie.ai/api/management/clone-funnel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"project_funnel_id\": 97,\n \"name\": \"Comercial (Clone)\",\n \"automations\": false,\n \"step_restrictions\": true,\n \"step_assistants\": true,\n \"step_checklists\": true,\n \"funnel_step_blockings\": true,\n \"funnel_tags\": true,\n \"funnel_statuses\": true,\n \"funnel_attachments\": false,\n \"funnel_config_templates\": true,\n \"permissions\": true,\n \"template_projects\": false\n}"
response = http.request(request)
puts response.read_body{
"response": true,
"project_funnel": {
"id": 98,
"name": "Comercial (Clone)",
"prefix": "COMC",
"order": 11,
"condition": "active",
"allow_multi_step": false,
"project_term": null,
"show_cost_info": true,
"allow_execution": true,
"business_area_id": 83,
"form_id": null,
"funnel_config_template_id": null,
"frame_id": "019b329a-4346-7064-bba3-e7c19057cda4",
"created_at": "2026-01-09T20:51:29.000000Z",
"updated_at": "2026-08-19T11:07:44.000000Z",
"deleted_at": null
}
}{
"response": false,
"message": "cant_clone_archived_project_funnel"
}Clonar um funil
Cria uma cópia do funil com toda a configuração — etapas, checklists, restrições, etiquetas, status, anexos, automações, assistentes, modelos de configurações de visualização, permissões e templates de projeto (sem trazer os projetos reais). Sem name, a cópia recebe o nome do original seguido de (Clone). Funis arquivados não podem ser clonados.
O que clonar: cada categoria pode ser desligada individualmente pelas flags booleanas do corpo. Flag omitida ou null equivale a true, então uma chamada sem flags clona tudo.
Dependências forçadas: algumas categorias são ligadas automaticamente quando outra depende delas. Se automations, step_restrictions ou funnel_step_blockings estiver true, então funnel_tags e funnel_statuses viram true mesmo que enviados como false. Se automations estiver true, step_assistants também vira true. Ou seja, desligar etiquetas/status só tem efeito quando os três primeiros estão false.
O funil, as etapas, os vínculos de formulário e a área de negócio são sempre clonados e não têm flag. Formulários, agentes de IA e áreas de negócio são reaproveitados (não duplicados).
curl --request POST \
--url https://api.olie.ai/api/management/clone-funnel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"project_funnel_id": 97,
"name": "Comercial (Clone)",
"automations": false,
"step_restrictions": true,
"step_assistants": true,
"step_checklists": true,
"funnel_step_blockings": true,
"funnel_tags": true,
"funnel_statuses": true,
"funnel_attachments": false,
"funnel_config_templates": true,
"permissions": true,
"template_projects": false
}
'import requests
url = "https://api.olie.ai/api/management/clone-funnel"
payload = {
"project_funnel_id": 97,
"name": "Comercial (Clone)",
"automations": False,
"step_restrictions": True,
"step_assistants": True,
"step_checklists": True,
"funnel_step_blockings": True,
"funnel_tags": True,
"funnel_statuses": True,
"funnel_attachments": False,
"funnel_config_templates": True,
"permissions": True,
"template_projects": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
project_funnel_id: 97,
name: 'Comercial (Clone)',
automations: false,
step_restrictions: true,
step_assistants: true,
step_checklists: true,
funnel_step_blockings: true,
funnel_tags: true,
funnel_statuses: true,
funnel_attachments: false,
funnel_config_templates: true,
permissions: true,
template_projects: false
})
};
fetch('https://api.olie.ai/api/management/clone-funnel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.olie.ai/api/management/clone-funnel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'project_funnel_id' => 97,
'name' => 'Comercial (Clone)',
'automations' => false,
'step_restrictions' => true,
'step_assistants' => true,
'step_checklists' => true,
'funnel_step_blockings' => true,
'funnel_tags' => true,
'funnel_statuses' => true,
'funnel_attachments' => false,
'funnel_config_templates' => true,
'permissions' => true,
'template_projects' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.olie.ai/api/management/clone-funnel"
payload := strings.NewReader("{\n \"project_funnel_id\": 97,\n \"name\": \"Comercial (Clone)\",\n \"automations\": false,\n \"step_restrictions\": true,\n \"step_assistants\": true,\n \"step_checklists\": true,\n \"funnel_step_blockings\": true,\n \"funnel_tags\": true,\n \"funnel_statuses\": true,\n \"funnel_attachments\": false,\n \"funnel_config_templates\": true,\n \"permissions\": true,\n \"template_projects\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.olie.ai/api/management/clone-funnel")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"project_funnel_id\": 97,\n \"name\": \"Comercial (Clone)\",\n \"automations\": false,\n \"step_restrictions\": true,\n \"step_assistants\": true,\n \"step_checklists\": true,\n \"funnel_step_blockings\": true,\n \"funnel_tags\": true,\n \"funnel_statuses\": true,\n \"funnel_attachments\": false,\n \"funnel_config_templates\": true,\n \"permissions\": true,\n \"template_projects\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olie.ai/api/management/clone-funnel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"project_funnel_id\": 97,\n \"name\": \"Comercial (Clone)\",\n \"automations\": false,\n \"step_restrictions\": true,\n \"step_assistants\": true,\n \"step_checklists\": true,\n \"funnel_step_blockings\": true,\n \"funnel_tags\": true,\n \"funnel_statuses\": true,\n \"funnel_attachments\": false,\n \"funnel_config_templates\": true,\n \"permissions\": true,\n \"template_projects\": false\n}"
response = http.request(request)
puts response.read_body{
"response": true,
"project_funnel": {
"id": 98,
"name": "Comercial (Clone)",
"prefix": "COMC",
"order": 11,
"condition": "active",
"allow_multi_step": false,
"project_term": null,
"show_cost_info": true,
"allow_execution": true,
"business_area_id": 83,
"form_id": null,
"funnel_config_template_id": null,
"frame_id": "019b329a-4346-7064-bba3-e7c19057cda4",
"created_at": "2026-01-09T20:51:29.000000Z",
"updated_at": "2026-08-19T11:07:44.000000Z",
"deleted_at": null
}
}{
"response": false,
"message": "cant_clone_archived_project_funnel"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
ID do funil a clonar. Obrigatório.
Nome do funil clonado. Sem ele, o nome vira o do original seguido de (Clone). Máximo de 255 caracteres.
255Automações: copia as automações ligadas às etapas deste funil. Quando true, força funnel_tags, funnel_statuses e step_assistants. Padrão true.
Restrições: copia as restrições das etapas. Quando true, força funnel_tags e funnel_statuses. Padrão true.
Assistentes: copia os vínculos de assistente nas etapas (os agentes existentes são reutilizados). Forçado para true quando automations é true. Padrão true.
Checklists: copia os checklists das etapas. Padrão true.
Bloqueio de etapas: copia os bloqueios de etapas das etiquetas/status do funil. Quando true, força funnel_tags e funnel_statuses. Padrão true.
Etiquetas: copia as etiquetas do funil. Obrigatório enquanto automações, restrições ou bloqueios estiverem marcados — só tem efeito como false quando automations, step_restrictions e funnel_step_blockings estão todos false. Padrão true.
Status: copia os status do funil. Obrigatório enquanto automações, restrições ou bloqueios estiverem marcados — só tem efeito como false quando automations, step_restrictions e funnel_step_blockings estão todos false. Padrão true.
Anexos: copia anexos do funil e vínculos de anexo nas etapas. Padrão true.
Modelos de configurações de visualização: copia modelos de configurações de visualização do funil. Padrão true.
Permissões: replica permissões de acesso do funil original para o clone. Padrão true.
Templates de projeto: copia os vínculos com templates de projeto do funil original. Padrão true.
Was this page helpful?