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-08-08.
Every event endpoint accepts an optional calendar_id (from GET /calendar/calendars); omit it to use the account's primary calendar.
Authentication
Requests carry a short-lived access token, not your API key. POST your personal key to /api/v1/token once, then send the token it returns in the Authorization header for the next hour. Find your key under Dashboard → Settings → API keys. connection_id is optional: with one connected account every endpoint defaults to it; with several, pick one via GET /google/accounts.
curl -X POST https://api.reinterface.com/api/v1/token \
-H "x-api-key: <YOUR_API_KEY>"
# {"access_token":"eyJ...","token_type":"Bearer","expires_in":3600}-H "Authorization: Bearer <ACCESS_TOKEN>"List calendars
/api/v1/calendar/calendarsList the account's calendars
curl https://api.reinterface.com/api/v1/calendar/calendars \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"calendars": [
{
"id": "user@gmail.com",
"summary": "user@gmail.com",
"primary": true,
"accessRole": "owner",
"timeZone": "Europe/Berlin",
"color": "#9fe1e7"
}
]
}List events
/api/v1/calendar/eventsList 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.
curl "https://api.reinterface.com/api/v1/calendar/events?max_results=10&time_min=2026-07-17T00:00:00Z" \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"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
/api/v1/calendar/eventsCreate an event
Required: summary, start, end (RFC3339). Optional: description, location, timeZone, calendar_id, connection_id.
curl -X POST https://api.reinterface.com/api/v1/calendar/events \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"summary": "Team sync",
"start": "2026-07-20T10:00:00Z",
"end": "2026-07-20T10:30:00Z",
"timeZone": "UTC"
}'{
"id": "abc123def456",
"summary": "Team sync",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=..."
}Delete an event
/api/v1/calendar/events/{id}Delete an event (idempotent)
curl -X DELETE "https://api.reinterface.com/api/v1/calendar/events/abc123def456" \
-H "Authorization: Bearer <ACCESS_TOKEN>"{
"success": true,
"id": "abc123def456",
"status": "deleted"
}Errors
Errors return { "success": false, "error": { "code", "message" } }.
| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized | Missing, invalid or expired access token |
| 400 | invalid_request | Missing required fields |
| 403 | missing_scope | Account lacks a Calendar permission, reconnect it |
| 404 | not_found | connection_id does not exist or is not yours |
| 404 | google_account_not_connected | No connected Google account |
| 502 | calendar_event_failed | Google Calendar rejected the request |
Endpoint summary
| Method | Path | Purpose |
|---|---|---|
| GET | /api/v1/calendar/calendars | List the account's calendars |
| GET | /api/v1/calendar/events | List calendar events |
| POST | /api/v1/calendar/events | Create a calendar event |
| DELETE | /api/v1/calendar/events/{id} | Delete a calendar event |