curl --request POST \
--url https://api.hubapi.com/crm/pipelines/2026-03/{objectType} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayOrder": 123,
"label": "<string>",
"stages": [
{
"displayOrder": 123,
"label": "<string>",
"metadata": {},
"stageId": "<string>"
}
],
"pipelineId": "<string>"
}
'import requests
url = "https://api.hubapi.com/crm/pipelines/2026-03/{objectType}"
payload = {
"displayOrder": 123,
"label": "<string>",
"stages": [
{
"displayOrder": 123,
"label": "<string>",
"metadata": {},
"stageId": "<string>"
}
],
"pipelineId": "<string>"
}
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({
displayOrder: 123,
label: '<string>',
stages: [{displayOrder: 123, label: '<string>', metadata: {}, stageId: '<string>'}],
pipelineId: '<string>'
})
};
fetch('https://api.hubapi.com/crm/pipelines/2026-03/{objectType}', 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.hubapi.com/crm/pipelines/2026-03/{objectType}",
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([
'displayOrder' => 123,
'label' => '<string>',
'stages' => [
[
'displayOrder' => 123,
'label' => '<string>',
'metadata' => [
],
'stageId' => '<string>'
]
],
'pipelineId' => '<string>'
]),
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.hubapi.com/crm/pipelines/2026-03/{objectType}"
payload := strings.NewReader("{\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"stages\": [\n {\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"metadata\": {},\n \"stageId\": \"<string>\"\n }\n ],\n \"pipelineId\": \"<string>\"\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.hubapi.com/crm/pipelines/2026-03/{objectType}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"stages\": [\n {\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"metadata\": {},\n \"stageId\": \"<string>\"\n }\n ],\n \"pipelineId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/pipelines/2026-03/{objectType}")
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 \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"stages\": [\n {\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"metadata\": {},\n \"stageId\": \"<string>\"\n }\n ],\n \"pipelineId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"displayOrder": 123,
"id": "<string>",
"label": "<string>",
"stages": [
{
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"displayOrder": 123,
"id": "<string>",
"label": "<string>",
"metadata": {},
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z"
}
],
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Create a pipeline
Create a new pipeline with the provided property values. The entire pipeline object, including its unique ID, will be returned in the response.
curl --request POST \
--url https://api.hubapi.com/crm/pipelines/2026-03/{objectType} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayOrder": 123,
"label": "<string>",
"stages": [
{
"displayOrder": 123,
"label": "<string>",
"metadata": {},
"stageId": "<string>"
}
],
"pipelineId": "<string>"
}
'import requests
url = "https://api.hubapi.com/crm/pipelines/2026-03/{objectType}"
payload = {
"displayOrder": 123,
"label": "<string>",
"stages": [
{
"displayOrder": 123,
"label": "<string>",
"metadata": {},
"stageId": "<string>"
}
],
"pipelineId": "<string>"
}
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({
displayOrder: 123,
label: '<string>',
stages: [{displayOrder: 123, label: '<string>', metadata: {}, stageId: '<string>'}],
pipelineId: '<string>'
})
};
fetch('https://api.hubapi.com/crm/pipelines/2026-03/{objectType}', 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.hubapi.com/crm/pipelines/2026-03/{objectType}",
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([
'displayOrder' => 123,
'label' => '<string>',
'stages' => [
[
'displayOrder' => 123,
'label' => '<string>',
'metadata' => [
],
'stageId' => '<string>'
]
],
'pipelineId' => '<string>'
]),
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.hubapi.com/crm/pipelines/2026-03/{objectType}"
payload := strings.NewReader("{\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"stages\": [\n {\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"metadata\": {},\n \"stageId\": \"<string>\"\n }\n ],\n \"pipelineId\": \"<string>\"\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.hubapi.com/crm/pipelines/2026-03/{objectType}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"stages\": [\n {\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"metadata\": {},\n \"stageId\": \"<string>\"\n }\n ],\n \"pipelineId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/pipelines/2026-03/{objectType}")
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 \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"stages\": [\n {\n \"displayOrder\": 123,\n \"label\": \"<string>\",\n \"metadata\": {},\n \"stageId\": \"<string>\"\n }\n ],\n \"pipelineId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"displayOrder": 123,
"id": "<string>",
"label": "<string>",
"stages": [
{
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"displayOrder": 123,
"id": "<string>",
"label": "<string>",
"metadata": {},
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z"
}
],
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Required Scopes
Required Scopes
承認
The access token received from the authorization server in the OAuth 2.0 flow.
パスパラメータ
ボディ
The order for displaying this pipeline. If two pipelines have a matching displayOrder, they will be sorted alphabetically by label.
A unique label used to organize pipelines in HubSpot's UI
Pipeline stage inputs used to create the new or replacement pipeline.
Show child attributes
Show child attributes
レスポンス
successful operation
Whether the pipeline is archived.
The date the pipeline was created. The default pipelines will have createdAt = 0.
The order for displaying this pipeline. If two pipelines have a matching displayOrder, they will be sorted alphabetically by label.
A unique identifier generated by HubSpot that can be used to retrieve and update the pipeline.
A unique label used to organize pipelines in HubSpot's UI
The stages associated with the pipeline. They can be retrieved and updated via the pipeline stages endpoints.
Show child attributes
Show child attributes
The date the pipeline was last updated.
The date the pipeline was archived. archivedAt will only be present if the pipeline is archived.