Skip to main content
GET
/
v1
/
calendar-events
List calendar events
curl --request GET \
  --url https://api.plane.com/v1/calendar-events \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.plane.com/v1/calendar-events"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.plane.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.plane.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",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$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.plane.com/v1/calendar-events"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

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.plane.com/v1/calendar-events")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.plane.com/v1/calendar-events")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "calendar_events": [
    {
      "id": "cale_K2mP9qR4xL7s",
      "object": "calendar.event",
      "calendar": "cal_cNqYX2J3s9bI2Aa",
      "title": "All Hands Meeting",
      "description": "Monthly company-wide meeting",
      "starts": "2026-04-14T10:00:00Z",
      "ends": "2026-04-14T11:00:00Z",
      "all_day": false,
      "subject": "ent_airfoil",
      "metadata": {},
      "created": "2026-03-10T18:42:11Z",
      "updated": "2026-03-11T09:05:52Z"
    }
  ]
}
Use this endpoint when you need scheduled items for calendar or schedule sync use cases. Results are returned in chronological order, sorted by starts and then by id.

Parameters

calendar
string
Only return events for this calendar ID.
starts
string
Only return events whose end date falls on or after this date. Use an ISO 8601 date such as 2026-04-01.
ends
string
Only return events whose start date falls on or before this date. Use an ISO 8601 date such as 2026-04-30.
limit
number
A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
cursor
string
A value from a previous response that lets you fetch the next page.
starting_after
string
Return results after this calendar event ID.
ending_before
string
Return results before this calendar event ID.
If you send starts or ends, Plane returns an event when any part of it falls inside that date window.

Returns

Returns a dictionary with a calendar_events property that contains an array of Calendar event objects. If no matching events exist, the array is empty.
{
  "calendar_events": [
    {
      "id": "cale_K2mP9qR4xL7s",
      "object": "calendar.event",
      "calendar": "cal_cNqYX2J3s9bI2Aa",
      "title": "All Hands Meeting",
      "description": "Monthly company-wide meeting",
      "starts": "2026-04-14T10:00:00Z",
      "ends": "2026-04-14T11:00:00Z",
      "all_day": false,
      "subject": "ent_airfoil",
      "metadata": {},
      "created": "2026-03-10T18:42:11Z",
      "updated": "2026-03-11T09:05:52Z"
    }
  ]
}