curl --request POST \
--url https://api.cal.com/v2/events/{uuid}/invitations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"guest@example.com"
],
"hostNote": "<string>"
}
'import requests
url = "https://api.cal.com/v2/events/{uuid}/invitations"
payload = {
"emails": ["guest@example.com"],
"hostNote": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({emails: ['guest@example.com'], hostNote: '<string>'})
};
fetch('https://api.cal.com/v2/events/{uuid}/invitations', 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.cal.com/v2/events/{uuid}/invitations",
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([
'emails' => [
'guest@example.com'
],
'hostNote' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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.cal.com/v2/events/{uuid}/invitations"
payload := strings.NewReader("{\n \"emails\": [\n \"guest@example.com\"\n ],\n \"hostNote\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.cal.com/v2/events/{uuid}/invitations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"emails\": [\n \"guest@example.com\"\n ],\n \"hostNote\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/events/{uuid}/invitations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"emails\": [\n \"guest@example.com\"\n ],\n \"hostNote\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"invitedCount": 123,
"skippedAlreadyInvited": 123,
"skippedAlreadyRegistered": 123,
"skippedOnCooldown": 123,
"skippedInvalid": 123,
"failedCount": 123,
"outcomes": [
{
"email": "<string>",
"reason": "invited"
}
]
}
}Invite guests to an Event
Emails an invitation to each address. Addresses that are already invited or registered are skipped, and the response reports what happened to every address. The Event must be published, not cancelled and not started yet, and the authenticated user must have a verified email. An Event holds at most 200 active invitations. The authenticated user must be the Event’s owner, one of its hosts, an accepted co-host, or a member of the owning team. PBAC permission for team events: calEvent.update. If accessed using an OAuth access token, the EVENT_WRITE scope is required.
curl --request POST \
--url https://api.cal.com/v2/events/{uuid}/invitations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"emails": [
"guest@example.com"
],
"hostNote": "<string>"
}
'import requests
url = "https://api.cal.com/v2/events/{uuid}/invitations"
payload = {
"emails": ["guest@example.com"],
"hostNote": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({emails: ['guest@example.com'], hostNote: '<string>'})
};
fetch('https://api.cal.com/v2/events/{uuid}/invitations', 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.cal.com/v2/events/{uuid}/invitations",
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([
'emails' => [
'guest@example.com'
],
'hostNote' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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.cal.com/v2/events/{uuid}/invitations"
payload := strings.NewReader("{\n \"emails\": [\n \"guest@example.com\"\n ],\n \"hostNote\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.cal.com/v2/events/{uuid}/invitations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"emails\": [\n \"guest@example.com\"\n ],\n \"hostNote\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/events/{uuid}/invitations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"emails\": [\n \"guest@example.com\"\n ],\n \"hostNote\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"invitedCount": 123,
"skippedAlreadyInvited": 123,
"skippedAlreadyRegistered": 123,
"skippedOnCooldown": 123,
"skippedInvalid": 123,
"failedCount": 123,
"outcomes": [
{
"email": "<string>",
"reason": "invited"
}
]
}
}Headers
value must be Bearer <token> where <token> is api key prefixed with cal_, managed user access token, or OAuth access token
Path Parameters
Event UUID. Accepts the canonical UUID (e.g. 018ff5cd-6dc4-7d57-bcbc-374702ca8b38) or its short-uuid (Flickr Base58) form (e.g. 1cbZYoAFoJdwqN4tixezd5).
Body
Was this page helpful?