List Calendar Events
curl --request GET \
--url https://api.example.com/v1/calendar/eventsimport requests
url = "https://api.example.com/v1/calendar/events"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/calendar/events', 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.example.com/v1/calendar/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/calendar/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/calendar/events")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/calendar/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"events": [
{
"id": "<string>",
"provider": "<string>",
"title": "<string>",
"description": "<string>",
"location": "<string>",
"conference_url": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"all_day": true,
"attendees": [
{}
],
"organizer_email": "<string>",
"contact_ids": [
{}
],
"deal_id": "<string>",
"status": "<string>"
}
]
},
"meta": {}
}Calendar
List Calendar Events
Return a paginated list of calendar events from connected Google or Outlook calendars
GET
/
v1
/
calendar
/
events
List Calendar Events
curl --request GET \
--url https://api.example.com/v1/calendar/eventsimport requests
url = "https://api.example.com/v1/calendar/events"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/calendar/events', 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.example.com/v1/calendar/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/calendar/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/calendar/events")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/calendar/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"events": [
{
"id": "<string>",
"provider": "<string>",
"title": "<string>",
"description": "<string>",
"location": "<string>",
"conference_url": "<string>",
"start_time": "<string>",
"end_time": "<string>",
"all_day": true,
"attendees": [
{}
],
"organizer_email": "<string>",
"contact_ids": [
{}
],
"deal_id": "<string>",
"status": "<string>"
}
]
},
"meta": {}
}Request
Query Parameters
integer
default:"1"
Page number.
integer
default:"25"
Results per page. Maximum 100.
string
ISO 8601 lower bound on
start_time. Defaults to the beginning of the current day in the workspace’s timezone.string
ISO 8601 upper bound on
start_time. Defaults to 30 days after from_date.string
Filter to events that include the given contact as an attendee.
string
Filter to events linked to the given deal.
string
Filter to events where this email is on the attendee list.
Headers
Authorization: Bearer wbk_your_api_key_here
Response
object
Show properties
Show properties
array
Show Event object
Show Event object
string
Event identifier
string
google or microsoftstring
Event title
string
Event description, in plain text
string
Physical or virtual location
string
Meet, Teams, or Zoom URL when present
string
ISO 8601 start time
string
ISO 8601 end time
boolean
Whether this is an all-day event
array
Array of
{ email, name, response_status }string
Organizer email
array
Linked contact UUIDs
string
Linked deal UUID, if any
string
confirmed, tentative, or cancelledobject
Pagination metadata:
page, per_page, and total.X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and X-Request-ID.
curl "https://data.leadlex.com/functions/v1/api-gateway/v1/calendar/events?per_page=50" \
-H "Authorization: Bearer wbk_your_api_key_here"
import requests
API_KEY = "wbk_your_api_key_here"
BASE_URL = "https://data.leadlex.com/functions/v1/api-gateway"
params = {"per_page": 50, "from_date": "2026-04-01T00:00:00Z"}
r = requests.get(
f"{BASE_URL}/v1/calendar/events",
headers={"Authorization": f"Bearer {API_KEY}"},
params=params,
)
for event in r.json()["data"]["events"]:
print(event["title"], event["start_time"])
const url = new URL('https://data.leadlex.com/functions/v1/api-gateway/v1/calendar/events');
url.searchParams.set('per_page', '50');
const res = await fetch(url, { headers: { Authorization: 'Bearer wbk_your_api_key_here' } });
const { data } = await res.json();
console.log(data.events.length);
Example Response
{
"data": {
"events": [
{
"id": "evt_01HYXYZ123",
"provider": "google",
"title": "Intro call with Jane Doe",
"description": "Discuss Series B counsel",
"location": "Google Meet",
"conference_url": "https://meet.google.com/abc-defg-hij",
"start_time": "2026-04-18T15:00:00Z",
"end_time": "2026-04-18T15:30:00Z",
"all_day": false,
"attendees": [
{ "email": "jane@acme.com", "name": "Jane Doe", "response_status": "accepted" },
{ "email": "team@emasex.de", "name": "EMA Sex", "response_status": "accepted" }
],
"organizer_email": "team@emasex.de",
"contact_ids": ["123e4567-e89b-12d3-a456-426614174000"],
"deal_id": null,
"status": "confirmed"
}
]
},
"meta": { "page": 1, "per_page": 50, "total": 14 }
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | invalid_key | Invalid or expired API key |
| 403 | insufficient_permissions | Missing read:calendar permission or no connected calendar |
| 429 | rate_limited | Rate limit exceeded |