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.