Update a deal record
curl --request PATCH \
--url https://api.attio.com/v2/objects/deals/records/{record_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"values": {
"name": "Contract with Fundstack",
"stage": "In Progress",
"owner": "person@company.com",
"value": 4200,
"associated_people": [
{
"target_object": "people",
"email_addresses": [
{
"email_address": "person@company.com"
}
]
}
],
"associated_company": {
"target_object": "companies",
"domains": [
{
"domain": "company.com"
}
]
}
}
}
}
'import requests
url = "https://api.attio.com/v2/objects/deals/records/{record_id}"
payload = { "data": { "values": {
"name": "Contract with Fundstack",
"stage": "In Progress",
"owner": "person@company.com",
"value": 4200,
"associated_people": [
{
"target_object": "people",
"email_addresses": [{ "email_address": "person@company.com" }]
}
],
"associated_company": {
"target_object": "companies",
"domains": [{ "domain": "company.com" }]
}
} } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
values: {
name: 'Contract with Fundstack',
stage: 'In Progress',
owner: 'person@company.com',
value: 4200,
associated_people: [
{
target_object: 'people',
email_addresses: [{email_address: 'person@company.com'}]
}
],
associated_company: {target_object: 'companies', domains: [{domain: 'company.com'}]}
}
}
})
};
fetch('https://api.attio.com/v2/objects/deals/records/{record_id}', 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.attio.com/v2/objects/deals/records/{record_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'values' => [
'name' => 'Contract with Fundstack',
'stage' => 'In Progress',
'owner' => 'person@company.com',
'value' => 4200,
'associated_people' => [
[
'target_object' => 'people',
'email_addresses' => [
[
'email_address' => 'person@company.com'
]
]
]
],
'associated_company' => [
'target_object' => 'companies',
'domains' => [
[
'domain' => 'company.com'
]
]
]
]
]
]),
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.attio.com/v2/objects/deals/records/{record_id}"
payload := strings.NewReader("{\n \"data\": {\n \"values\": {\n \"name\": \"Contract with Fundstack\",\n \"stage\": \"In Progress\",\n \"owner\": \"person@company.com\",\n \"value\": 4200,\n \"associated_people\": [\n {\n \"target_object\": \"people\",\n \"email_addresses\": [\n {\n \"email_address\": \"person@company.com\"\n }\n ]\n }\n ],\n \"associated_company\": {\n \"target_object\": \"companies\",\n \"domains\": [\n {\n \"domain\": \"company.com\"\n }\n ]\n }\n }\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.attio.com/v2/objects/deals/records/{record_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"values\": {\n \"name\": \"Contract with Fundstack\",\n \"stage\": \"In Progress\",\n \"owner\": \"person@company.com\",\n \"value\": 4200,\n \"associated_people\": [\n {\n \"target_object\": \"people\",\n \"email_addresses\": [\n {\n \"email_address\": \"person@company.com\"\n }\n ]\n }\n ],\n \"associated_company\": {\n \"target_object\": \"companies\",\n \"domains\": [\n {\n \"domain\": \"company.com\"\n }\n ]\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/objects/deals/records/{record_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"values\": {\n \"name\": \"Contract with Fundstack\",\n \"stage\": \"In Progress\",\n \"owner\": \"person@company.com\",\n \"value\": 4200,\n \"associated_people\": [\n {\n \"target_object\": \"people\",\n \"email_addresses\": [\n {\n \"email_address\": \"person@company.com\"\n }\n ]\n }\n ],\n \"associated_company\": {\n \"target_object\": \"companies\",\n \"domains\": [\n {\n \"domain\": \"company.com\"\n }\n ]\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
"record_id": "bf071e1f-6035-429d-b874-d83ea64ea13b"
},
"created_at": "2022-11-21T13:22:49.061281000Z",
"web_url": "https://app.attio.com/salarya/person/bf071e1f-6035-429d-b874-d83ea64ea13b",
"values": {
"name": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"value": "Contract with Fundstack",
"attribute_type": "text"
}
],
"stage": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"status": {
"title": "In Progress",
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
"attribute_id": "41252299-f8c7-4b5e-99c9-4ff8321d2f96",
"status_id": "11f07f01-c10f-4e05-a522-33e050bc52ee"
},
"is_archived": false,
"celebration_enabled": false,
"target_time_in_status": null
},
"attribute_type": "status"
}
],
"owner": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"referenced_actor_type": "workspace-member",
"referenced_actor_id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
"attribute_type": "actor-reference"
}
],
"value": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"currency_value": 4200,
"currency_code": "USD",
"attribute_type": "currency"
}
],
"associated_people": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"target_object": "people",
"target_record_id": "bf071e1f-6035-429d-b874-d83ea64ea13b",
"attribute_type": "record-reference"
}
],
"associated_company": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"target_object": "companies",
"target_record_id": "bf071e1f-6035-429d-b874-d83ea64ea13b",
"attribute_type": "record-reference"
}
]
}
}
}{
"status_code": 400,
"type": "invalid_request_error",
"code": "missing_value",
"message": "Required value for attribute with ID \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\" was not provided."
}{
"status_code": 403,
"type": "auth_error",
"code": "unauthorized",
"message": "You do not have the necessary permissions to update this record."
}{
"status_code": 404,
"type": "invalid_request_error",
"code": "not_found",
"message": "Object with slug/ID \"people\" not found."
}{
"status_code": 409,
"type": "invalid_request_error",
"code": "concurrent_write_conflict",
"message": "The record was modified by another request while this write was being validated. Please try again."
}Deals
Update a deal record
Use this endpoint to update deal records by record_id. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the Upsert deal endpoint to overwrite or remove multiselect attribute values.
Required scopes: record_permission:read-write, object_configuration:read.
Supported token levels: workspace, user.
PATCH
/
v2
/
objects
/
deals
/
records
/
{record_id}
Update a deal record
curl --request PATCH \
--url https://api.attio.com/v2/objects/deals/records/{record_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"values": {
"name": "Contract with Fundstack",
"stage": "In Progress",
"owner": "person@company.com",
"value": 4200,
"associated_people": [
{
"target_object": "people",
"email_addresses": [
{
"email_address": "person@company.com"
}
]
}
],
"associated_company": {
"target_object": "companies",
"domains": [
{
"domain": "company.com"
}
]
}
}
}
}
'import requests
url = "https://api.attio.com/v2/objects/deals/records/{record_id}"
payload = { "data": { "values": {
"name": "Contract with Fundstack",
"stage": "In Progress",
"owner": "person@company.com",
"value": 4200,
"associated_people": [
{
"target_object": "people",
"email_addresses": [{ "email_address": "person@company.com" }]
}
],
"associated_company": {
"target_object": "companies",
"domains": [{ "domain": "company.com" }]
}
} } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
values: {
name: 'Contract with Fundstack',
stage: 'In Progress',
owner: 'person@company.com',
value: 4200,
associated_people: [
{
target_object: 'people',
email_addresses: [{email_address: 'person@company.com'}]
}
],
associated_company: {target_object: 'companies', domains: [{domain: 'company.com'}]}
}
}
})
};
fetch('https://api.attio.com/v2/objects/deals/records/{record_id}', 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.attio.com/v2/objects/deals/records/{record_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'values' => [
'name' => 'Contract with Fundstack',
'stage' => 'In Progress',
'owner' => 'person@company.com',
'value' => 4200,
'associated_people' => [
[
'target_object' => 'people',
'email_addresses' => [
[
'email_address' => 'person@company.com'
]
]
]
],
'associated_company' => [
'target_object' => 'companies',
'domains' => [
[
'domain' => 'company.com'
]
]
]
]
]
]),
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.attio.com/v2/objects/deals/records/{record_id}"
payload := strings.NewReader("{\n \"data\": {\n \"values\": {\n \"name\": \"Contract with Fundstack\",\n \"stage\": \"In Progress\",\n \"owner\": \"person@company.com\",\n \"value\": 4200,\n \"associated_people\": [\n {\n \"target_object\": \"people\",\n \"email_addresses\": [\n {\n \"email_address\": \"person@company.com\"\n }\n ]\n }\n ],\n \"associated_company\": {\n \"target_object\": \"companies\",\n \"domains\": [\n {\n \"domain\": \"company.com\"\n }\n ]\n }\n }\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.attio.com/v2/objects/deals/records/{record_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"values\": {\n \"name\": \"Contract with Fundstack\",\n \"stage\": \"In Progress\",\n \"owner\": \"person@company.com\",\n \"value\": 4200,\n \"associated_people\": [\n {\n \"target_object\": \"people\",\n \"email_addresses\": [\n {\n \"email_address\": \"person@company.com\"\n }\n ]\n }\n ],\n \"associated_company\": {\n \"target_object\": \"companies\",\n \"domains\": [\n {\n \"domain\": \"company.com\"\n }\n ]\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/objects/deals/records/{record_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"values\": {\n \"name\": \"Contract with Fundstack\",\n \"stage\": \"In Progress\",\n \"owner\": \"person@company.com\",\n \"value\": 4200,\n \"associated_people\": [\n {\n \"target_object\": \"people\",\n \"email_addresses\": [\n {\n \"email_address\": \"person@company.com\"\n }\n ]\n }\n ],\n \"associated_company\": {\n \"target_object\": \"companies\",\n \"domains\": [\n {\n \"domain\": \"company.com\"\n }\n ]\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
"record_id": "bf071e1f-6035-429d-b874-d83ea64ea13b"
},
"created_at": "2022-11-21T13:22:49.061281000Z",
"web_url": "https://app.attio.com/salarya/person/bf071e1f-6035-429d-b874-d83ea64ea13b",
"values": {
"name": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"value": "Contract with Fundstack",
"attribute_type": "text"
}
],
"stage": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"status": {
"title": "In Progress",
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
"attribute_id": "41252299-f8c7-4b5e-99c9-4ff8321d2f96",
"status_id": "11f07f01-c10f-4e05-a522-33e050bc52ee"
},
"is_archived": false,
"celebration_enabled": false,
"target_time_in_status": null
},
"attribute_type": "status"
}
],
"owner": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"referenced_actor_type": "workspace-member",
"referenced_actor_id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
"attribute_type": "actor-reference"
}
],
"value": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"currency_value": 4200,
"currency_code": "USD",
"attribute_type": "currency"
}
],
"associated_people": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"target_object": "people",
"target_record_id": "bf071e1f-6035-429d-b874-d83ea64ea13b",
"attribute_type": "record-reference"
}
],
"associated_company": [
{
"active_from": "2023-01-01T15:00:00.000000000Z",
"active_until": null,
"created_by_actor": {
"type": "system",
"id": null
},
"target_object": "companies",
"target_record_id": "bf071e1f-6035-429d-b874-d83ea64ea13b",
"attribute_type": "record-reference"
}
]
}
}
}{
"status_code": 400,
"type": "invalid_request_error",
"code": "missing_value",
"message": "Required value for attribute with ID \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\" was not provided."
}{
"status_code": 403,
"type": "auth_error",
"code": "unauthorized",
"message": "You do not have the necessary permissions to update this record."
}{
"status_code": 404,
"type": "invalid_request_error",
"code": "not_found",
"message": "Object with slug/ID \"people\" not found."
}{
"status_code": 409,
"type": "invalid_request_error",
"code": "concurrent_write_conflict",
"message": "The record was modified by another request while this write was being validated. Please try again."
}Authorizations
This API uses OAuth 2.0 with the authorization code grant flow.
Path Parameters
A UUID of the deal record to update.
Example:
"1eec4535-30a1-4bc0-be24-e255d3fb5ac5"
Body
application/json
Show child attributes
Show child attributes
Response
Success
Success
Show child attributes
Show child attributes
Was this page helpful?