CRM Deals
Post crmdeals
POST
/
crm
/
deals
cURL
curl --request POST \
--url https://api.example.com/crm/deals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"pipelineId": "<string>",
"stageId": "<string>",
"value": 123,
"currency": "<string>",
"expectedCloseDate": "<string>",
"notes": "<string>",
"crmCompanyId": "<string>",
"contactId": "<string>",
"ownerId": "<string>",
"contacts": [
{
"contactId": "<string>",
"isPrimary": true
}
],
"customFields": {}
}
'import requests
url = "https://api.example.com/crm/deals"
payload = {
"name": "<string>",
"pipelineId": "<string>",
"stageId": "<string>",
"value": 123,
"currency": "<string>",
"expectedCloseDate": "<string>",
"notes": "<string>",
"crmCompanyId": "<string>",
"contactId": "<string>",
"ownerId": "<string>",
"contacts": [
{
"contactId": "<string>",
"isPrimary": True
}
],
"customFields": {}
}
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: '<string>',
pipelineId: '<string>',
stageId: '<string>',
value: 123,
currency: '<string>',
expectedCloseDate: '<string>',
notes: '<string>',
crmCompanyId: '<string>',
contactId: '<string>',
ownerId: '<string>',
contacts: [{contactId: '<string>', isPrimary: true}],
customFields: {}
})
};
fetch('https://api.example.com/crm/deals', 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.example.com/crm/deals",
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' => '<string>',
'pipelineId' => '<string>',
'stageId' => '<string>',
'value' => 123,
'currency' => '<string>',
'expectedCloseDate' => '<string>',
'notes' => '<string>',
'crmCompanyId' => '<string>',
'contactId' => '<string>',
'ownerId' => '<string>',
'contacts' => [
[
'contactId' => '<string>',
'isPrimary' => true
]
],
'customFields' => [
]
]),
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.example.com/crm/deals"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"pipelineId\": \"<string>\",\n \"stageId\": \"<string>\",\n \"value\": 123,\n \"currency\": \"<string>\",\n \"expectedCloseDate\": \"<string>\",\n \"notes\": \"<string>\",\n \"crmCompanyId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"contacts\": [\n {\n \"contactId\": \"<string>\",\n \"isPrimary\": true\n }\n ],\n \"customFields\": {}\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.example.com/crm/deals")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"pipelineId\": \"<string>\",\n \"stageId\": \"<string>\",\n \"value\": 123,\n \"currency\": \"<string>\",\n \"expectedCloseDate\": \"<string>\",\n \"notes\": \"<string>\",\n \"crmCompanyId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"contacts\": [\n {\n \"contactId\": \"<string>\",\n \"isPrimary\": true\n }\n ],\n \"customFields\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/crm/deals")
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\": \"<string>\",\n \"pipelineId\": \"<string>\",\n \"stageId\": \"<string>\",\n \"value\": 123,\n \"currency\": \"<string>\",\n \"expectedCloseDate\": \"<string>\",\n \"notes\": \"<string>\",\n \"crmCompanyId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"contacts\": [\n {\n \"contactId\": \"<string>\",\n \"isPrimary\": true\n }\n ],\n \"customFields\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"pipelineId": "<string>",
"stageId": "<string>",
"companyId": "<string>",
"enteredStageAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"value": 123,
"currency": "<string>",
"expectedCloseDate": "2023-11-07T05:31:56Z",
"notes": "<string>",
"crmCompanyId": "<string>",
"contactId": "<string>",
"ownerId": "<string>",
"lostReason": "<string>",
"lostReasonNote": "<string>",
"wonAt": "2023-11-07T05:31:56Z",
"lostAt": "2023-11-07T05:31:56Z",
"customFields": {},
"crmCompany": {
"id": "<string>",
"name": "<string>",
"domain": "<string>",
"iconUrl": "<string>"
},
"contact": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"additionalData": {}
},
"stage": {
"id": "<string>",
"name": "<string>",
"color": "<string>",
"isWon": true,
"isLost": true,
"winProbability": 123,
"rottingDays": 123
},
"contacts": [
{
"id": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"role": "primary",
"isPrimary": true,
"createdAt": "2023-11-07T05:31:56Z",
"contact": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"additionalData": {}
}
}
],
"owner": {
"id": "<string>",
"email": "<string>",
"givenName": "<string>",
"familyName": "<string>"
},
"isRotting": true,
"signal": {
"healthScore": 123,
"healthBand": {},
"daysInStage": 123,
"daysSinceLastActivity": 123,
"followUpsSinceLastReply": 123,
"hasReplyEver": true,
"inboundCount": 123,
"outboundCount": 123,
"meetingsBooked": 123,
"meetingsHeld": 123,
"openTaskCount": 123,
"overdueTaskCount": 123,
"computedAt": "2023-11-07T05:31:56Z",
"daysSinceLastInbound": 123,
"daysSinceLastOutbound": 123
}
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}Authorizations
ApiKeyJWTApiUserHeader
Bearer token: a Platform API Key (format: ak_live::) or a Personal Access Token (format: rgo-...). PATs always act as the token owner.
Body
application/json
Maximum string length:
255Maximum string length:
10Maximum string length:
10000Account owner. Omit to default to the creating user; pass null to create
the deal with no account owner at all.
Show child attributes
Show child attributes
Response
Configurable per company, so a key rather than a fixed enum value.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Server-computed health signals from crm_deal_signal.
Present once the signal sweep has seen the deal. The board must render
signal.healthBand rather than guessing from timestamps on the client, so
the badge, the workflow rules and Mira all agree on one answer.
Show child attributes
Show child attributes
⌘I
cURL
curl --request POST \
--url https://api.example.com/crm/deals \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"pipelineId": "<string>",
"stageId": "<string>",
"value": 123,
"currency": "<string>",
"expectedCloseDate": "<string>",
"notes": "<string>",
"crmCompanyId": "<string>",
"contactId": "<string>",
"ownerId": "<string>",
"contacts": [
{
"contactId": "<string>",
"isPrimary": true
}
],
"customFields": {}
}
'import requests
url = "https://api.example.com/crm/deals"
payload = {
"name": "<string>",
"pipelineId": "<string>",
"stageId": "<string>",
"value": 123,
"currency": "<string>",
"expectedCloseDate": "<string>",
"notes": "<string>",
"crmCompanyId": "<string>",
"contactId": "<string>",
"ownerId": "<string>",
"contacts": [
{
"contactId": "<string>",
"isPrimary": True
}
],
"customFields": {}
}
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: '<string>',
pipelineId: '<string>',
stageId: '<string>',
value: 123,
currency: '<string>',
expectedCloseDate: '<string>',
notes: '<string>',
crmCompanyId: '<string>',
contactId: '<string>',
ownerId: '<string>',
contacts: [{contactId: '<string>', isPrimary: true}],
customFields: {}
})
};
fetch('https://api.example.com/crm/deals', 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.example.com/crm/deals",
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' => '<string>',
'pipelineId' => '<string>',
'stageId' => '<string>',
'value' => 123,
'currency' => '<string>',
'expectedCloseDate' => '<string>',
'notes' => '<string>',
'crmCompanyId' => '<string>',
'contactId' => '<string>',
'ownerId' => '<string>',
'contacts' => [
[
'contactId' => '<string>',
'isPrimary' => true
]
],
'customFields' => [
]
]),
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.example.com/crm/deals"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"pipelineId\": \"<string>\",\n \"stageId\": \"<string>\",\n \"value\": 123,\n \"currency\": \"<string>\",\n \"expectedCloseDate\": \"<string>\",\n \"notes\": \"<string>\",\n \"crmCompanyId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"contacts\": [\n {\n \"contactId\": \"<string>\",\n \"isPrimary\": true\n }\n ],\n \"customFields\": {}\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.example.com/crm/deals")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"pipelineId\": \"<string>\",\n \"stageId\": \"<string>\",\n \"value\": 123,\n \"currency\": \"<string>\",\n \"expectedCloseDate\": \"<string>\",\n \"notes\": \"<string>\",\n \"crmCompanyId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"contacts\": [\n {\n \"contactId\": \"<string>\",\n \"isPrimary\": true\n }\n ],\n \"customFields\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/crm/deals")
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\": \"<string>\",\n \"pipelineId\": \"<string>\",\n \"stageId\": \"<string>\",\n \"value\": 123,\n \"currency\": \"<string>\",\n \"expectedCloseDate\": \"<string>\",\n \"notes\": \"<string>\",\n \"crmCompanyId\": \"<string>\",\n \"contactId\": \"<string>\",\n \"ownerId\": \"<string>\",\n \"contacts\": [\n {\n \"contactId\": \"<string>\",\n \"isPrimary\": true\n }\n ],\n \"customFields\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"pipelineId": "<string>",
"stageId": "<string>",
"companyId": "<string>",
"enteredStageAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"value": 123,
"currency": "<string>",
"expectedCloseDate": "2023-11-07T05:31:56Z",
"notes": "<string>",
"crmCompanyId": "<string>",
"contactId": "<string>",
"ownerId": "<string>",
"lostReason": "<string>",
"lostReasonNote": "<string>",
"wonAt": "2023-11-07T05:31:56Z",
"lostAt": "2023-11-07T05:31:56Z",
"customFields": {},
"crmCompany": {
"id": "<string>",
"name": "<string>",
"domain": "<string>",
"iconUrl": "<string>"
},
"contact": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"additionalData": {}
},
"stage": {
"id": "<string>",
"name": "<string>",
"color": "<string>",
"isWon": true,
"isLost": true,
"winProbability": 123,
"rottingDays": 123
},
"contacts": [
{
"id": "<string>",
"dealId": "<string>",
"contactId": "<string>",
"role": "primary",
"isPrimary": true,
"createdAt": "2023-11-07T05:31:56Z",
"contact": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"additionalData": {}
}
}
],
"owner": {
"id": "<string>",
"email": "<string>",
"givenName": "<string>",
"familyName": "<string>"
},
"isRotting": true,
"signal": {
"healthScore": 123,
"healthBand": {},
"daysInStage": 123,
"daysSinceLastActivity": 123,
"followUpsSinceLastReply": 123,
"hasReplyEver": true,
"inboundCount": 123,
"outboundCount": 123,
"meetingsBooked": 123,
"meetingsHeld": 123,
"openTaskCount": 123,
"overdueTaskCount": 123,
"computedAt": "2023-11-07T05:31:56Z",
"daysSinceLastInbound": 123,
"daysSinceLastOutbound": 123
}
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}{
"statusCode": 400,
"message": [
"limit must not be greater than 100"
],
"error": "BadRequestException"
}