# iCalendar API
> Build a valid RFC 5545 iCalendar (.ics) event from simple parameters — and get ready-to-use "add to calendar" links for Google, Outlook, Office 365 and Yahoo. Pass a title, start and end (ISO 8601 or unix timestamps, in UTC) — or a duration in minutes, or an all-day flag — plus optional location, description, URL, organizer, an RRULE recurrence (e.g. FREQ=WEEKLY) and a reminder (a VALARM N minutes before). The service returns the fully-formed .ics text with correct escaping and 75-octet line folding, a base64 data: URI you can drop straight into a download link, and the four calendar deep-links. A second endpoint parses raw .ics text back into structured JSON events. Everything is computed locally with no network calls, so it is fast and deterministic. Built for booking and scheduling flows, event pages, email "add to calendar" buttons, reminders and no-code automations. A calendar-event builder — distinct from date/time math (datetime), public-holiday data (holidays) and the Jewish calendar (hebcal). No upstream key, no cache.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/ical-api/..."
```

## Pricing
- **Free** (Free) — 2,280 calls/Mo, 2 req/s
- **Starter** ($7/Mo) — 45,000 calls/Mo, 8 req/s
- **Pro** ($21/Mo) — 232,000 calls/Mo, 20 req/s
- **Mega** ($56/Mo) — 860,000 calls/Mo, 50 req/s

## Endpoints

### iCalendar

#### `GET /v1/event` — Build an .ics event + calendar links

**Parameters:**
- `title` (query, required, string) — Event title Example: `Team Meeting`
- `start` (query, required, string) — Start (ISO 8601 / unix) Example: `2026-07-01T10:00:00Z`
- `end` (query, optional, string) — End (or use duration) Example: `2026-07-01T11:00:00Z`
- `duration` (query, optional, string) — Minutes (if no end)
- `location` (query, optional, string) — Location
- `description` (query, optional, string) — Description
- `rrule` (query, optional, string) — Recurrence (FREQ=WEEKLY…)
- `reminder` (query, optional, string) — VALARM minutes before
- `all_day` (query, optional, string) — true for date-only

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ical-api/v1/event?title=Team+Meeting&start=2026-07-01T10%3A00%3A00Z&end=2026-07-01T11%3A00%3A00Z"
```

#### `GET /v1/parse` — Parse .ics into JSON events

**Parameters:**
- `ics` (query, required, string) — Raw .ics text Example: `BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
SUMMARY:Sample Event
DTSTART:20260701T100000Z
DTEND:20260701T110000Z
LOCATION:Online
END:VEVENT
END:VCALENDAR`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ical-api/v1/parse?ics=BEGIN%3AVCALENDAR%0AVERSION%3A2.0%0ABEGIN%3AVEVENT%0ASUMMARY%3ASample+Event%0ADTSTART%3A20260701T100000Z%0ADTEND%3A20260701T110000Z%0ALOCATION%3AOnline%0AEND%3AVEVENT%0AEND%3AVCALENDAR"
```

### Meta

#### `GET /v1/meta` — Spec & calendar links

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ical-api/v1/meta"
```


---
Marketplace page: https://www.oanor.com/api/ical-api
OpenAPI spec: https://www.oanor.com/api/ical-api/openapi.json
