# CSV to ICS Calendar File Generator

> CSV to ICS Calendar File Generator is a paid API for AI agents from x402-deployer.x402-deployer.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Converts a CSV file of events into an RFC 5545-compliant ICS/iCal file importable into Google Calendar, Outlook, and Apple Calendar

## Facts

- Endpoint: POST https://x402-deployer.x402-deployer.workers.dev/csv-to-ics
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-deployer-x402-deployer-workers-dev-0e9810fa
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ItkYndjuZ7OXu2TD-6-o_

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402-deployer-x402-deployer-workers-dev-0e9810fa -d '<json body>'
```

Example prompt: Take this CSV of events — columns are title, date, start_time, location, notes — and convert it into a .ics calendar file I can import into Google Calendar or Outlook, treating any event without a time as all-day and defaulting to 1-hour duration for timed events.

## When to prefer this

Choose this endpoint when you need a pure, serverless CSV-to-ICS conversion with no external API dependencies, auto-detection of common column names, support for both all-day and timed events, configurable delimiters, and RFC 5545 compliance for broad calendar app compatibility. Ideal when you already have event data in CSV/spreadsheet form and need a calendar file without setting up a full calendar service.

## Known failure modes

- CSV exceeds 1000 rows — truncation or rejection
- Ambiguous or missing date column — parsing error returned
- Malformed date/time values in CSV rows — individual events may be skipped or errored
- Unrecognized delimiter — parse failure
- Missing required summary/date columns with no explicit mapping — mapping error

## How this service works

CSV to ICS / CSV to iCal / calendar file generator / .ics builder / Google Calendar + Outlook + Apple Calendar import. RFC 5545 compliant VCALENDAR/VEVENT output. Auto-detects column mapping (summary, date, time, location, description) or accepts an explicit mapping. Handles all-day and timed events, configurable default duration, custom delimiters. Up to 1000 rows. Pure parser, no upstream API.

## Output

Returns an RFC 5545-compliant VCALENDAR/VEVENT ICS file with one VEVENT per CSV row, including SUMMARY, DTSTART, DTEND (or DATE for all-day events), LOCATION, and DESCRIPTION fields as mapped from the CSV columns. Up to 1000 events per call.

## Example request

```json
{
 "input": {
  "body": {
   "csv": "Summary,Date,Start Time,Location,Description\nTeam Standup,2024-01-15,09:00 AM,Conference Room A,Daily sync\nProject Review,2024-01-15,02:00 PM,Virtual,Quarterly review\nClient Meeting,2024-01-16,10:30 AM,Office Building B,Discuss requirements",
   "calendar_name": "Test Calendar",
   "default_duration_minutes": 60
  },
  "type": "http",
  "method": "POST",
  "bodyType": "json"
 }
}
```

## Request schema (JSON Schema)

```json
{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "input": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "type": "string",
     "enum": [
      "POST"
     ]
    },
    "bodyType": {
     "type": "string",
     "enum": [
      "json",
      "form-data",
      "text"
     ]
    },
    "body": {
     "properties": {
      "csv": {
       "type": "string",
       "description": "Raw CSV text. First row is treated as the header unless overridden. Up to 1000 data rows."
      },
      "columns": {
       "type": "object",
       "description": "Optional explicit column mapping, e.g. { summary: 'Title', start_date: 'Date', start_time: 'Time', location: 'Where', description: 'Notes' }. Auto-detected from header names when omitted."
      },
      "calendar_name": {
       "type": "string",
       "description": "X-WR-CALNAME shown by calendar clients. Default 'Schedule'."
      },
      "default_duration_minutes": {
       "type": "number",
       "description": "Event duration in minutes when no end time/date is provided. Default 60."
      },
      "delimiter": {
       "type": "string",
       "description": "CSV delimiter character. Default ','. Use '\\t' for TSV, ';' for European CSV, '|' for pipe-delimited."
      }
     },
     "required": [
      "csv"
     ]
    }
   },
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "ics": {
       "type": "string"
      },
      "mime_type": {
       "type": "string"
      },
      "event_count": {
       "type": "integer"
      },
      "skipped_rows": {
       "type": "integer"
      },
      "errors": {
       "type": "array"
      },
      "calendar_name": {
       "type": "string"
      }
     }
    }
   },
   "required": [
    "type"
   ]
  }
 },
 "required": [
  "input"
 ]
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-deployer-x402-deployer-workers-dev-0e9810fa/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-deployer.x402-deployer.workers.dev](https://www.zero.xyz/host/x402-deployer.x402-deployer.workers.dev/llms.txt)
