DocsCalendar Reference
Documentation

Calendar API

List, create, and delete Google Calendar events on a connected account, authenticated with your personal API key.

Overview

Works on any Google account connected from the dashboard. Base URL: https://api.reinterface.com/api/v1. All responses are JSON. Last updated: 2026-07-28.

Every event endpoint accepts an optional calendar_id (from GET /calendar/calendars); omit it to use the account's primary calendar.

Authentication

Identical to the Gmail API: send your personal API key in the x-api-key header. Find it under Dashboard → Settings → API key. connection_id is optional: with one connected account every endpoint defaults to it; with several, pick one via GET /google/accounts.

Auth header
-H "x-api-key: <YOUR_API_KEY>"

List calendars

GET/api/v1/calendar/calendars

List the account's calendars

Request
curl https://api.reinterface.com/api/v1/calendar/calendars \
  -H "x-api-key: <YOUR_API_KEY>"
Response
{
  "calendars": [
    {
      "id": "user@gmail.com",
      "summary": "user@gmail.com",
      "primary": true,
      "accessRole": "owner",
      "timeZone": "Europe/Berlin",
      "color": "#9fe1e7"
    }
  ]
}

List events

GET/api/v1/calendar/events

List events, soonest first

Query params, all optional: max_results (default 10, max 50), time_min (RFC3339 lower bound, e.g. only upcoming events), calendar_id, and connection_id.

Request
curl "https://api.reinterface.com/api/v1/calendar/events?max_results=10&time_min=2026-07-17T00:00:00Z" \
  -H "x-api-key: <YOUR_API_KEY>"
Response
{
  "events": [
    {
      "id": "abc123def456",
      "summary": "Team sync",
      "description": "Weekly catch-up",
      "location": "Meet",
      "start": "2026-07-20T10:00:00+02:00",
      "end": "2026-07-20T10:30:00+02:00",
      "htmlLink": "https://www.google.com/calendar/event?eid=..."
    }
  ]
}

Create an event

POST/api/v1/calendar/events

Create an event

Required: summary, start, end (RFC3339). Optional: description, location, timeZone, calendar_id, connection_id.

Request
curl -X POST https://api.reinterface.com/api/v1/calendar/events \
  -H "x-api-key: <YOUR_API_KEY>" \
  -H "content-type: application/json" \
  -d '{
    "summary": "Team sync",
    "start": "2026-07-20T10:00:00Z",
    "end": "2026-07-20T10:30:00Z",
    "timeZone": "UTC"
  }'
Response
{
  "id": "abc123def456",
  "summary": "Team sync",
  "status": "confirmed",
  "htmlLink": "https://www.google.com/calendar/event?eid=..."
}

Delete an event

DELETE/api/v1/calendar/events/{id}

Delete an event (idempotent)

Request
curl -X DELETE "https://api.reinterface.com/api/v1/calendar/events/abc123def456" \
  -H "x-api-key: <YOUR_API_KEY>"
Response
{
  "success": true,
  "id": "abc123def456",
  "status": "deleted"
}
Deletion is idempotent: deleting an event that is already gone still returns 200, because the intent (the event should not exist) is satisfied either way.

Errors

Errors return { "success": false, "error": { "code", "message" } }.

StatusCodeMeaning
401invalid_api_keyMissing or invalid x-api-key
400invalid_requestMissing required fields
403missing_scopeAccount lacks a Calendar permission, reconnect it
404not_foundconnection_id does not exist or is not yours
404google_account_not_connectedNo connected Google account
502calendar_event_failedGoogle Calendar rejected the request

Endpoint summary

MethodPathPurpose
GET/api/v1/calendar/calendarsList the account's calendars
GET/api/v1/calendar/eventsList calendar events
POST/api/v1/calendar/eventsCreate a calendar event
DELETE/api/v1/calendar/events/{id}Delete a calendar event