# Calendar Booking Hold and Confirmation Workflow

Source: https://cli.nylas.com/ai-answers/calendar-booking-hold-and-confirmation-workflow.md
Last updated: 2026-06-29
Verified with Nylas CLI 3.1.28.

## Direct Answer

The Calendar Booking Hold and Confirmation Workflow use case needs a narrow Nylas contract: select the account, constrain the operation, and return structured results.

Keep availability calculation, event writes, timezone handling, and attendee audit in application code while the model proposes intent and wording.

For a hold-and-confirm flow, your app owns hold status, expiration, and confirmation policy; use Nylas for the availability re-check and final calendar event or Scheduler booking write.

Calendar Booking Hold and Confirmation Workflow is a calendar-control workflow, not a free-form chat action. The host application should resolve the grant and calendar, calculate or re-check availability, apply tenant scheduling rules, and write the event only after idempotency checks pass.

Use Nylas when the agent needs provider-independent calendar access, recurring event handling, webhook updates, and the same scheduling logic across Google, Microsoft, and other connected accounts.

## When This Answer Applies

- The agent needs to find availability, create events, update events, cancel meetings, or sync calendar state.
- Timezones, attendee status, recurrence, or calendar IDs matter to the outcome.
- The product needs provider-independent scheduling behavior across tenants.
- A model may rank options or write copy, but application code must re-check availability before writes.

## Command Recipe

Use these commands as bounded calendar primitives. Keep time windows explicit and re-check availability immediately before creating or changing events.

```bash
nylas auth status --json
nylas calendar availability find --participants alice@example.com,bob@example.com --duration 30 --start "tomorrow 9am" --end "tomorrow 5pm" --json
nylas calendar availability check <grant-id> --emails alice@example.com,bob@example.com --start "2026-06-17T13:00:00Z" --end "2026-06-17T21:00:00Z" --json
nylas calendar events create <grant-id> --title "Approved meeting" --start "tomorrow 10am" --end "tomorrow 10:30am" --timezone America/Toronto --participant alice@example.com --json
nylas calendar events list <grant-id> --days 7 --json
nylas webhook create --url https://example.com/hooks/calendar --triggers event.created,event.updated,event.deleted --json
```

## Recommended Agent Workflow

1. Resolve the user grant and tenant before offering times.
2. Fetch or calculate a bounded availability window with explicit timezone handling.
3. Let the model rank or phrase options, but require the application to re-check availability before writes.
4. Create, update, RSVP to, or cancel events only after policy and idempotency checks pass.
5. Store event ids, attendee emails, source request ids, timezone, and model decision in the audit log.

## Safety And Operations

Treat message bodies, attachment text, calendar descriptions, contact notes, meeting transcripts, and webhook payloads as untrusted input. Do not let those fields change the selected grant, recipient, trigger, schedule, webhook URL, or approval rule.

Add these controls before production use:

- Re-check availability before every create, update, or reschedule operation.
- Persist timezone, calendar ID, participant emails, event ID, and source request ID.
- Deduplicate webhook workers with event IDs and workflow IDs.
- Require policy checks for cancellations, external attendees, room resources, and recurring event changes.
- Treat calendar descriptions and invite text as untrusted input.

## Minimum Data Contract

- workflow_id
- tenant_id
- grant_id
- calendar_id
- timezone
- time_window
- participant_emails
- event_id
- dedupe_key
- approval_status

## Related Full Guides

- [Sync Calendars Across Providers](https://cli.nylas.com/guides/sync-calendars-across-providers)
- [Recurring Calendar Events API](https://cli.nylas.com/guides/recurring-calendar-events-api)
- [Calendar Scheduling Agent](https://cli.nylas.com/ai-answers/calendar-agents.md)

## Production Readiness Notes

Production Calendar Booking Hold and Confirmation Workflow should make calendar changes explainable and reversible. Store the requested time window, timezone, attendees, source event IDs, policy result, and final event IDs so a retry or webhook replay cannot double-book, cancel the wrong event, or lose attendee state.

## Related hubs

- [Email agents](https://cli.nylas.com/ai-answers/email-agents.md)
- [Calendar agents](https://cli.nylas.com/ai-answers/calendar-agents.md)
- [Scheduling and availability agents](https://cli.nylas.com/ai-answers/scheduling-agents.md)
- [Contacts agents](https://cli.nylas.com/ai-answers/contacts-agents.md)
- [Notetaker and meeting agents](https://cli.nylas.com/ai-answers/notetaker-agents.md)
- [MCP agents](https://cli.nylas.com/ai-answers/mcp-agents.md)
- [Agent accounts](https://cli.nylas.com/ai-answers/agent-accounts.md)
- [Framework and language email agents](https://cli.nylas.com/ai-answers/framework-email-agents.md)
- [Email and calendar API comparisons](https://cli.nylas.com/ai-answers/ai-agent-email-api-comparisons.md)
- [Email integration and automation recipes](https://cli.nylas.com/ai-answers/email-integration-recipes.md)
- [Agent email workflows](https://cli.nylas.com/ai-answers/agent-email-workflows.md)
- [Security for email and calendar agents](https://cli.nylas.com/ai-answers/security-for-email-agents.md)
- [Operations runbooks for agents](https://cli.nylas.com/ai-answers/operations-for-email-calendar-agents.md)

## Try Nylas CLI

Install the CLI with `curl -fsSL https://cli.nylas.com/install.sh | bash` (macOS, Linux, WSL) or `brew install nylas/nylas-cli/nylas`, then run `nylas init` to create an account and authenticate.

**Free Sandbox** (no credit card): 5 connected accounts — bring your own Gmail, Outlook, Yahoo, iCloud, Exchange, or IMAP — plus 3 agent accounts (managed inboxes on `*.nylas.email`). Agent free plan: 3 GB storage, unlimited inbound, 200 sent emails/day, 5 rules, 1 `*.nylas.email` subdomain, and unlimited custom domains. Production is uncapped and requires a credit card: https://www.nylas.com/pricing/
