---
title: Unified Calendar API — Truto Unified API
slug: calendar
canonical: "https://truto.one/unified-apis/calendar/"
---

# Scheduling Unified API

Integrate Scheduling data across 5 providers with one API. 7 normalized resources, real-time pass-through, fully customizable.

**Base URL:** `https://api.truto.one/unified/calendar`  
**Resources:** 7  
**Integrations:** 5

## Resources

### Attachments

Represents an attachment associated with an event. (7 fields)

- `id` (string) — The unique identifier of the attachment.
- `name` (string) — The name of the attachment.
- `event` (object) — The event associated with the attachment.
- `mime_type` (string) — The MIME type of the attachment.
- `url` (string) — The URL of the attachment.
- `created_at` (string) — The date when the attachment was created.
- `updated_at` (string) — The date when the attachment was updated.

### Availability

Represents the availability of a person in a time period. (6 fields)

- `calendar` (object) — The calendar associated with the availability.
- `email` (string) — The email of the person associated with the availability.
- `start_time` (string) — The start date and time of the availability slot.
- `end_time` (string) — The end date and time of the availability slot.
- `timezone` (string) — The timezone of the availability slot.
- `availability` (string) — The availability of the user during the time period of the availability slot.

### Calendars

Represents a calendar of a user. Can have multiple events associated with it. (12 fields)

- `id` (string) — The unique identifier of the calendar.
- `name` (string) — The name of the calendar.
- `description` (string) — The description of the calendar.
- `location` (object) — The location of the calendar.
- `status` (string) — The status of the calendar.
- `visibility` (string) — The visibility of the calendar.
- `is_default` (boolean) — Indicates if the calendar is the default calendar of the user.
- `timezone` (string) — The timezone of the calendar.
- `access_role` (object) — The access role on the calendar for the authenticated user.
- `colors` (object) — The colors associated with the calendar.
- `created_at` (string) — The date when the calendar was created.
- `updated_at` (string) — The date when the calendar was updated.

### Contacts

 (13 fields)

- `id` (string) — The contact's unique identifier
- `first_name` (string) — The contact's first name
- `middle_name` (string) — The contact's middle name
- `last_name` (string) — The contact's last name
- `name` (string) — The contact's full name
- `title` (string) — The contact's job title
- `addresses` (array) — 
- `email_addresses` (array) — 
- `phone_numbers` (array) — 
- `tags` (array) — The contact's tags
- `last_activity_at` (string) — The date and time of the contact's last activity
- `created_at` (string) — The date and time of the contact's creation
- `updated_at` (string) — The date and time of the contact's last update

### Event Types

 (14 fields)

- `id` (string) — Unique identifier of the Event Type
- `name` (string) — Slug or unique readable name of the Event Type
- `label` (string) — Human readable name of the Event Type
- `status` (string) — Status of the Event Type
- `urls` (array) — URLs associated with the Event Type
- `color` (string) — The color associated with this Event Type
- `duration` (number) — The length of the Event scheduled using this Event Type in minutes
- `description` (string) — The description of the Event Type
- `allow_scheduling` (boolean) — Whether scheduling an Event is allowed using this Event Type
- `position` (number) — The position of the Event Type on a listing page
- `form_fields` (array) — Form fields associated with the Event Type
- `locations` (array) — The location choices associated with the Event Type
- `created_at` (string) — The date and time at which this Event Type was created
- `updated_at` (string) — The date and time at which this Event Type was last modified

### Events

Events are the time-bound tasks that are associated with a calendar. (29 fields)

