curl --request POST \
--url https://api.cal.com/v2/events/{uuid}/locations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "address",
"address": "1 Example Street, Berlin",
"label": "<string>",
"price": 1500,
"currency": "usd",
"capacity": 50000.5
}
'import requests
url = "https://api.cal.com/v2/events/{uuid}/locations"
payload = {
"type": "address",
"address": "1 Example Street, Berlin",
"label": "<string>",
"price": 1500,
"currency": "usd",
"capacity": 50000.5
}
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({
type: 'address',
address: '1 Example Street, Berlin',
label: '<string>',
price: 1500,
currency: 'usd',
capacity: 50000.5
})
};
fetch('https://api.cal.com/v2/events/{uuid}/locations', 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}/locations",
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([
'type' => 'address',
'address' => '1 Example Street, Berlin',
'label' => '<string>',
'price' => 1500,
'currency' => 'usd',
'capacity' => 50000.5
]),
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}/locations"
payload := strings.NewReader("{\n \"type\": \"address\",\n \"address\": \"1 Example Street, Berlin\",\n \"label\": \"<string>\",\n \"price\": 1500,\n \"currency\": \"usd\",\n \"capacity\": 50000.5\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}/locations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"address\",\n \"address\": \"1 Example Street, Berlin\",\n \"label\": \"<string>\",\n \"price\": 1500,\n \"currency\": \"usd\",\n \"capacity\": 50000.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/events/{uuid}/locations")
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 \"type\": \"address\",\n \"address\": \"1 Example Street, Berlin\",\n \"label\": \"<string>\",\n \"price\": 1500,\n \"currency\": \"usd\",\n \"capacity\": 50000.5\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": "<string>",
"price": 2500,
"currency": "usd",
"type": "address",
"address": "123 Event Street",
"label": "<string>",
"capacity": 50000.5
}
}Add a location to an Event
Adds one location after the Event’s existing locations and returns it with its id. Takes the same shape as an item of locations on POST /v2/events. Every existing location is kept as it is, including one this API version can’t represent.
An Event can have one address and one conferencing location, either an integration or the organizer’s default app; links can repeat. On a published Event, a new location can’t change what guests who already registered are charged, and adding it emails the guests. If the Event changes while the location is being added, nothing is saved and 409 is returned.
The authenticated user must be its owner, one of its hosts, an accepted co-host, or a member of the owning team; an accepted co-host can only add a free location. PBAC permission for team events: calEvent.update. Learn more about API access control at https://cal.com/docs/api-reference/v2/access-control. If accessed using an OAuth access token, the EVENT_WRITE scope is required.
curl --request POST \
--url https://api.cal.com/v2/events/{uuid}/locations \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "address",
"address": "1 Example Street, Berlin",
"label": "<string>",
"price": 1500,
"currency": "usd",
"capacity": 50000.5
}
'import requests
url = "https://api.cal.com/v2/events/{uuid}/locations"
payload = {
"type": "address",
"address": "1 Example Street, Berlin",
"label": "<string>",
"price": 1500,
"currency": "usd",
"capacity": 50000.5
}
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({
type: 'address',
address: '1 Example Street, Berlin',
label: '<string>',
price: 1500,
currency: 'usd',
capacity: 50000.5
})
};
fetch('https://api.cal.com/v2/events/{uuid}/locations', 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}/locations",
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([
'type' => 'address',
'address' => '1 Example Street, Berlin',
'label' => '<string>',
'price' => 1500,
'currency' => 'usd',
'capacity' => 50000.5
]),
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}/locations"
payload := strings.NewReader("{\n \"type\": \"address\",\n \"address\": \"1 Example Street, Berlin\",\n \"label\": \"<string>\",\n \"price\": 1500,\n \"currency\": \"usd\",\n \"capacity\": 50000.5\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}/locations")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"address\",\n \"address\": \"1 Example Street, Berlin\",\n \"label\": \"<string>\",\n \"price\": 1500,\n \"currency\": \"usd\",\n \"capacity\": 50000.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/events/{uuid}/locations")
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 \"type\": \"address\",\n \"address\": \"1 Example Street, Berlin\",\n \"label\": \"<string>\",\n \"price\": 1500,\n \"currency\": \"usd\",\n \"capacity\": 50000.5\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": "<string>",
"price": 2500,
"currency": "usd",
"type": "address",
"address": "123 Event Street",
"label": "<string>",
"capacity": 50000.5
}
}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
- Address
- Link
- Integration
- Organizer Default App
address "address"
1"1 Example Street, Berlin"
Name shown for this location.
100Price for this location, in the currency's smallest unit.
x >= 11500
Cal Pay currency code. Required when price is set.
usd, eur, gbp, cad, aud, chf, nzd, jpy, brl, mxn, inr, sgd, hkd, dkk, nok, sek, pln, czk, huf, ron, bgn, krw, thb, php, myr, idr, try, zar, aed, cop "usd"
Seats at this location. Omit for unlimited. All locations together can have at most 100000 seats.
1 <= x <= 100000Was this page helpful?