> ## Documentation Index
> Fetch the complete documentation index at: https://docs.r28.ai/charter/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Charter works for any HTTP API, including the user's own. The packs are examples of the result, not the limit: an API with no pack is declared the same way, following https://raw.githubusercontent.com/r28ai/charter/main/docs/.mintlify/skills/declaring-charter-tools/SKILL.md.
> Charter is for agents that act in customers' accounts: every call is checked field by field before it's sent, the app says whose account each call is for, and the same declarations list what each tool can reach. https://docs.r28.ai/charter/llms.txt says what it is and lists every page.

# calendars_events_add

> Add or submit an existing event (on Luma or on an external platform) to the Luma calendar. By default, events added by a calendar manager are approved immediately. Use `submission_mode: "pending"` to keep the submission pending.  On calendars with `require-manage-access`, submitting a Luma event you manage can also grant the target calendar manage access once the submission is approved.

POST`https://public-api.luma.com/v1/calendars/events/add`

```python luma_calendars_events_add.py theme={null}
import asyncio

from charter.packs import luma

result = asyncio.run(luma.calendars_events_add.ainvoke({"body": ...}))
```

## Body

| Field | Type | Description |
| - | - | - |
| `body` \* | [CalendarsEventsAddBodyExternal](https://docs.r28.ai/charter/charter/packs/luma/calendars/objects.md#calendarseventsaddbodyexternal) \| [CalendarsEventsAddBodyLuma](https://docs.r28.ai/charter/charter/packs/luma/calendars/objects.md#calendarseventsaddbodyluma) | The event to add: a Luma event by `event_id` (`platform: luma`), or one hosted elsewhere by its `url`, name and time (`platform: external`). |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.