> ## 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.

# Objects

> Every object and enum the Events tools accept.

## Model tree

[GeoAddressJsonManual](#geoaddressjsonmanual)[GeoAddressJsonGoogle](#geoaddressjsongoogle)[GeoAddressJsonLookup](#geoaddressjsonlookup)[RegistrationQuestionAgreeCheck](#registrationquestionagreecheck)[Source](#source)[RegistrationQuestionCompany](#registrationquestioncompany)[Source](#source)[RegistrationQuestionGithub](#registrationquestiongithub)[Source](#source)[RegistrationQuestionInstagram](#registrationquestioninstagram)[Source](#source)[RegistrationQuestionLinkedin](#registrationquestionlinkedin)[Source](#source)[RegistrationQuestionPhoneNumber](#registrationquestionphonenumber)[Source](#source)[RegistrationQuestionSelect](#registrationquestionselect)[Source](#source)[RegistrationQuestionTelegram](#registrationquestiontelegram)[Source](#source)[RegistrationQuestionText](#registrationquestiontext)[Source](#source)[RegistrationQuestionTwitter](#registrationquestiontwitter)[Source](#source)[RegistrationQuestionUrl](#registrationquestionurl)[Source](#source)[RegistrationQuestionYoutube](#registrationquestionyoutube)[Source](#source)[RegistrationQuestionTerms](#registrationquestionterms)[TermsText](#termstext)[TermsLink](#termslink)[FeedbackEmail](#feedbackemail)[TicketTypeCreateInput](#tickettypecreateinput)[EventTaxConfig](#eventtaxconfig)[TicketsToAddItem](#ticketstoadditem)[EventsGuestsSendInvitesGuest](#eventsguestssendinvitesguest)[EventsGuestsAddGuest](#eventsguestsaddguest)[RegistrationAnswerInput](#registrationanswerinput)[RegistrationAnswerInputValue](#registrationanswerinputvalue)[Ticket](#ticket)[DiscountPercent](#discountpercent)[DiscountAmount](#discountamount)[BlastRecipientGroupInput](#blastrecipientgroupinput)

## GeoAddressJsonManual

Stores the address text as-is, without geocoding.

| Field | Type | Description |
| - | - | - |
| `type` \* | `string` | — |
| `address` \* | `string` | — |

## GeoAddressJsonGoogle

Resolves a Google Maps Place ID into a full address.

| Field | Type | Description |
| - | - | - |
| `type` \* | `string` | — |
| `placeId` \* | `string` | — |
| `description` | `string` | Extra directions shown alongside the address, e.g. "Suite 36" or "Enter through the side door". |

## GeoAddressJsonLookup

Searches Google Maps for `query` and uses the top result. If nothing matches, the query is stored as a manual address.

| Field | Type | Description |
| - | - | - |
| `type` \* | `string` | — |
| `query` \* | `string` | min length 1 |
| `description` | `string` | Extra directions shown alongside the address, e.g. "Suite 36" or "Enter through the side door". |

## RegistrationQuestionAgreeCheck

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_agree-check`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## Source

Declared inline in the spec: `RegistrationQuestionAgreeCheck.source`.

| Field | Type | Description |
| - | - | - |
| `type` \* | `string` | — |
| `calendarApiId` \* | `string` | — |
| `questionId` \* | `string` | — |

## RegistrationQuestionCompany

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_company`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |
| `collectJobTitle` | `boolean` | — |
| `jobTitleLabel` | `string` | — |

## RegistrationQuestionGithub

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_github`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionInstagram

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_instagram`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionLinkedin

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_linkedin`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionPhoneNumber

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_phone-number`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionSelect

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_select`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |
| `options` \* | `string`\[] | max 250 items |
| `multiple` | `boolean` | When true, guests can pick more than one option. |

## RegistrationQuestionTelegram

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_telegram`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionText

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_text`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |
| `multiline` | `boolean` | When true, guests get a multi-line text area. |

## RegistrationQuestionTwitter

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_twitter`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionUrl

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_url`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionYoutube

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_youtube`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `source` | [Source](#source) | Send `null` to detach a library copy so it no longer follows the library. |
| `questionType` \* | `string` | — |

## RegistrationQuestionTerms

Declared inline in the spec: `RegistrationQuestion.RegistrationQuestion_terms`.

| Field | Type | Description |
| - | - | - |
| `id` \* | `string` | — |
| `label` \* | `string` | — |
| `required` \* | `boolean` | — |
| `questionType` \* | `string` | — |
| `terms` \* | [TermsText](#termstext) \| [TermsLink](#termslink) | — |

## TermsText

Declared inline in the spec: `RegistrationQuestionTerms.terms_text`.

| Field | Type | Description |
| - | - | - |
| `contentType` \* | `string` | — |
| `contentMd` \* | `string` | Markdown content for the terms. Luma converts this to rich text internally. |
| `collectSignature` \* | `boolean` | — |
| `requireReview` | `boolean` | When true, guests must open the hosted terms before accepting. |

## TermsLink

Declared inline in the spec: `RegistrationQuestionTerms.terms_link`.

| Field | Type | Description |
| - | - | - |
| `contentType` \* | `string` | — |
| `url` \* | `string` | — |
| `collectSignature` \* | `boolean` | — |

## FeedbackEmail

Settings for the post-event feedback email sent to guests. If not specified on create, inherits from calendar defaults.

| Field | Type | Description |
| - | - | - |
| `enabled` \* | `boolean` | Whether to send the feedback email. |
| `delay` | `string` | How long after the event ends to send the feedback email. Defaults to PT0M (immediately). Maximum is P30D. A negative duration (e.g. -PT30M) sends it before the event ends — at most P1D before, and never before the event starts. |

## TicketTypeCreateInput

`TicketTypeCreateInput` in the spec.

| Field | Type | Description |
| - | - | - |
| `name` \* | `string` | min length 1; max length 30 |
| `requireApproval` | `boolean` | — |
| `isHidden` | `boolean` | — |
| `description` | `string` | max length 1000 |
| `validStartAt` | `string` | ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z ISO 8601 Date. For example, 2025-09-01 |
| `validEndAt` | `string` | ISO 8601 Datetime. For example, 2022-10-19T03:27:13.673Z ISO 8601 Date. For example, 2025-09-01 |
| `maxCapacity` | `number` | — |
| `maxPerGuest` | `number` | Luma Pro calendars only. The most tickets of this type each guest can hold, across all their registrations. `null` means no limit. |
| `type` \* | `"free" \| "paid"` | — |
| `cents` | `integer` | Price in the currency's minor unit (e.g. 2500 for \$25.00). Required for paid ticket types. ≥ 0; ≤ 9007199254740991 |
| `currency` | `string` | ISO 4217 currency code like `usd`. Required for paid ticket types. |
| `isFlexible` | `boolean` | Pay-what-you-want pricing: guests choose an amount of at least `min_cents`. |
| `minCents` | `integer` | Minimum amount for pay-what-you-want pricing, in the currency's minor unit. ≥ 0; ≤ 9007199254740991 |

## EventTaxConfig

`EventTaxConfig` in the spec.

| Field | Type | Description |
| - | - | - |
| `taxPercent` \* | `number` | — |
| `taxName` \* | `string` | min length 2; max length 30 |

## TicketsToAddItem

Declared inline in the spec: `EventsGuestsUpdateTicketsRequest.tickets_to_addItem`.

| Field | Type | Description |
| - | - | - |
| `eventTicketTypeId` \* | `string` | Ticket type ID, this usually starts with ttype- |

## EventsGuestsSendInvitesGuest

Declared inline in the spec: `EventsGuestsSendInvitesRequest.guest`.

| Field | Type | Description |
| - | - | - |
| `email` \* | `string` | — |
| `name` | `string` | — |

## EventsGuestsAddGuest

Information about the guests you want to add to the event. If a user already has a name, this will not overwrite their name.

| Field | Type | Description |
| - | - | - |
| `email` \* | `string` | — |
| `name` | `string` | — |
| `registrationAnswers` | [RegistrationAnswerInput](#registrationanswerinput)\[] | Optional. The guest's answers to the event's registration questions. If the guest is already registered with answers, their existing answers are kept. |

## RegistrationAnswerInput

`RegistrationAnswerInput` in the spec.

| Field | Type | Description |
| - | - | - |
| `questionId` \* | `string` | ID of one of the event's registration questions. Question IDs are returned in the `registration_questions` field of Get Event. |
| `value` \* | `string` \| `boolean` \| `string`\[] \| [RegistrationAnswerInputValue](#registrationanswerinputvalue) | The guest's answer. Use a string for `text` (including multiline text), `select` without `multiple: true`, `url`, `phone-number`, and social handles; an array of strings for `select` with `multiple: true`; a boolean for `agree-check`; and an object with `company` and `job_title` for `company` questions. |

## RegistrationAnswerInputValue

Declared inline in the spec: `RegistrationAnswerInput.value`.

| Field | Type | Description |
| - | - | - |
| `company` | `string` | — |
| `jobTitle` | `string` | — |

## Ticket

Declared inline in the spec: `EventsGuestsAddRequest.ticket`.

| Field | Type | Description |
| - | - | - |
| `eventTicketTypeId` \* | `string` | — |

## DiscountPercent

Declared inline in the spec: `EventsCouponsCreateRequest.discount_percent`.

| Field | Type | Description |
| - | - | - |
| `discountType` \* | `string` | — |
| `percentOff` \* | `number` | ≥ 0; ≤ 100 |

## DiscountAmount

Declared inline in the spec: `EventsCouponsCreateRequest.discount_amount`.

| Field | Type | Description |
| - | - | - |
| `discountType` \* | `string` | — |
| `centsOff` \* | `number` | ≥ 0 |
| `currency` \* | [Currency](#currency) | — |

## BlastRecipientGroupInput

`BlastRecipientGroupInput` in the spec.

| Field | Type | Description |
| - | - | - |
| `status` \* | [BlastRecipientGroupInputStatus](#blastrecipientgroupinputstatus) | `approved` means going; `checked_in` means checked in at the event. |
| `eventTicketTypeId` | `string` | Only guests holding a valid ticket of this type. Omit to reach every ticket type. Can't be combined with `invited`, since invitees hold no tickets. |

## Currency

| Value |
| - |
| `solana_sol` |
| `solana_usdc` |
| `aed` |
| `afn` |
| `all` |
| `amd` |
| `ang` |
| `aoa` |
| `ars` |
| `aud` |
| `awg` |
| `azn` |
| `bam` |
| `bbd` |
| `bdt` |
| `bgn` |
| `bhd` |
| `bif` |
| `bmd` |
| `bnd` |
| `bob` |
| `brl` |
| `bsd` |
| `bwp` |
| `byn` |
| `bzd` |
| `cad` |
| `cdf` |
| `chf` |
| `clp` |
| `cny` |
| `cop` |
| `crc` |
| `cve` |
| `czk` |
| `djf` |
| `dkk` |
| `dop` |
| `dzd` |
| `egp` |
| `etb` |
| `eur` |
| `fjd` |
| `fkp` |
| `gbp` |
| `gel` |
| `ghs` |
| `gip` |
| `gmd` |
| `gnf` |
| `gtq` |
| `gyd` |
| `hkd` |
| `hnl` |
| `htg` |
| `huf` |
| `idr` |
| `ils` |
| `inr` |
| `isk` |
| `jmd` |
| `jod` |
| `jpy` |
| `kes` |
| `kgs` |
| `khr` |
| `kmf` |
| `krw` |
| `kwd` |
| `kyd` |
| `kzt` |
| `lak` |
| `lbp` |
| `lkr` |
| `lrd` |
| `lsl` |
| `mad` |
| `mdl` |
| `mga` |
| `mkd` |
| `mmk` |
| `mnt` |
| `mop` |
| `mur` |
| `mvr` |
| `mwk` |
| `mxn` |
| `myr` |
| `mzn` |
| `nad` |
| `ngn` |
| `nio` |
| `nok` |
| `npr` |
| `nzd` |
| `omr` |
| `pab` |
| `pen` |
| `pgk` |
| `php` |
| `pkr` |
| `pln` |
| `pyg` |
| `qar` |
| `ron` |
| `rsd` |
| `rub` |
| `rwf` |
| `sar` |
| `sbd` |
| `scr` |
| `sek` |
| `sgd` |
| `shp` |
| `sle` |
| `sos` |
| `srd` |
| `std` |
| `szl` |
| `thb` |
| `tjs` |
| `tnd` |
| `top` |
| `try` |
| `ttd` |
| `twd` |
| `tzs` |
| `uah` |
| `ugx` |
| `usd` |
| `uyu` |
| `uzs` |
| `vnd` |
| `vuv` |
| `wst` |
| `xaf` |
| `xcd` |
| `xof` |
| `xpf` |
| `yer` |
| `zar` |
| `zmw` |

## BlastRecipientGroupInputStatus

| Value |
| - |
| `approved` |
| `checked_in` |
| `pending_approval` |
| `waitlist` |
| `invited` |

## Visibility

| Value |
| - |
| `public` |
| `members-only` |
| `private` |

## SortDirection

| Value |
| - |
| `asc` |
| `desc` |
| `asc nulls last` |
| `desc nulls last` |

## ApprovalStatus

| Value |
| - |
| `approved` |
| `session` |
| `pending_approval` |
| `invited` |
| `declined` |
| `waitlist` |

## SortColumn

| Value |
| - |
| `name` |
| `email` |
| `created_at` |
| `registered_at` |
| `checked_in_at` |

## Font

| Value |
| - |
| `alternate` |
| `alverata` |
| `avant-garde` |
| `beaufort` |
| `berkeley` |
| `blithe` |
| `caslon` |
| `degular` |
| `departure` |
| `factoria` |
| `futura` |
| `garamond` |
| `geist-mono` |
| `google` |
| `ivy-mode` |
| `ivy-presto` |
| `museo` |
| `neuzeit` |
| `new-spirit` |
| `poster` |
| `roc-grotesk` |
| `season` |
| `snpro` |
| `strenuous` |
| `pearl` |

## Theme

| Value |
| - |
| `standard` |
| `cross` |
| `diamond` |
| `falling-leaves` |
| `fireworks` |
| `floral` |
| `grain-dark` |
| `grain-light` |
| `grid` |
| `bats` |
| `holiday-diwali` |
| `holiday-foliage` |
| `holiday-hanukkah` |
| `holiday-pie` |
| `holiday-santa` |
| `holiday-sweater` |
| `holiday-turkey` |
| `hypnotic` |
| `celebrate-dark` |
| `celebrate-light` |
| `clouds` |
| `impressionist` |
| `starry` |
| `aurora` |
| `rain-dark` |
| `rain-light` |
| `arcade` |
| `seaside-dark` |
| `seaside-light` |
| `paper-dark` |
| `paper-light` |
| `tiles-dark` |
| `tiles-light` |
| `rothko-dark` |
| `rothko-light` |
| `riso-dark` |
| `riso-light` |
| `pegboard-dark` |
| `pegboard-light` |
| `glass-dark` |
| `glass-light` |
| `knit-dark` |
| `knit-light` |
| `denim-dark` |
| `denim-light` |
| `banknote-dark` |
| `banknote-light` |
| `life` |
| `matrix` |
| `particles-bokeh` |
| `particles-champagne` |
| `plus` |
| `iridescent-dark` |
| `iridescent-light` |
| `polkadot` |
| `pool-dark` |
| `pool-light` |
| `snake` |
| `blocks` |
| `snow-dark` |
| `snow-light` |
| `space-war` |
| `sunny-shades` |
| `tamagotchi` |
| `warp` |
| `wave` |
| `zigzag` |

## Status

| Value |
| - |
| `approved` |
| `declined` |
| `pending_approval` |
| `waitlist` |

## EventsGuestsAddApprovalStatus

| Value |
| - |
| `approved` |
| `pending_approval` |
| `waitlist` |

## AccessLevel

| Value |
| - |
| `none` |
| `check-in` |
| `manager` |


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