curl --request POST \
--url https://your-instance.example.com/api/pipelines/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "EMEA sales pipeline",
"description": "EMEA-specific sales funnel",
"isDefault": false,
"pipelineStages": [
{
"name": "New",
"color": "#3B82F6",
"position": 0
},
{
"name": "Discovery",
"color": "#8B5CF6",
"position": 1
}
]
}
'import requests
url = "https://your-instance.example.com/api/pipelines/create"
payload = {
"name": "EMEA sales pipeline",
"description": "EMEA-specific sales funnel",
"isDefault": False,
"pipelineStages": [
{
"name": "New",
"color": "#3B82F6",
"position": 0
},
{
"name": "Discovery",
"color": "#8B5CF6",
"position": 1
}
]
}
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({
name: 'EMEA sales pipeline',
description: 'EMEA-specific sales funnel',
isDefault: false,
pipelineStages: [
{name: 'New', color: '#3B82F6', position: 0},
{name: 'Discovery', color: '#8B5CF6', position: 1}
]
})
};
fetch('https://your-instance.example.com/api/pipelines/create', 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://your-instance.example.com/api/pipelines/create",
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([
'name' => 'EMEA sales pipeline',
'description' => 'EMEA-specific sales funnel',
'isDefault' => false,
'pipelineStages' => [
[
'name' => 'New',
'color' => '#3B82F6',
'position' => 0
],
[
'name' => 'Discovery',
'color' => '#8B5CF6',
'position' => 1
]
]
]),
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://your-instance.example.com/api/pipelines/create"
payload := strings.NewReader("{\n \"name\": \"EMEA sales pipeline\",\n \"description\": \"EMEA-specific sales funnel\",\n \"isDefault\": false,\n \"pipelineStages\": [\n {\n \"name\": \"New\",\n \"color\": \"#3B82F6\",\n \"position\": 0\n },\n {\n \"name\": \"Discovery\",\n \"color\": \"#8B5CF6\",\n \"position\": 1\n }\n ]\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://your-instance.example.com/api/pipelines/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"EMEA sales pipeline\",\n \"description\": \"EMEA-specific sales funnel\",\n \"isDefault\": false,\n \"pipelineStages\": [\n {\n \"name\": \"New\",\n \"color\": \"#3B82F6\",\n \"position\": 0\n },\n {\n \"name\": \"Discovery\",\n \"color\": \"#8B5CF6\",\n \"position\": 1\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/pipelines/create")
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 \"name\": \"EMEA sales pipeline\",\n \"description\": \"EMEA-specific sales funnel\",\n \"isDefault\": false,\n \"pipelineStages\": [\n {\n \"name\": \"New\",\n \"color\": \"#3B82F6\",\n \"position\": 0\n },\n {\n \"name\": \"Discovery\",\n \"color\": \"#8B5CF6\",\n \"position\": 1\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "Pipeline updated",
"pipeline": {
"_id": "66f0a0b0c0d0e0f0a0b0c0d0",
"name": "Sales pipeline",
"type": "Contact",
"isDefault": true
},
"contactsMigrated": {
"New Lead -> New": 14,
"Qualified Lead -> Qualified": 8
}
}{
"error": "Pipeline not found"
}{
"error": "Pipeline not found"
}{
"error": "Pipeline not found"
}Create a new pipeline
Create a brand-new pipeline (with its pipelineStages) for the given type. Setting isDefault: true switches the org’s default pipeline to the newly-created one.
curl --request POST \
--url https://your-instance.example.com/api/pipelines/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "EMEA sales pipeline",
"description": "EMEA-specific sales funnel",
"isDefault": false,
"pipelineStages": [
{
"name": "New",
"color": "#3B82F6",
"position": 0
},
{
"name": "Discovery",
"color": "#8B5CF6",
"position": 1
}
]
}
'import requests
url = "https://your-instance.example.com/api/pipelines/create"
payload = {
"name": "EMEA sales pipeline",
"description": "EMEA-specific sales funnel",
"isDefault": False,
"pipelineStages": [
{
"name": "New",
"color": "#3B82F6",
"position": 0
},
{
"name": "Discovery",
"color": "#8B5CF6",
"position": 1
}
]
}
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({
name: 'EMEA sales pipeline',
description: 'EMEA-specific sales funnel',
isDefault: false,
pipelineStages: [
{name: 'New', color: '#3B82F6', position: 0},
{name: 'Discovery', color: '#8B5CF6', position: 1}
]
})
};
fetch('https://your-instance.example.com/api/pipelines/create', 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://your-instance.example.com/api/pipelines/create",
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([
'name' => 'EMEA sales pipeline',
'description' => 'EMEA-specific sales funnel',
'isDefault' => false,
'pipelineStages' => [
[
'name' => 'New',
'color' => '#3B82F6',
'position' => 0
],
[
'name' => 'Discovery',
'color' => '#8B5CF6',
'position' => 1
]
]
]),
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://your-instance.example.com/api/pipelines/create"
payload := strings.NewReader("{\n \"name\": \"EMEA sales pipeline\",\n \"description\": \"EMEA-specific sales funnel\",\n \"isDefault\": false,\n \"pipelineStages\": [\n {\n \"name\": \"New\",\n \"color\": \"#3B82F6\",\n \"position\": 0\n },\n {\n \"name\": \"Discovery\",\n \"color\": \"#8B5CF6\",\n \"position\": 1\n }\n ]\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://your-instance.example.com/api/pipelines/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"EMEA sales pipeline\",\n \"description\": \"EMEA-specific sales funnel\",\n \"isDefault\": false,\n \"pipelineStages\": [\n {\n \"name\": \"New\",\n \"color\": \"#3B82F6\",\n \"position\": 0\n },\n {\n \"name\": \"Discovery\",\n \"color\": \"#8B5CF6\",\n \"position\": 1\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/pipelines/create")
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 \"name\": \"EMEA sales pipeline\",\n \"description\": \"EMEA-specific sales funnel\",\n \"isDefault\": false,\n \"pipelineStages\": [\n {\n \"name\": \"New\",\n \"color\": \"#3B82F6\",\n \"position\": 0\n },\n {\n \"name\": \"Discovery\",\n \"color\": \"#8B5CF6\",\n \"position\": 1\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "Pipeline updated",
"pipeline": {
"_id": "66f0a0b0c0d0e0f0a0b0c0d0",
"name": "Sales pipeline",
"type": "Contact",
"isDefault": true
},
"contactsMigrated": {
"New Lead -> New": 14,
"Qualified Lead -> Qualified": 8
}
}{
"error": "Pipeline not found"
}{
"error": "Pipeline not found"
}{
"error": "Pipeline not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Contact, Application Body
Pipeline display name; required and unique within the organization.
Optional human-readable summary of the pipeline's purpose.
When true, becomes the org's default pipeline for its type (the previous default loses the flag).
Legacy stage list used when pipelineStages is not provided; entries are mapped to new pipeline stages by newStage name.
Show child attributes
Show child attributes
Stage definitions with name, color, and position (sort order); takes precedence over stages and must be non-empty.
Show child attributes
Show child attributes
Response
Pipeline created
Show child attributes
Show child attributes
{ "_id": "66f0a0b0c0d0e0f0a0b0c0d0", "name": "Sales pipeline", "description": "NA sales pipeline", "organizationId": "65a0e0e0e0e0e0e0e0e0e0e0", "type": "Contact", "isDefault": true, "isActive": true, "stages": [ { "name": "New", "color": "#3B82F6" }, { "name": "Qualified", "color": "#10B981" } ], "pipelineStageIds": [ "67f0a0b0c0d0e0f0a0b0c0d0", "67f0a0b0c0d0e0f0a0b0c0d1" ], "pipelineStages": [ { "_id": "67f0a0b0c0d0e0f0a0b0c0d0", "name": "New", "color": "#3B82F6", "position": 0 }, { "_id": "67f0a0b0c0d0e0f0a0b0c0d1", "name": "Qualified", "color": "#10B981", "position": 1 } ], "createdBy": "65b1f0a2c3d4e5f6a7b8c9d0", "updatedBy": "65b1f0a2c3d4e5f6a7b8c9d0" }
Show child attributes
Show child attributes