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.
Supported token levels: workspace, user.
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."
}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
meeting:read-write
View, and optionally write, meetings.
record_permission:read
View, and optionally write, records.
Body
application/json
Show child attributes
Show child attributes
Response
Success
Success
Show child attributes
Show child attributes
Was this page helpful?