# create_sync Behavior, inputs, outputs and permissions for create_sync. Source: https://docs.getridian.com/developers/tools/create_sync/ Language: en Reviewed: 2026-10-06 This reference is generated from the published tool contract. ## Behavior and boundaries Creates a one-way sync from one of the user's calendars into another, after the user confirmed this specific source, target and detail level in the chat. Call preview_sync first and tell the user what it reports. The same checks run again here, so a preview does not guarantee success. Pass a stable requestId: the same id with the same parameters returns the same sync instead of creating a second one, and the same id with different parameters fails rather than silently creating another. The result is `created_pending_processing`: the pair exists and the engine will start copying; nothing is synchronised yet. Changing rules, reversing direction or deleting a sync is not available here — that happens in the Ridian app, linked as syncsUrl. The ongoing job updates and removes its managed target copies when the corresponding source events change or are deleted. A sync created this way keeps running as its own Ridian job even after this assistant's access is revoked. ## Permissions Granted scopes, accounts, calendars and visibility rules limit access. Workspace administrators do not automatically gain access to other users’ accounts. `sync:read`, `sync:write` [Consent and boundaries](https://docs.getridian.com/developers/authentication/) ## Input ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "sourceCalendarId": { "type": "string", "minLength": 1 }, "targetCalendarId": { "type": "string", "minLength": 1 }, "detailLevel": { "type": "string", "enum": [ "busy_only", "title_and_time", "full_details" ], "description": "How much of each event reaches the target calendar. Ask the user; do not assume." }, "requestId": { "type": "string", "minLength": 8, "maxLength": 100 } }, "required": [ "sourceCalendarId", "targetCalendarId", "detailLevel", "requestId" ], "additionalProperties": false } ``` ## Output ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "ok": { "type": "boolean", "const": true }, "status": { "type": "string", "const": "created_pending_processing" }, "legs": { "type": "number" }, "replayed": { "type": "boolean" }, "syncsUrl": { "type": "string" } }, "required": [ "ok", "status", "legs", "replayed", "syncsUrl" ], "additionalProperties": false } ``` ## Errors and retries Check the tool result for errors. Do not blindly retry writes after a timeout. Check the current resource or send status first. [Error handling](https://docs.getridian.com/developers/errors/)