Create a deal
curl --request POST \
--url https://api.morphic.io/api/deals/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"amount": 50000,
"currency": "USD",
"expected_close_date": "2026-03-31",
"name": "Enterprise License Deal",
"next_step": "Schedule demo",
"probability": 60,
"source": "Inbound",
"stage": "proposal",
"status": "open"
}
'import requests
url = "https://api.morphic.io/api/deals/"
payload = {
"amount": 50000,
"currency": "USD",
"expected_close_date": "2026-03-31",
"name": "Enterprise License Deal",
"next_step": "Schedule demo",
"probability": 60,
"source": "Inbound",
"stage": "proposal",
"status": "open"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 50000,
currency: 'USD',
expected_close_date: '2026-03-31',
name: 'Enterprise License Deal',
next_step: 'Schedule demo',
probability: 60,
source: 'Inbound',
stage: 'proposal',
status: 'open'
})
};
fetch('https://api.morphic.io/api/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.morphic.io/api/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([
'amount' => 50000,
'currency' => 'USD',
'expected_close_date' => '2026-03-31',
'name' => 'Enterprise License Deal',
'next_step' => 'Schedule demo',
'probability' => 60,
'source' => 'Inbound',
'stage' => 'proposal',
'status' => 'open'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.morphic.io/api/deals/"
payload := strings.NewReader("{\n \"amount\": 50000,\n \"currency\": \"USD\",\n \"expected_close_date\": \"2026-03-31\",\n \"name\": \"Enterprise License Deal\",\n \"next_step\": \"Schedule demo\",\n \"probability\": 60,\n \"source\": \"Inbound\",\n \"stage\": \"proposal\",\n \"status\": \"open\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.morphic.io/api/deals/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 50000,\n \"currency\": \"USD\",\n \"expected_close_date\": \"2026-03-31\",\n \"name\": \"Enterprise License Deal\",\n \"next_step\": \"Schedule demo\",\n \"probability\": 60,\n \"source\": \"Inbound\",\n \"stage\": \"proposal\",\n \"status\": \"open\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.morphic.io/api/deals/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 50000,\n \"currency\": \"USD\",\n \"expected_close_date\": \"2026-03-31\",\n \"name\": \"Enterprise License Deal\",\n \"next_step\": \"Schedule demo\",\n \"probability\": 60,\n \"source\": \"Inbound\",\n \"stage\": \"proposal\",\n \"status\": \"open\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"stage": "<string>",
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"status": "open",
"amount": "<string>",
"currency": "USD",
"probability": 50,
"expected_close_date": "2023-12-25",
"source": "<string>",
"competing_options": [
"<string>"
],
"next_step": "<string>",
"tags": [
"<string>"
],
"notes": "<string>",
"categories": [
"<string>"
],
"contact_ids": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"assigned_to_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"closed_at": "2023-11-07T05:31:56Z",
"lost_reason": "<string>",
"metadata": {},
"enrichment": {},
"enrichment_provider": "<string>",
"enrichment_last_updated": "2023-11-07T05:31:56Z",
"enrichment_status": "<string>",
"company_id": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"custom_fields": {},
"is_favorite": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Deals
Create a deal
Create a new deal in the CRM.
POST
/
api
/
deals
/
Create a deal
curl --request POST \
--url https://api.morphic.io/api/deals/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"amount": 50000,
"currency": "USD",
"expected_close_date": "2026-03-31",
"name": "Enterprise License Deal",
"next_step": "Schedule demo",
"probability": 60,
"source": "Inbound",
"stage": "proposal",
"status": "open"
}
'import requests
url = "https://api.morphic.io/api/deals/"
payload = {
"amount": 50000,
"currency": "USD",
"expected_close_date": "2026-03-31",
"name": "Enterprise License Deal",
"next_step": "Schedule demo",
"probability": 60,
"source": "Inbound",
"stage": "proposal",
"status": "open"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 50000,
currency: 'USD',
expected_close_date: '2026-03-31',
name: 'Enterprise License Deal',
next_step: 'Schedule demo',
probability: 60,
source: 'Inbound',
stage: 'proposal',
status: 'open'
})
};
fetch('https://api.morphic.io/api/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.morphic.io/api/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([
'amount' => 50000,
'currency' => 'USD',
'expected_close_date' => '2026-03-31',
'name' => 'Enterprise License Deal',
'next_step' => 'Schedule demo',
'probability' => 60,
'source' => 'Inbound',
'stage' => 'proposal',
'status' => 'open'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.morphic.io/api/deals/"
payload := strings.NewReader("{\n \"amount\": 50000,\n \"currency\": \"USD\",\n \"expected_close_date\": \"2026-03-31\",\n \"name\": \"Enterprise License Deal\",\n \"next_step\": \"Schedule demo\",\n \"probability\": 60,\n \"source\": \"Inbound\",\n \"stage\": \"proposal\",\n \"status\": \"open\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.morphic.io/api/deals/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 50000,\n \"currency\": \"USD\",\n \"expected_close_date\": \"2026-03-31\",\n \"name\": \"Enterprise License Deal\",\n \"next_step\": \"Schedule demo\",\n \"probability\": 60,\n \"source\": \"Inbound\",\n \"stage\": \"proposal\",\n \"status\": \"open\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.morphic.io/api/deals/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 50000,\n \"currency\": \"USD\",\n \"expected_close_date\": \"2026-03-31\",\n \"name\": \"Enterprise License Deal\",\n \"next_step\": \"Schedule demo\",\n \"probability\": 60,\n \"source\": \"Inbound\",\n \"stage\": \"proposal\",\n \"status\": \"open\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"stage": "<string>",
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"status": "open",
"amount": "<string>",
"currency": "USD",
"probability": 50,
"expected_close_date": "2023-12-25",
"source": "<string>",
"competing_options": [
"<string>"
],
"next_step": "<string>",
"tags": [
"<string>"
],
"notes": "<string>",
"categories": [
"<string>"
],
"contact_ids": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"assigned_to_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"closed_at": "2023-11-07T05:31:56Z",
"lost_reason": "<string>",
"metadata": {},
"enrichment": {},
"enrichment_provider": "<string>",
"enrichment_last_updated": "2023-11-07T05:31:56Z",
"enrichment_status": "<string>",
"company_id": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"custom_fields": {},
"is_favorite": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API key (sk_xxx) from Developer Settings. No X-Account-ID needed.
Headers
Body
application/json
Required string length:
1 - 255Pipeline stage (e.g., qualification, negotiation, closed_won)
Deal status (open, won, lost)
Maximum string length:
3Required range:
0 <= x <= 100Response
Successful Response
Required string length:
1 - 255Pipeline stage (e.g., qualification, negotiation, closed_won)
Deal status (open, won, lost)
Maximum string length:
3Required range:
0 <= x <= 100Associated contacts with id and name
Show child attributes
Show child attributes
Company with id and name
Show child attributes
Show child attributes
Whether this record is favorited by the current user