- `id` (string) — The unique identifier of the event.
- `calendar` (object) — The calendar associated with the event.
- `title` (string) — The title of the event.
- `description` (string) — The description of the event.
- `location` (object) — The location of the event.
- `timezone` (string) — The timezone of the event.
- `start_time` (string) — The date and time when the event starts.
- `end_time` (string) — The date and time when the event ends.
- `status` (string) — The status of the event.
- `attendees` (array) — The attendees associated with the event.
- `created_by` (object) — The person who created the event.
- `organized_by` (object) — The person who created the event.
- `type` (string) — The type of the event.
- `availability` (string) — The availability of the user during the time period of the event.
- `visibility` (string) — The visibility of the event.
- `identifiers` (object) — The identifiers associated with the event.
- `is_locked` (boolean) — Indicates if the event is locked and cannot be modified.
- `urls` (object) — The URLs associated with the event.
- `is_recurring` (boolean) — Indicates if the event is recurring.
- `recurrence` (array) — The recurrence of the event. List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545.
- `parent_event` (object) — The parent event of a recurring event.
- `has_attachments` (boolean) — Indicates if the event has attachments.
- `attachments` (array) — The attachments associated with the event.
- `guests_can_invite_others` (boolean) — Indicates if guests can invite others to the event.
- `guests_can_modify` (boolean) — Indicates if guests can modify the event.
- `guests_can_see_other_guests` (boolean) — Indicates if guests can see other guests of the event.
- `event_type` (object) — The event type object associated with the event.
- `created_at` (string) — The date when the event was created.
- `updated_at` (string) — The date when the event was updated.

### Users

The User object represents a User. (22 fields)

- `id` (string) — The unique identifier for a user
- `external_id` (string) — The external identifier for a user. This is set when the SCIM API is being used.
- `identifiers` (object) — The identifiers of the user.
- `first_name` (string) — The first name of the user
- `last_name` (string) — The last name of the user
- `title` (string) — The title of the user
- `name` (string) — The name of the user
- `username` (string) — The username of the user
- `emails` (array) — The emails of the user
- `phones` (array) — The phones of the user
- `status` (string) — The status of the user. If no clear mapping is available, then the raw value is returned.
- `roles` (array) — The roles of the user
- `user_type` (string) — The type of user
- `licenses` (array) — The licenses of the user or the products the user has access to
- `groups` (array) — The groups of the user
- `avatar` (string) — The avatar of the user
- `timezone` (string) — The timezone of the user
- `languages` (array) — The languages preferred by the user
- `bio` (string) — The bio of the user. Usually a short description set by the user about them.
- `created_at` (string) — The date and time the user was created
- `updated_at` (string) — The date and time the user was last updated
- `urls` (array) — The URLs of the user

## Supported integrations

- [Cal.com](https://truto.one/integrations/detail/calcom/)
- [Calendly](https://truto.one/integrations/detail/calendly/)
- [Google](https://truto.one/integrations/detail/google/)
- [Google Calendar](https://truto.one/integrations/detail/googlecalendar/)
- [Outlook Calendar](https://truto.one/integrations/detail/outlookcalendar/)

## Related reading

- [The Best Unified Calendar API for B2B SaaS and AI Agents (2026)](https://truto.one/blog/the-best-unified-calendar-api-for-b2b-saas-and-ai-agents-2026/) — A technical guide to choosing a unified calendar API in 2026. Compare real-time sync trade-offs, Google/Microsoft quirks, and MCP for AI agents.
- [What is OAuth Token Management? The B2B SaaS Guide](https://truto.one/blog/what-is-oauth-token-management-the-b2b-saas-guide/) — OAuth token management is a distributed systems problem. Learn how to handle concurrent refreshes, proactive scheduling, and enterprise-grade security at scale for B2B SaaS.
- [How to Integrate Multiple Calendar Services: Architecture Guide for SaaS](https://truto.one/blog/how-to-integrate-multiple-calendar-services-a-guide-for-saas-pms/) — Learn how to integrate Google Calendar, Outlook, and Calendly into your SaaS product. Compare direct builds, sync engines, and pass-through unified APIs with real cost and complexity data.
- [Connect Ashby to ChatGPT: Manage Hiring Pipelines & Candidate Data](https://truto.one/blog/connect-ashby-to-chatgpt-manage-hiring-pipelines-candidate-data/) — Learn how to connect Ashby to ChatGPT using a managed MCP server. Automate candidate sourcing, application updates, and interview scheduling without custom code.
