Skip to content
DEConsole
DEVELOPERS / DEVELOPERS
View as MarkdownDownload Markdown
Open in ChatGPTOpen in Claude

Page unavailable? Copy its Markdown and paste it into your chat.

write_public_calendar_events

Behavior, inputs, outputs and permissions for write_public_calendar_events.

Reviewed · 2026-10-06 / Ridian

This reference is generated from the published tool contract.

Creates, replaces or deletes up to 100 events in one subscription calendar. upserts replace an event with the same external_id completely; deletes remove events by external_id. Results are per item; one invalid item does not stop the others. Content is public. Subscribers see changes on their next fetch (Google can take up to 24 hours).

Granted scopes, accounts, calendars and visibility rules limit access. Workspace administrators do not automatically gain access to other users’ accounts.

public_calendars:write

Consent and boundaries

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"calendar_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Calendar id from list_public_calendars."
},
"upserts": {
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"external_id": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]{1,128}$",
"description": "Your stable id for the event: 1–128 letters, digits and . _ : -. Writing the same id again replaces the event."
},
"event": {
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"start": {
"type": "string",
"description": "Local \"2027-01-16T10:00\" in the event zone, an ISO timestamp with offset, or a date \"2027-01-16\" for all-day events."
},
"end": {
"description": "Exclusive date for all-day events; otherwise like start. Default: calendar default length.",
"type": "string"
},
"timezone": {
"type": "string",
"maxLength": 64
},
"all_day": {
"type": "boolean"
},
"location": {
"type": "string",
"maxLength": 500
},
"url": {
"description": "https link shown in the event.",
"type": "string",
"maxLength": 2000
},
"description": {
"type": "string",
"maxLength": 65536
},
"status": {
"type": "string",
"enum": [
"confirmed",
"tentative",
"cancelled"
]
},
"show_as": {
"type": "string",
"enum": [
"free",
"busy"
]
},
"categories": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 50
}
},
"alarms": {
"description": "Reminders in minutes before start.",
"maxItems": 3,
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 40320
}
},
"recurrence": {
"type": "object",
"properties": {
"rules": {
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"description": "RRULEs such as \"FREQ=WEEKLY;BYDAY=TH;COUNT=6\". DAILY to YEARLY only."
},
"except_dates": {
"maxItems": 1000,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"rules"
],
"additionalProperties": false
}
},
"required": [
"title",
"start"
],
"additionalProperties": {}
}
},
"required": [
"external_id",
"event"
],
"additionalProperties": false
}
},
"deletes": {
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9._:-]{1,128}$",
"description": "Your stable id for the event: 1–128 letters, digits and . _ : -. Writing the same id again replaces the event."
}
}
},
"required": [
"calendar_id"
],
"additionalProperties": false
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"external_id": {
"type": "string"
},
"status": {
"type": "number"
},
"changed": {
"type": "boolean"
},
"deleted": {
"type": "boolean"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"detail": {
"type": "string"
}
},
"required": [
"code"
],
"additionalProperties": {}
}
},
"required": [
"external_id",
"status"
],
"additionalProperties": false
}
}
},
"required": [
"results"
],
"additionalProperties": false
}

Check the tool result for errors. Do not blindly retry writes after a timeout. Check the current resource or send status first.

Error handling

RIDIAN

Ask the docs

Enter to send · ⇧ Enter for new line

No passwords or calendar contents. Check AI answers against their sources. AI & privacy