← All platforms

Google

Google Calendar

target_app: "calendar" · endpoint /v1/google/execute · OAuth — connects per end-user automatically

Setup

No credentials to add — connect once via the Google OAuth URL below, which also unlocks Gmail, Contacts, YouTube, and Sheets in the same grant.

Actions

list_events

List the user's upcoming events.

Request body:

{
  "user_id": "...",
  "action": "list_events",
  "payload": { "maxResults": 10 },
  "target_app": "calendar"
}

provider_response.result shape:

{ "items": [{"summary":"...","start":{"dateTime":"..."}}] }

create_event

Create a calendar event.

Request body:

{
  "user_id": "...",
  "action": "create_event",
  "payload": { "summary": "Team sync", "start": "2026-09-10T10:00:00-04:00", "end": "2026-09-10T10:30:00-04:00" },
  "target_app": "calendar"
}

provider_response.result shape:

{ "id": "...", "htmlLink": "https://calendar.google.com/..." }

update_event

Modify an existing event.

Request body:

{
  "user_id": "...",
  "action": "update_event",
  "payload": { "eventId": "...", "summary": "Rescheduled sync", "start": "...", "end": "..." },
  "target_app": "calendar"
}

provider_response.result shape:

{ "id": "...", "summary": "Rescheduled sync" }

delete_event

Delete an event.

Request body:

{
  "user_id": "...",
  "action": "delete_event",
  "payload": { "eventId": "..." },
  "target_app": "calendar"
}

provider_response.result shape:

{} (204 No Content)

Anticipated errors & fixes

400 "No Google token found in Vault... Connect Google first."

Cause: This user_id never completed Google OAuth.

Fix: Send them to /auth/google/connect?user_id=X&callback_url=... .

Works for Gmail but not Calendar for an older connection

Cause: The user connected Google before Calendar was added to the OAuth scope — old tokens don't retroactively gain new permissions.

Fix: Have them reconnect via the Google OAuth flow to get the current, full scope grant.

401 "Unauthorized: Invalid API key."

Cause: Your eConnect Authorization header is missing, malformed, or the key was regenerated/revoked.

Fix: Copy your api_key fresh from the eConnect dashboard and confirm the header reads exactly "Authorization: Bearer <key>".

429 "Too many requests"

Cause: You've exceeded your plan's per-minute rate limit.

Fix: Wait a minute and retry, or upgrade your plan for a higher per-minute limit.

429 "Monthly API limit exceeded"

Cause: You've used your plan's full monthly request allowance.

Fix: Wait for your next billing cycle reset, or upgrade to a plan with a higher monthly limit.

← Back to all platforms