Create a meeting
curl --request POST \
--url https://api.attio.com/v2/meetings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"title": "Onboarding Session",
"description": "Getting you up to speed with the platform and answering any questions you have.",
"start": {
"datetime": "2027-11-27T14:00:00Z",
"timezone": "America/New_York"
},
"end": {
"datetime": "2027-11-27T15:00:00Z",
"timezone": "America/New_York"
},
"is_all_day": false,
"participants": [
{
"is_organizer": true,
"status": "accepted",
"email_address": "person@company.com",
"name": "Simon Mitchell"
}
],
"linked_records": [
{
"object": "people",
"record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}
]
}
}
'import requests
url = "https://api.attio.com/v2/meetings"
payload = { "data": {
"title": "Onboarding Session",
"description": "Getting you up to speed with the platform and answering any questions you have.",
"start": {
"datetime": "2027-11-27T14:00:00Z",
"timezone": "America/New_York"
},
"end": {
"datetime": "2027-11-27T15:00:00Z",
"timezone": "America/New_York"
},
"is_all_day": False,
"participants": [
{
"is_organizer": True,
"status": "accepted",
"email_address": "person@company.com",
"name": "Simon Mitchell"
}
],
"linked_records": [
{
"object": "people",
"record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}
]
} }
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: {
title: 'Onboarding Session',
description: 'Getting you up to speed with the platform and answering any questions you have.',
start: {datetime: '2027-11-27T14:00:00Z', timezone: 'America/New_York'},
end: {datetime: '2027-11-27T15:00:00Z', timezone: 'America/New_York'},
is_all_day: false,
participants: [
{
is_organizer: true,
status: 'accepted',
email_address: 'person@company.com',
name: 'Simon Mitchell'
}
],
linked_records: [{object: 'people', record_id: '891dcbfc-9141-415d-9b2a-2238a6cc012d'}]
}
})
};
fetch('https://api.attio.com/v2/meetings', 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/meetings",
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' => [
'title' => 'Onboarding Session',
'description' => 'Getting you up to speed with the platform and answering any questions you have.',
'start' => [
'datetime' => '2027-11-27T14:00:00Z',
'timezone' => 'America/New_York'
],
'end' => [
'datetime' => '2027-11-27T15:00:00Z',
'timezone' => 'America/New_York'
],
'is_all_day' => false,
'participants' => [
[
'is_organizer' => true,
'status' => 'accepted',
'email_address' => 'person@company.com',
'name' => 'Simon Mitchell'
]
],
'linked_records' => [
[
'object' => 'people',
'record_id' => '891dcbfc-9141-415d-9b2a-2238a6cc012d'
]
]
]
]),
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/meetings"
payload := strings.NewReader("{\n \"data\": {\n \"title\": \"Onboarding Session\",\n \"description\": \"Getting you up to speed with the platform and answering any questions you have.\",\n \"start\": {\n \"datetime\": \"2027-11-27T14:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"end\": {\n \"datetime\": \"2027-11-27T15:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"is_all_day\": false,\n \"participants\": [\n {\n \"is_organizer\": true,\n \"status\": \"accepted\",\n \"email_address\": \"person@company.com\",\n \"name\": \"Simon Mitchell\"\n }\n ],\n \"linked_records\": [\n {\n \"object\": \"people\",\n \"record_id\": \"891dcbfc-9141-415d-9b2a-2238a6cc012d\"\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/meetings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"title\": \"Onboarding Session\",\n \"description\": \"Getting you up to speed with the platform and answering any questions you have.\",\n \"start\": {\n \"datetime\": \"2027-11-27T14:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"end\": {\n \"datetime\": \"2027-11-27T15:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"is_all_day\": false,\n \"participants\": [\n {\n \"is_organizer\": true,\n \"status\": \"accepted\",\n \"email_address\": \"person@company.com\",\n \"name\": \"Simon Mitchell\"\n }\n ],\n \"linked_records\": [\n {\n \"object\": \"people\",\n \"record_id\": \"891dcbfc-9141-415d-9b2a-2238a6cc012d\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/meetings")
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 \"title\": \"Onboarding Session\",\n \"description\": \"Getting you up to speed with the platform and answering any questions you have.\",\n \"start\": {\n \"datetime\": \"2027-11-27T14:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"end\": {\n \"datetime\": \"2027-11-27T15:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"is_all_day\": false,\n \"participants\": [\n {\n \"is_organizer\": true,\n \"status\": \"accepted\",\n \"email_address\": \"person@company.com\",\n \"name\": \"Simon Mitchell\"\n }\n ],\n \"linked_records\": [\n {\n \"object\": \"people\",\n \"record_id\": \"891dcbfc-9141-415d-9b2a-2238a6cc012d\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"meeting_id": "cb59ab17-ad15-460c-a126-0715617c0853"
},
"title": "Onboarding Session",
"description": "Getting you up to speed with the platform and answering any questions you have.",
"is_all_day": false,
"start": {
"datetime": "2027-11-27T14:00:00.000-04:00",
"timezone": "America/New_York"
},
"end": {
"datetime": "2027-11-27T15:00:00.000-04:00",
"timezone": "America/New_York"
},
"participants": [
{
"status": "accepted",
"is_organizer": false,
"email_address": "person@company.com",
"name": "Simon Mitchell"
}
],
"linked_records": [
{
"object_slug": "people",
"object_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
"record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}
],
"created_at": "2023-01-01T15:00:00.000000000Z",
"created_by_actor": {
"type": "workspace-member",
"id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b"
}
}
}{
"statusCode": 400,
"type": "invalid_request_error",
"code": "validation_type",
"message": "No participants were provided."
}Meetings
Create a meeting
Creates a new meeting. See here for guidance on avoiding duplicate meetings.
This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.
Required scopes: meeting:read-write, record_permission:read.
POST
/
v2
/
meetings
Create a meeting
curl --request POST \
--url https://api.attio.com/v2/meetings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"title": "Onboarding Session",
"description": "Getting you up to speed with the platform and answering any questions you have.",
"start": {
"datetime": "2027-11-27T14:00:00Z",
"timezone": "America/New_York"
},
"end": {
"datetime": "2027-11-27T15:00:00Z",
"timezone": "America/New_York"
},
"is_all_day": false,
"participants": [
{
"is_organizer": true,
"status": "accepted",
"email_address": "person@company.com",
"name": "Simon Mitchell"
}
],
"linked_records": [
{
"object": "people",
"record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}
]
}
}
'import requests
url = "https://api.attio.com/v2/meetings"
payload = { "data": {
"title": "Onboarding Session",
"description": "Getting you up to speed with the platform and answering any questions you have.",
"start": {
"datetime": "2027-11-27T14:00:00Z",
"timezone": "America/New_York"
},
"end": {
"datetime": "2027-11-27T15:00:00Z",
"timezone": "America/New_York"
},
"is_all_day": False,
"participants": [
{
"is_organizer": True,
"status": "accepted",
"email_address": "person@company.com",
"name": "Simon Mitchell"
}
],
"linked_records": [
{
"object": "people",
"record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}
]
} }
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: {
title: 'Onboarding Session',
description: 'Getting you up to speed with the platform and answering any questions you have.',
start: {datetime: '2027-11-27T14:00:00Z', timezone: 'America/New_York'},
end: {datetime: '2027-11-27T15:00:00Z', timezone: 'America/New_York'},
is_all_day: false,
participants: [
{
is_organizer: true,
status: 'accepted',
email_address: 'person@company.com',
name: 'Simon Mitchell'
}
],
linked_records: [{object: 'people', record_id: '891dcbfc-9141-415d-9b2a-2238a6cc012d'}]
}
})
};
fetch('https://api.attio.com/v2/meetings', 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/meetings",
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' => [
'title' => 'Onboarding Session',
'description' => 'Getting you up to speed with the platform and answering any questions you have.',
'start' => [
'datetime' => '2027-11-27T14:00:00Z',
'timezone' => 'America/New_York'
],
'end' => [
'datetime' => '2027-11-27T15:00:00Z',
'timezone' => 'America/New_York'
],
'is_all_day' => false,
'participants' => [
[
'is_organizer' => true,
'status' => 'accepted',
'email_address' => 'person@company.com',
'name' => 'Simon Mitchell'
]
],
'linked_records' => [
[
'object' => 'people',
'record_id' => '891dcbfc-9141-415d-9b2a-2238a6cc012d'
]
]
]
]),
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/meetings"
payload := strings.NewReader("{\n \"data\": {\n \"title\": \"Onboarding Session\",\n \"description\": \"Getting you up to speed with the platform and answering any questions you have.\",\n \"start\": {\n \"datetime\": \"2027-11-27T14:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"end\": {\n \"datetime\": \"2027-11-27T15:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"is_all_day\": false,\n \"participants\": [\n {\n \"is_organizer\": true,\n \"status\": \"accepted\",\n \"email_address\": \"person@company.com\",\n \"name\": \"Simon Mitchell\"\n }\n ],\n \"linked_records\": [\n {\n \"object\": \"people\",\n \"record_id\": \"891dcbfc-9141-415d-9b2a-2238a6cc012d\"\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/meetings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"title\": \"Onboarding Session\",\n \"description\": \"Getting you up to speed with the platform and answering any questions you have.\",\n \"start\": {\n \"datetime\": \"2027-11-27T14:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"end\": {\n \"datetime\": \"2027-11-27T15:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"is_all_day\": false,\n \"participants\": [\n {\n \"is_organizer\": true,\n \"status\": \"accepted\",\n \"email_address\": \"person@company.com\",\n \"name\": \"Simon Mitchell\"\n }\n ],\n \"linked_records\": [\n {\n \"object\": \"people\",\n \"record_id\": \"891dcbfc-9141-415d-9b2a-2238a6cc012d\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/meetings")
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 \"title\": \"Onboarding Session\",\n \"description\": \"Getting you up to speed with the platform and answering any questions you have.\",\n \"start\": {\n \"datetime\": \"2027-11-27T14:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"end\": {\n \"datetime\": \"2027-11-27T15:00:00Z\",\n \"timezone\": \"America/New_York\"\n },\n \"is_all_day\": false,\n \"participants\": [\n {\n \"is_organizer\": true,\n \"status\": \"accepted\",\n \"email_address\": \"person@company.com\",\n \"name\": \"Simon Mitchell\"\n }\n ],\n \"linked_records\": [\n {\n \"object\": \"people\",\n \"record_id\": \"891dcbfc-9141-415d-9b2a-2238a6cc012d\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"meeting_id": "cb59ab17-ad15-460c-a126-0715617c0853"
},
"title": "Onboarding Session",
"description": "Getting you up to speed with the platform and answering any questions you have.",
"is_all_day": false,
"start": {
"datetime": "2027-11-27T14:00:00.000-04:00",
"timezone": "America/New_York"
},
"end": {
"datetime": "2027-11-27T15:00:00.000-04:00",
"timezone": "America/New_York"
},
"participants": [
{
"status": "accepted",
"is_organizer": false,
"email_address": "person@company.com",
"name": "Simon Mitchell"
}
],
"linked_records": [
{
"object_slug": "people",
"object_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
"record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}
],
"created_at": "2023-01-01T15:00:00.000000000Z",
"created_by_actor": {
"type": "workspace-member",
"id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b"
}
}
}{
"statusCode": 400,
"type": "invalid_request_error",
"code": "validation_type",
"message": "No participants were provided."
}Was this page helpful?
⌘I