# book_appointment Behavior, inputs, outputs and permissions for book_appointment. Source: https://docs.getridian.com/developers/tools/book_appointment/ Language: en Reviewed: 2026-10-06 This reference is generated from the published tool contract. ## Behavior and boundaries Books a slot of an appointment type for another person (the booker). Ridian writes the event into the host's calendar and emails the booker a confirmation with a link to reschedule or cancel. Use a start time returned by find_booking_slots. Send a stable request_id; repeating it returns the same booking instead of booking twice. Confirm name, email and time with the user first. ## Permissions Granted scopes, accounts, calendars and visibility rules limit access. Workspace administrators do not automatically gain access to other users’ accounts. `bookings:write` [Consent and boundaries](https://docs.getridian.com/developers/authentication/) ## Input ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "appointment_type_id": { "type": "string", "minLength": 1, "maxLength": 64, "description": "appointment_type_id from list_appointment_types." }, "start": { "type": "string", "maxLength": 40 }, "booker_name": { "type": "string", "minLength": 1, "maxLength": 200 }, "booker_email": { "type": "string", "maxLength": 320, "format": "email", "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" }, "booker_time_zone": { "type": "string", "maxLength": 64, "description": "IANA time zone of the booker for the confirmation email, e.g. \"Europe/Berlin\"." }, "language": { "description": "Language of the confirmation email. Default de.", "type": "string", "enum": [ "de", "en" ] }, "request_id": { "type": "string", "pattern": "^[A-Za-z0-9_-]{8,128}$", "description": "Stable id for this booking: 8–128 letters, digits, _ or -." } }, "required": [ "appointment_type_id", "start", "booker_name", "booker_email", "booker_time_zone", "request_id" ], "additionalProperties": false } ``` ## Output ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "booking_id": { "type": "string" }, "created": { "type": "boolean" } }, "required": [ "booking_id", "created" ], "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/)