curl --request PUT \
--url https://api.monaco.com/v1/accounts/ \
--header 'Content-Type: application/json' \
--data '
{
"domain": "acme.com",
"linkedin_url": "https://linkedin.com/company/acme",
"name": "Acme Corp",
"status": "NEW",
"notes": "Key enterprise prospect",
"owner": "550e8400-e29b-41d4-a716-446655440000",
"tags": [
"550e8400-e29b-41d4-a716-446655440001"
],
"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c": "high"
}
'import requests
url = "https://api.monaco.com/v1/accounts/"
payload = {
"domain": "acme.com",
"linkedin_url": "https://linkedin.com/company/acme",
"name": "Acme Corp",
"status": "NEW",
"notes": "Key enterprise prospect",
"owner": "550e8400-e29b-41d4-a716-446655440000",
"tags": ["550e8400-e29b-41d4-a716-446655440001"],
"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c": "high"
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
domain: 'acme.com',
linkedin_url: 'https://linkedin.com/company/acme',
name: 'Acme Corp',
status: 'NEW',
notes: 'Key enterprise prospect',
owner: '550e8400-e29b-41d4-a716-446655440000',
tags: ['550e8400-e29b-41d4-a716-446655440001'],
'custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c': 'high'
})
};
fetch('https://api.monaco.com/v1/accounts/', 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/accounts/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'domain' => 'acme.com',
'linkedin_url' => 'https://linkedin.com/company/acme',
'name' => 'Acme Corp',
'status' => 'NEW',
'notes' => 'Key enterprise prospect',
'owner' => '550e8400-e29b-41d4-a716-446655440000',
'tags' => [
'550e8400-e29b-41d4-a716-446655440001'
],
'custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c' => 'high'
]),
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/accounts/"
payload := strings.NewReader("{\n \"domain\": \"acme.com\",\n \"linkedin_url\": \"https://linkedin.com/company/acme\",\n \"name\": \"Acme Corp\",\n \"status\": \"NEW\",\n \"notes\": \"Key enterprise prospect\",\n \"owner\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440001\"\n ],\n \"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c\": \"high\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.monaco.com/v1/accounts/")
.header("Content-Type", "application/json")
.body("{\n \"domain\": \"acme.com\",\n \"linkedin_url\": \"https://linkedin.com/company/acme\",\n \"name\": \"Acme Corp\",\n \"status\": \"NEW\",\n \"notes\": \"Key enterprise prospect\",\n \"owner\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440001\"\n ],\n \"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c\": \"high\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monaco.com/v1/accounts/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"domain\": \"acme.com\",\n \"linkedin_url\": \"https://linkedin.com/company/acme\",\n \"name\": \"Acme Corp\",\n \"status\": \"NEW\",\n \"notes\": \"Key enterprise prospect\",\n \"owner\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440001\"\n ],\n \"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c\": \"high\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "acc_abc123",
"name": "Acme Corp",
"status": "NEW",
"owner": {
"id": "usr_abc123",
"first_name": "Jane",
"last_name": "Smith"
},
"notes": "Key enterprise prospect",
"company": {
"domain": "acme.com",
"linkedin_url": "https://linkedin.com/company/acme",
"description": "Enterprise software company specializing in AI-driven sales tools",
"employee_count": 250,
"founded_year": 2019,
"industries": [
"Software",
"Artificial Intelligence"
],
"total_funding_usd": 50000000,
"last_funding_date": "2024-03-15"
},
"scoring": {
"tier": "A",
"heat_score": "Hot"
},
"tags": [
"Enterprise"
],
"created_at": "2025-06-15T10:30:00Z",
"updated_at": "2025-06-15T10:30:00Z",
"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c": "high"
},
"meta": {
"timestamp": "2026-04-21T12:00:00Z"
}
}{
"error": {
"code": "not_found",
"message": "Resource not found"
}
}Upsert an Account
Creates a new account or updates an existing one. domain is the matching identifier.
Duplicate resolution — an exact domain match is updated in place, otherwise an account is created (a company record for the domain must exist in our data sources).
Enrichment — creation synchronously enriches the account with firmographic data (industry, employee count, funding), so requests can take several seconds. Use generous timeouts (10s+) and keep creates off hot paths.
curl --request PUT \
--url https://api.monaco.com/v1/accounts/ \
--header 'Content-Type: application/json' \
--data '
{
"domain": "acme.com",
"linkedin_url": "https://linkedin.com/company/acme",
"name": "Acme Corp",
"status": "NEW",
"notes": "Key enterprise prospect",
"owner": "550e8400-e29b-41d4-a716-446655440000",
"tags": [
"550e8400-e29b-41d4-a716-446655440001"
],
"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c": "high"
}
'import requests
url = "https://api.monaco.com/v1/accounts/"
payload = {
"domain": "acme.com",
"linkedin_url": "https://linkedin.com/company/acme",
"name": "Acme Corp",
"status": "NEW",
"notes": "Key enterprise prospect",
"owner": "550e8400-e29b-41d4-a716-446655440000",
"tags": ["550e8400-e29b-41d4-a716-446655440001"],
"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c": "high"
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
domain: 'acme.com',
linkedin_url: 'https://linkedin.com/company/acme',
name: 'Acme Corp',
status: 'NEW',
notes: 'Key enterprise prospect',
owner: '550e8400-e29b-41d4-a716-446655440000',
tags: ['550e8400-e29b-41d4-a716-446655440001'],
'custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c': 'high'
})
};
fetch('https://api.monaco.com/v1/accounts/', 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/accounts/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'domain' => 'acme.com',
'linkedin_url' => 'https://linkedin.com/company/acme',
'name' => 'Acme Corp',
'status' => 'NEW',
'notes' => 'Key enterprise prospect',
'owner' => '550e8400-e29b-41d4-a716-446655440000',
'tags' => [
'550e8400-e29b-41d4-a716-446655440001'
],
'custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c' => 'high'
]),
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/accounts/"
payload := strings.NewReader("{\n \"domain\": \"acme.com\",\n \"linkedin_url\": \"https://linkedin.com/company/acme\",\n \"name\": \"Acme Corp\",\n \"status\": \"NEW\",\n \"notes\": \"Key enterprise prospect\",\n \"owner\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440001\"\n ],\n \"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c\": \"high\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.monaco.com/v1/accounts/")
.header("Content-Type", "application/json")
.body("{\n \"domain\": \"acme.com\",\n \"linkedin_url\": \"https://linkedin.com/company/acme\",\n \"name\": \"Acme Corp\",\n \"status\": \"NEW\",\n \"notes\": \"Key enterprise prospect\",\n \"owner\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440001\"\n ],\n \"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c\": \"high\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.monaco.com/v1/accounts/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"domain\": \"acme.com\",\n \"linkedin_url\": \"https://linkedin.com/company/acme\",\n \"name\": \"Acme Corp\",\n \"status\": \"NEW\",\n \"notes\": \"Key enterprise prospect\",\n \"owner\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"tags\": [\n \"550e8400-e29b-41d4-a716-446655440001\"\n ],\n \"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c\": \"high\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "acc_abc123",
"name": "Acme Corp",
"status": "NEW",
"owner": {
"id": "usr_abc123",
"first_name": "Jane",
"last_name": "Smith"
},
"notes": "Key enterprise prospect",
"company": {
"domain": "acme.com",
"linkedin_url": "https://linkedin.com/company/acme",
"description": "Enterprise software company specializing in AI-driven sales tools",
"employee_count": 250,
"founded_year": 2019,
"industries": [
"Software",
"Artificial Intelligence"
],
"total_funding_usd": 50000000,
"last_funding_date": "2024-03-15"
},
"scoring": {
"tier": "A",
"heat_score": "Hot"
},
"tags": [
"Enterprise"
],
"created_at": "2025-06-15T10:30:00Z",
"updated_at": "2025-06-15T10:30:00Z",
"custom_field_7a1c9e2b-3f4d-4a8e-9b1c-2d3e4f5a6b7c": "high"
},
"meta": {
"timestamp": "2026-04-21T12:00:00Z"
}
}{
"error": {
"code": "not_found",
"message": "Resource not found"
}
}Body
Request body for upserting an account.
Custom fields can be passed as additional keys prefixed with custom_field_.
Company domain for matching or creating the account
"acme.com"
LinkedIn company page URL for matching or creating the account
"https://linkedin.com/company/acme"
Display name for the account
"Acme Corp"
Account status
"NEW"
Notes about the account
"Key enterprise prospect"
User ID to assign as account owner
Tag IDs to associate with the account. Appended to the account's existing tags.