Create an Opportunity
curl --request POST \
--url https://api.monaco.com/v1/opportunities/ \
--header 'Content-Type: application/json' \
--data '
{
"name": "Acme Corp - Enterprise License",
"account_id": "550e8400-e29b-41d4-a716-446655440000",
"owner_user_id": "550e8400-e29b-41d4-a716-446655440001",
"stage": "closed-won",
"estimated_value": {
"currency_code": "USD",
"amount": 50000
},
"estimated_close_date": "2025-09-30",
"notes": "Follow up after Q3 board meeting",
"tags": [
"550e8400-e29b-41d4-a716-446655440002"
],
"idempotency_key": "550e8400-e29b-41d4-a716-446655440003",
"custom_field_550e8400-e29b-41d4-a716-446655440001": "outbound"
}
'import requests
url = "https://api.monaco.com/v1/opportunities/"
payload = {
"name": "Acme Corp - Enterprise License",
"account_id": "550e8400-e29b-41d4-a716-446655440000",
"owner_user_id": "550e8400-e29b-41d4-a716-446655440001",
"stage": "closed-won",
"estimated_value": {
"currency_code": "USD",
"amount": 50000
},
"estimated_close_date": "2025-09-30",
"notes": "Follow up after Q3 board meeting",
"tags": ["550e8400-e29b-41d4-a716-446655440002"],
"idempotency_key": "550e8400-e29b-41d4-a716-446655440003",
"custom_field_550e8400-e29b-41d4-a716-446655440001": "outbound"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Acme Corp - Enterprise License',
account_id: '550e8400-e29b-41d4-a716-446655440000',
owner_user_id: '550e8400-e29b-41d4-a716-446655440001',
stage: 'closed-won',
estimated_value: {currency_code: 'USD', amount: 50000},
estimated_close_date: '2025-09-30',
notes: 'Follow up after Q3 board meeting',
tags: ['550e8400-e29b-41d4-a716-446655440002'],
idempotency_key: '550e8400-e29b-41d4-a716-446655440003',
'custom_field_550e8400-e29b-41d4-a716-446655440001': 'outbound'
})
};
fetch('https://api.monaco.com/v1/opportunities/', 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.monaco.com/v1/opportunities/",
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' => 'Acme Corp - Enterprise License',
'account_id' => '550e8400-e29b-41d4-a716-446655440000',
'owner_user_id' => '550e8400-e29b-41d4-a716-446655440001',
'stage' => 'closed-won',
'estimated_value' => [
'currency_code' => 'USD',
'amount' => 50000
],
'estimated_close_date' => '2025-09-30',
'notes' => 'Follow up after Q3 board meeting',
'tags' => [
'550e8400-e29b-41d4-a716-446655440002'
],
'idempotency_key' => '550e8400-e29b-41d4-a716-446655440003',
'custom_field_550e8400-e29b-41d4-a716-446655440001' => 'outbound'
]),
CURLOPT_HTTPHEADER => [
"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.monaco.com/v1/opportunities/"
payload := strings.NewReader("{\n \"name\": \"Acme Corp - Enterprise License\",\n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"owner_user_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"stage\": \"closed-won\",\n \"estimated_value\": {\n \"currency_code\": \"USD\",\n \"amount\": 50000\n },\n \"estimated_close_date\": \"2025-09-30\",\n \"notes\": \"Follow up after Q3 board meeting\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"idempotency_key\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"custom_field_550e8400-e29b-41d4-a716-446655440001\": \"outbound\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.monaco.com/v1/opportunities/")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme Corp - Enterprise License\",\n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"owner_user_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"stage\": \"closed-won\",\n \"estimated_value\": {\n \"currency_code\": \"USD\",\n \"amount\": 50000\n },\n \"estimated_close_date\": \"2025-09-30\",\n \"notes\": \"Follow up after Q3 board meeting\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"idempotency_key\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"custom_field_550e8400-e29b-41d4-a716-446655440001\": \"outbound\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monaco.com/v1/opportunities/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Acme Corp - Enterprise License\",\n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"owner_user_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"stage\": \"closed-won\",\n \"estimated_value\": {\n \"currency_code\": \"USD\",\n \"amount\": 50000\n },\n \"estimated_close_date\": \"2025-09-30\",\n \"notes\": \"Follow up after Q3 board meeting\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"idempotency_key\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"custom_field_550e8400-e29b-41d4-a716-446655440001\": \"outbound\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "opp_abc123",
"account_id": "acc_def456",
"name": "Acme Corp - Enterprise License",
"owner": {
"id": "usr_abc123",
"first_name": "Jane",
"last_name": "Smith"
},
"stage": "Closed Won",
"estimated_value": {
"currency_code": "USD",
"amount": 50000
},
"estimated_close_date": "2025-09-30",
"risks": [],
"notes": "Follow up after Q3 board meeting",
"tags": [],
"updated_at": "2026-04-21T12:00:00Z",
"created_at": "2026-04-21T12:00:00Z",
"custom_field_550e8400-e29b-41d4-a716-446655440001": "outbound"
},
"meta": {
"timestamp": "2026-04-21T12:00:00Z"
}
}{
"error": {
"code": "not_found",
"message": "Resource not found"
}
}Opportunities
Create an Opportunity
Creates a new opportunity associated with an existing account.
POST
/
v1
/
opportunities
/
Create an Opportunity
curl --request POST \
--url https://api.monaco.com/v1/opportunities/ \
--header 'Content-Type: application/json' \
--data '
{
"name": "Acme Corp - Enterprise License",
"account_id": "550e8400-e29b-41d4-a716-446655440000",
"owner_user_id": "550e8400-e29b-41d4-a716-446655440001",
"stage": "closed-won",
"estimated_value": {
"currency_code": "USD",
"amount": 50000
},
"estimated_close_date": "2025-09-30",
"notes": "Follow up after Q3 board meeting",
"tags": [
"550e8400-e29b-41d4-a716-446655440002"
],
"idempotency_key": "550e8400-e29b-41d4-a716-446655440003",
"custom_field_550e8400-e29b-41d4-a716-446655440001": "outbound"
}
'import requests
url = "https://api.monaco.com/v1/opportunities/"
payload = {
"name": "Acme Corp - Enterprise License",
"account_id": "550e8400-e29b-41d4-a716-446655440000",
"owner_user_id": "550e8400-e29b-41d4-a716-446655440001",
"stage": "closed-won",
"estimated_value": {
"currency_code": "USD",
"amount": 50000
},
"estimated_close_date": "2025-09-30",
"notes": "Follow up after Q3 board meeting",
"tags": ["550e8400-e29b-41d4-a716-446655440002"],
"idempotency_key": "550e8400-e29b-41d4-a716-446655440003",
"custom_field_550e8400-e29b-41d4-a716-446655440001": "outbound"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Acme Corp - Enterprise License',
account_id: '550e8400-e29b-41d4-a716-446655440000',
owner_user_id: '550e8400-e29b-41d4-a716-446655440001',
stage: 'closed-won',
estimated_value: {currency_code: 'USD', amount: 50000},
estimated_close_date: '2025-09-30',
notes: 'Follow up after Q3 board meeting',
tags: ['550e8400-e29b-41d4-a716-446655440002'],
idempotency_key: '550e8400-e29b-41d4-a716-446655440003',
'custom_field_550e8400-e29b-41d4-a716-446655440001': 'outbound'
})
};
fetch('https://api.monaco.com/v1/opportunities/', 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.monaco.com/v1/opportunities/",
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' => 'Acme Corp - Enterprise License',
'account_id' => '550e8400-e29b-41d4-a716-446655440000',
'owner_user_id' => '550e8400-e29b-41d4-a716-446655440001',
'stage' => 'closed-won',
'estimated_value' => [
'currency_code' => 'USD',
'amount' => 50000
],
'estimated_close_date' => '2025-09-30',
'notes' => 'Follow up after Q3 board meeting',
'tags' => [
'550e8400-e29b-41d4-a716-446655440002'
],
'idempotency_key' => '550e8400-e29b-41d4-a716-446655440003',
'custom_field_550e8400-e29b-41d4-a716-446655440001' => 'outbound'
]),
CURLOPT_HTTPHEADER => [
"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.monaco.com/v1/opportunities/"
payload := strings.NewReader("{\n \"name\": \"Acme Corp - Enterprise License\",\n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"owner_user_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"stage\": \"closed-won\",\n \"estimated_value\": {\n \"currency_code\": \"USD\",\n \"amount\": 50000\n },\n \"estimated_close_date\": \"2025-09-30\",\n \"notes\": \"Follow up after Q3 board meeting\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"idempotency_key\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"custom_field_550e8400-e29b-41d4-a716-446655440001\": \"outbound\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.monaco.com/v1/opportunities/")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme Corp - Enterprise License\",\n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"owner_user_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"stage\": \"closed-won\",\n \"estimated_value\": {\n \"currency_code\": \"USD\",\n \"amount\": 50000\n },\n \"estimated_close_date\": \"2025-09-30\",\n \"notes\": \"Follow up after Q3 board meeting\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"idempotency_key\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"custom_field_550e8400-e29b-41d4-a716-446655440001\": \"outbound\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monaco.com/v1/opportunities/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Acme Corp - Enterprise License\",\n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"owner_user_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n \"stage\": \"closed-won\",\n \"estimated_value\": {\n \"currency_code\": \"USD\",\n \"amount\": 50000\n },\n \"estimated_close_date\": \"2025-09-30\",\n \"notes\": \"Follow up after Q3 board meeting\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440002\"\n ],\n \"idempotency_key\": \"550e8400-e29b-41d4-a716-446655440003\",\n \"custom_field_550e8400-e29b-41d4-a716-446655440001\": \"outbound\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "opp_abc123",
"account_id": "acc_def456",
"name": "Acme Corp - Enterprise License",
"owner": {
"id": "usr_abc123",
"first_name": "Jane",
"last_name": "Smith"
},
"stage": "Closed Won",
"estimated_value": {
"currency_code": "USD",
"amount": 50000
},
"estimated_close_date": "2025-09-30",
"risks": [],
"notes": "Follow up after Q3 board meeting",
"tags": [],
"updated_at": "2026-04-21T12:00:00Z",
"created_at": "2026-04-21T12:00:00Z",
"custom_field_550e8400-e29b-41d4-a716-446655440001": "outbound"
},
"meta": {
"timestamp": "2026-04-21T12:00:00Z"
}
}{
"error": {
"code": "not_found",
"message": "Resource not found"
}
}Body
application/json
Request body for creating an opportunity via POST.
Name of the opportunity
Example:
"Acme Corp - Enterprise License"
ID of the account to associate the opportunity with
User ID to assign as opportunity owner
Pipeline stage key for the opportunity. If omitted, the opportunity is placed in the first stage of the org's pipeline.
Example:
"Negotiation"
Estimated monetary value of the opportunity
Show child attributes
Show child attributes
Expected close date (YYYY-MM-DD)
Example:
"2025-09-30"
Notes about the opportunity
Example:
"Follow up after Q3 board meeting"
List of tag IDs to associate with the opportunity
Client-provided idempotency key to prevent duplicate creation