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": "<string>",
"message": "<string>"
}
}Upsert an Account
Creates a new account or updates an existing one. domain is required and is used as the primary identifier for matching.
Duplicate resolution — the request is matched against existing accounts in the org by exact match on domain. If a match is found, that account is updated in place with the provided fields and returned; otherwise a new account is created (a company record for the domain must exist in our data sources).
Enrichment — on creation, Monaco synchronously enriches the account with company firmographic data (industry, employee count, funding, etc.). This can make create requests take several seconds to complete; clients should use generous timeouts (10s+) and avoid issuing creates on hot paths.
Any tags list provided is appended to the existing tags on the account.
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": "<string>",
"message": "<string>"
}
}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
List of tag IDs to associate with the account