Create a deal record
curl --request POST \
--url https://api.attio.com/v2/objects/deals/records \
--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"
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.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
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', 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",
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([
'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"
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("POST", 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.post("https://api.attio.com/v2/objects/deals/records")
.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")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.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": "value_not_found",
"message": "Cannot find select attribute with select option title \"In Progress\"."
}{
"status_code": 403,
"type": "auth_error",
"code": "unauthorized",
"message": "You do not have the necessary permissions to create 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
Create a deal record
Creates a new deal record. This endpoint will throw on conflicts of unique attributes, if defined. If you would prefer to update deal records on conflicts, please use the Assert deal record endpoint instead.
Required scopes: record_permission:read-write, object_configuration:read.
Supported token levels: workspace, user.
POST
/
v2
/
objects
/
deals
/
records
Create a deal record
curl --request POST \
--url https://api.attio.com/v2/objects/deals/records \
--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"
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.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
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', 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",
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([
'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"
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("POST", 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.post("https://api.attio.com/v2/objects/deals/records")
.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")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.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": "value_not_found",
"message": "Cannot find select attribute with select option title \"In Progress\"."
}{
"status_code": 403,
"type": "auth_error",
"code": "unauthorized",
"message": "You do not have the necessary permissions to create 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.
FlowAuthorization Code
- Authorization URL
- https://app.attio.com/authorize
- Token URL
- https://app.attio.com/oauth/token
Scopes2
record_permission:read-write
View, and optionally write, records.
object_configuration:read
View, and optionally write, the configuration and attributes of objects.
Body
application/json
Show child attributes
Show child attributes
Response
Success
Success
Show child attributes
Show child attributes
Was this page helpful?