Update a record (append multiselect values)
curl --request PATCH \
--url https://api.attio.com/v2/objects/{object}/records/{record_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"values": {
"41252299-f8c7-4b5e-99c9-4ff8321d2f96": "Text value",
"multiselect_attribute": [
"Select option 1",
"Select option 2"
]
}
}
}
'import requests
url = "https://api.attio.com/v2/objects/{object}/records/{record_id}"
payload = { "data": { "values": {
"41252299-f8c7-4b5e-99c9-4ff8321d2f96": "Text value",
"multiselect_attribute": ["Select option 1", "Select option 2"]
} } }
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: {
'41252299-f8c7-4b5e-99c9-4ff8321d2f96': 'Text value',
multiselect_attribute: ['Select option 1', 'Select option 2']
}
}
})
};
fetch('https://api.attio.com/v2/objects/{object}/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/{object}/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' => [
'41252299-f8c7-4b5e-99c9-4ff8321d2f96' => 'Text value',
'multiselect_attribute' => [
'Select option 1',
'Select option 2'
]
]
]
]),
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/{object}/records/{record_id}"
payload := strings.NewReader("{\n \"data\": {\n \"values\": {\n \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\": \"Text value\",\n \"multiselect_attribute\": [\n \"Select option 1\",\n \"Select option 2\"\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/{object}/records/{record_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"values\": {\n \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\": \"Text value\",\n \"multiselect_attribute\": [\n \"Select option 1\",\n \"Select option 2\"\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/objects/{object}/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 \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\": \"Text value\",\n \"multiselect_attribute\": [\n \"Select option 1\",\n \"Select option 2\"\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": {}
}
}{
"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."
}Records
Update a record (append multiselect values)
Use this endpoint to update people, companies, and other 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 PUT 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
/
{object}
/
records
/
{record_id}
Update a record (append multiselect values)
curl --request PATCH \
--url https://api.attio.com/v2/objects/{object}/records/{record_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"values": {
"41252299-f8c7-4b5e-99c9-4ff8321d2f96": "Text value",
"multiselect_attribute": [
"Select option 1",
"Select option 2"
]
}
}
}
'import requests
url = "https://api.attio.com/v2/objects/{object}/records/{record_id}"
payload = { "data": { "values": {
"41252299-f8c7-4b5e-99c9-4ff8321d2f96": "Text value",
"multiselect_attribute": ["Select option 1", "Select option 2"]
} } }
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: {
'41252299-f8c7-4b5e-99c9-4ff8321d2f96': 'Text value',
multiselect_attribute: ['Select option 1', 'Select option 2']
}
}
})
};
fetch('https://api.attio.com/v2/objects/{object}/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/{object}/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' => [
'41252299-f8c7-4b5e-99c9-4ff8321d2f96' => 'Text value',
'multiselect_attribute' => [
'Select option 1',
'Select option 2'
]
]
]
]),
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/{object}/records/{record_id}"
payload := strings.NewReader("{\n \"data\": {\n \"values\": {\n \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\": \"Text value\",\n \"multiselect_attribute\": [\n \"Select option 1\",\n \"Select option 2\"\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/{object}/records/{record_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"values\": {\n \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\": \"Text value\",\n \"multiselect_attribute\": [\n \"Select option 1\",\n \"Select option 2\"\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/objects/{object}/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 \"41252299-f8c7-4b5e-99c9-4ff8321d2f96\": \"Text value\",\n \"multiselect_attribute\": [\n \"Select option 1\",\n \"Select option 2\"\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": {}
}
}{
"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 or slug of the object the record belongs to.
Example:
"people"
A UUID of the record to update.
Example:
"891dcbfc-9141-415d-9b2a-2238a6cc012d"
Body
application/json
Show child attributes
Show child attributes
Response
Success
Success
Show child attributes
Show child attributes
Was this page helpful?