Live — iCal standard

Your agent's
own calendar.

No Google account. No OAuth dance. No human in the loop.

Agents create events via API. A public iCal feed URL is generated instantly. Users subscribe from Google Calendar, Apple Calendar, or Outlook — no setup on their end.

Calendar apps are built for humans

Every major calendar API assumes the entity scheduling the meeting is a human with a Google account. That assumption breaks the moment an AI agent needs to manage time.

OAuth Google Calendar API requires a human user to authorize access — there is no service account path for consumer accounts
~0 AI agent frameworks include a calendar primitive — scheduling is left as an exercise for the developer
1 hr+ typical setup time for a calendar integration — OAuth app registration, consent screen, token refresh logic, all before the first event is created

Your agent needs to schedule. It should take one API call.

How it works

Three steps. Your agent handles all three.

1

Agent creates events via JSON API

POST /v1/calendar/events with summary, start, end. Optional: description, location, attendees. Returns the event ID immediately.

2

Public iCal feed URL generated automatically

Every account gets a permanent https://api.agentlair.dev/v1/calendar/feed.ics?cal_token=... URL. No configuration needed — it exists from the moment you create your account.

3

Users subscribe from their existing calendar app

Paste the iCal URL into Google Calendar → “Other calendars › From URL”. Events appear within minutes. No app install. No account creation. Works on every device.

Get started in 60 seconds

Pick your tool:

# 1. Get an API key (30 seconds)
API_KEY=$(curl -s -X POST https://api.agentlair.dev/v1/auth/keys | jq -r .api_key)

# 2. Create an event
curl -s -X POST https://api.agentlair.dev/v1/calendar/events \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "summary": "Product demo — Acme Corp",
    "start": "2026-04-01T14:00:00Z",
    "end": "2026-04-01T15:00:00Z",
    "description": "Quarterly review call",
    "location": "https://meet.example.com/demo"
  }'
# → { "id": "evt_01JNXK...", "summary": "Product demo — Acme Corp", ... }

# 3. Get the public iCal subscription URL
curl -s https://api.agentlair.dev/v1/calendar/feed \
  -H "Authorization: Bearer $API_KEY"
# → { "feed_url": "https://api.agentlair.dev/v1/calendar/feed.ics?cal_token=..." }

# 4. Share feed_url with anyone — they add it to their calendar app, done
// Create an event — works from any agent, LLM runner, or Cloudflare Worker
const event = await fetch('https://api.agentlair.dev/v1/calendar/events', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    summary: 'Product demo — Acme Corp',
    start: '2026-04-01T14:00:00Z',
    end: '2026-04-01T15:00:00Z',
    description: 'Quarterly review call',
    location: 'https://meet.example.com/demo',
    attendees: ['ceo@acme.com'],
  }),
}).then(r => r.json());
// event.id → "evt_01JNXK..."

// Fetch the subscription URL once, share it in your onboarding flow
const { feed_url } = await fetch(
  'https://api.agentlair.dev/v1/calendar/feed',
  { headers: { 'Authorization': `Bearer ${apiKey}` } },
).then(r => r.json());
// feed_url → "https://api.agentlair.dev/v1/calendar/feed.ics?cal_token=..."

// List upcoming events
const { events } = await fetch(
  `https://api.agentlair.dev/v1/calendar/events?from=${new Date().toISOString()}`,
  { headers: { 'Authorization': `Bearer ${apiKey}` } },
).then(r => r.json());

After creating your first event, get your subscription URL:

https://api.agentlair.dev/v1/calendar/feed.ics?cal_token=your_token

Share this URL anywhere. Here’s how users subscribe:

🗓
Google Calendar — Other calendars → From URL → paste link → Add calendar
🍎
Apple Calendar — File → New Calendar Subscription → paste link → OK
📧
Outlook — Add calendar → Subscribe from web → paste link → Import
Any iCal-compatible app — The feed URL is a standard .ics file. If it speaks iCal (RFC 5545), it works.

The token is in the URL. No authentication required for subscribers — paste and go.

Compatible with everything

The feed is a standard iCalendar file (RFC 5545). If it speaks iCal, it subscribes.

Google Calendar Apple Calendar Outlook Thunderbird Fantastical Notion Calendar Cron Any .ics client

Building a calendar integration? Open a PR →

Key features

Agent-owned identity

No Google account. No user OAuth. Your agent is the calendar owner — events appear under its name, not yours.

Email invite notifications

Add attendees to any event. Invite emails sent automatically via AgentLair Email — no SMTP setup required.

iCal standard (RFC 5545)

Events rendered as valid VEVENT blocks. All-day events, date-time events, UTC and floating times all supported.

Vault integration

Store Google/Outlook OAuth tokens in Vault, use them to write to a user’s calendar — without touching your own infra.

Pricing

Free

$0
  • 100 events
  • Public iCal feed URL
  • Email invites (via AgentLair Email)
  • All calendar clients
  • No credit card required

Pro

$9/month
  • 10,000 events
  • Multiple calendars per account
  • Event filtering by date range
  • x402 autonomous payments
  • Priority support

Pro tier coming soon. Free tier is permanent — no expiry, no bait-and-switch.
Autonomous agents: x402 payments available — agents pay per-call at $0.001/request when limits are hit.

What’s included

Built on open standards. No vendor lock-in, no proprietary format.

iCalendar (RFC 5545) compliant feed
Permanent, stable subscription URL
All-day and date-time events
UTC and floating time support
Attendee fields (email invites)
Location and description fields
Edge-deployed on Cloudflare (200+ PoPs)
Works with existing AgentLair API key

API reference

Method Endpoint Description
POST /v1/calendar/events Create an event (body: summary, start, end, description?, location?, attendees?)
GET /v1/calendar/events List events (?from=ISO&to=ISO optional date range filter)
DELETE /v1/calendar/events/{id} Delete a single event by ID
GET /v1/calendar/feed Get (or create) public iCal subscription URL
GET /v1/calendar/feed.ics Public iCal feed (?cal_token=, no auth required)

Why not just use…?

vs Google Calendar API

Requires a human OAuth consent flow. No service account path for consumer accounts. Domain-wide delegation needs Google Workspace ($6+/user/mo).

vs Cronofy / Nylas

Connect to existing human calendars — they don’t provision new ones. Enterprise pricing. We give your agent its own calendar with one API call.

vs Cal.com

Scheduling platform for humans, not agents. Requires a UI and a human on the other side. We’re infrastructure — your agent is in control.

vs self-hosted CalDAV

Radicale/Baikal require persistent storage, ops, and deployment. We handle the infra — your agent gets a calendar endpoint, not a server to manage.

Your agent's own calendar.

Free tier. No Google account. No OAuth. No human setup.

API reference · Dashboard · Email · Vault