Skip to main content

Invitations

CalendarPipe hosted calendars support full iTIP invitation workflows. Create events with attendees and CalendarPipe handles REQUEST and CANCEL delivery automatically. Attendees receive standard calendar invitations and their RSVP responses route back to your hosted calendar.

Pro Feature

Invitations require a Pro plan and a hosted calendar. View plans and upgrade.

How Invitations Work

The invitation lifecycle follows these steps:

  1. Create event with attendees on a hosted calendar via the API
  2. CalendarPipe sends iTIP REQUEST emails via Resend to each attendee's email address
  3. Attendees receive standard calendar invitations in their email client or calendar app
  4. When attendees RSVP, their responses route back to cal-{feedToken}@in.calendarpipe.com
  5. Poll or receive webhooks to get RSVP status updates in your application

Creating Events with Attendees

To trigger an invitation flow, include an attendees array when creating an event on a hosted calendar:

POST /api/v1/calendars/hosted:{id}/events
Authorization: Bearer `<api_key>`
Content-Type: application/json

{
"title": "Strategy Session",
"start_at": "2026-03-25T10:00:00Z",
"end_at": "2026-03-25T11:00:00Z",
"timezone": "America/New_York",
"attendees": [
{ "email": "alice@example.com", "displayName": "Alice" },
{ "email": "bob@example.com", "displayName": "Bob" }
]
}

Response (201):

{
"data": {
"uid": "abc123-event-uid",
"title": "Strategy Session",
"start_at": "2026-03-25T10:00:00Z",
"end_at": "2026-03-25T11:00:00Z",
"attendees": [
{ "email": "alice@example.com", "displayName": "Alice" },
{ "email": "bob@example.com", "displayName": "Bob" }
]
}
}

CalendarPipe sends an iTIP REQUEST email to each attendee automatically after the event is created. You do not need to trigger delivery separately.

Calendar Email Address

Each hosted calendar has a stable inbound email address in the format:

cal-{feedToken}@in.calendarpipe.com

This address serves two purposes:

  • Outbound: It is the organizer address shown on invitations sent to attendees
  • Inbound: RSVP replies from attendees are routed back to this address and recorded on the hosted calendar
info

If you regenerate the hosted calendar's feed token, the calendarEmail address changes. Existing invitation threads will no longer route back correctly -- attendees who have already received invitations will send replies to the old address. Only regenerate the feed token if necessary.

Cancelling Events

To cancel an event and notify all attendees:

DELETE /api/v1/calendars/hosted:{id}/events/{uid}
Authorization: Bearer `<api_key>`

Response (204): No content. CalendarPipe sends an iTIP CANCEL email to all attendees automatically.

Receiving RSVPs

Once attendees respond to an invitation, there are two ways to receive their RSVP status:

Polling

Query the invitations list for a specific status:

GET /api/v1/hosted-calendars/{id}/invitations?status=pending
Authorization: Bearer `<api_key>`

The status query parameter accepts:

ValueDescription
pendingAwaiting response from attendee
ACCEPTEDAttendee accepted the invitation
DECLINEDAttendee declined the invitation
TENTATIVEAttendee tentatively accepted

Webhooks

For real-time RSVP delivery without polling, register a webhook on the hosted calendar. See the Webhooks guide for registration steps, payload format, and HMAC signature verification.

Responding to Invitations

In agent-to-agent scenarios where your hosted calendar receives an invitation from another organizer, your agent can respond programmatically:

POST /api/v1/hosted-calendars/{id}/invitations/{uid}/respond
Authorization: Bearer `<api_key>`
Content-Type: application/json

{ "status": "ACCEPTED" }

Valid values for status:

ValueDescription
ACCEPTEDAccept the invitation
DECLINEDDecline the invitation
TENTATIVETentatively accept the invitation

Loop Prevention

danger

The organizer email on any event must NOT be a cal-*@in.calendarpipe.com address. CalendarPipe skips internal routing for events where the organizer is a cal-* address to prevent infinite invitation delivery loops. Always use a real external email address or the organizerDisplayName field when creating hosted calendars intended to send invitations.

If you are creating a hosted calendar specifically for invitation sending, set a meaningful organizerDisplayName but ensure the underlying email identity is not a CalendarPipe inbound address.

Next Steps

  • Webhooks -- Register a webhook to receive real-time RSVP notifications instead of polling
  • Hosted Calendars Overview -- Create and manage the hosted calendars that power invitation flows