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

# Luma: Post V1 Events Guests Add

> Add guests to an event, approved by default with one default ticket. Set tickets, approval status and registration answers per guest.

Add guests to an event, approved by default with one default ticket.

> [!NOTE]
>
> Tool ID: `luma_post_v1_events_guests_add`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'luma_post_v1_events_guests_add',
  {
    "event_id": "event_123",
    "guests": [
      {
        "email": "jane.doe@example.com"
      }
    ]
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute luma_post_v1_events_guests_add --input '{
  "event_id": "event_123",
  "guests": [
    {
      "email": "jane.doe@example.com"
    }
  ]
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "skipped": [
      {
        "email": "jane.doe@example.com"
      }
    ]
  }
}
```

Use `deepline describe luma_post_v1_events_guests_add --json` for the latest machine-readable contract.

## Input reference

Add guests to the event. By default, guests are added with the status "Going" (approved) and receive one ticket of the default ticket type. Use the `ticket` or `tickets` parameter to specify custom ticket assignments. Get available ticket types using `/v1/events/ticket-types/list`. Use `approval_status` to add guests as pending approval or on the waitlist instead of immediately approved. Use `registration_answers` on each guest to record answers to the event's registration questions — question IDs come from the `registration_questions` field of Get Event. Guests are added in the background. The response lists any guests that will be skipped because they unsubscribed from your calendar, were removed by an admin, or blocked you.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.event_id` | `string` | Yes | — | Event ID, this usually starts with evt- |
| `payload.guests` | `array` | Yes | — | — |
| `payload.ticket` | `object` | No | — | Optional. Assign a single ticket of the specified type to each guest. Cannot be used with `tickets` parameter. |
| `payload.tickets` | `array` | No | — | Optional. Assign multiple tickets to each guest. Each guest receives all tickets in the array. Use this to add multiple tickets of the same or different types. Cannot be used with `ticket` parameter. |
| `payload.approval_status` | `"approved" \| "pending_approval" \| "waitlist"` | No | — | Optional. Status to assign to each added guest. Defaults to `approved` ("Going"). Use `pending_approval` to add guests for host review, or `waitlist` to add to the event waitlist. To send a soft invite that guests can accept, use `/v1/events/guests/send-invites` instead. Allowed: `approved`, `pending_approval`, `waitlist`. |
| `payload.send_email` | `boolean` | No | — | Optional. Whether Luma should email each added guest. Defaults to true. Set to false if your integration sends its own notifications. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Add guests to the event. By default, guests are added with the status \"Going\" (approved) and receive one ticket of the default ticket type. Use the `ticket` or `tickets` parameter to specify custom ticket assignments. Get available ticket types using `/v1/events/ticket-types/list`. Use `approval_status` to add guests as pending approval or on the waitlist instead of immediately approved. Use `registration_answers` on each guest to record answers to the event's registration questions — question IDs come from the `registration_questions` field of Get Event. Guests are added in the background; the response lists any guests that will be skipped because they unsubscribed from your calendar, were removed by an admin, or blocked you.",
    "properties": {
      "event_id": {
        "type": "string",
        "description": "Event ID, this usually starts with evt-"
      },
      "guests": {
        "type": "array",
        "items": {
          "type": "object",
          "description": "Information about the guests you want to add to the event. If a user already has a name, this will not overwrite their name.",
          "properties": {
            "email": {
              "type": "string"
            },
            "name": {
              "type": [
                "string",
                "null"
              ]
            },
            "registration_answers": {
              "type": [
                "array",
                "null"
              ],
              "description": "Optional. The guest's answers to the event's registration questions. If the guest is already registered with answers, their existing answers are kept.",
              "items": {
                "type": "object",
                "properties": {
                  "question_id": {
                    "type": "string",
                    "description": "ID of one of the event's registration questions. Question IDs are returned in the `registration_questions` field of Get Event."
                  },
                  "value": {
                    "description": "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.",
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "company": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "job_title": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        },
                        "additionalProperties": false
                      }
                    ]
                  }
                },
                "required": [
                  "question_id",
                  "value"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "email"
          ],
          "additionalProperties": false
        }
      },
      "ticket": {
        "type": [
          "object",
          "null"
        ],
        "description": "Optional. Assign a single ticket of the specified type to each guest. Cannot be used with `tickets` parameter.",
        "properties": {
          "event_ticket_type_id": {
            "type": "string"
          }
        },
        "required": [
          "event_ticket_type_id"
        ],
        "additionalProperties": false
      },
      "tickets": {
        "type": [
          "array",
          "null"
        ],
        "description": "Optional. Assign multiple tickets to each guest. Each guest receives all tickets in the array. Use this to add multiple tickets of the same or different types. Cannot be used with `ticket` parameter.",
        "items": {
          "type": "object",
          "properties": {
            "event_ticket_type_id": {
              "type": "string"
            }
          },
          "required": [
            "event_ticket_type_id"
          ],
          "additionalProperties": false
        }
      },
      "approval_status": {
        "type": [
          "string",
          "null"
        ],
        "description": "Optional. Status to assign to each added guest. Defaults to `approved` (\"Going\"). Use `pending_approval` to add guests for host review, or `waitlist` to add to the event waitlist. To send a soft invite that guests can accept, use `/v1/events/guests/send-invites` instead.",
        "enum": [
          "approved",
          "pending_approval",
          "waitlist"
        ]
      },
      "send_email": {
        "type": [
          "boolean",
          "null"
        ],
        "description": "Optional. Whether Luma should email each added guest. Defaults to true. Set to false if your integration sends its own notifications."
      }
    },
    "required": [
      "event_id",
      "guests"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.skipped` | `array` | Yes | — | Guests that won't be added because they unsubscribed from your calendar, were removed or blocked by a calendar admin, or there is a block between you and them. Everyone else in the request is processed. |
| `result.data.skipped[].email` | `string` | Yes | — | — |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "skipped": {
            "type": "array",
            "description": "Guests that won't be added because they unsubscribed from your calendar, were removed or blocked by a calendar admin, or there is a block between you and them. Everyone else in the request is processed.",
            "items": {
              "type": "object",
              "properties": {
                "email": {
                  "type": "string"
                }
              },
              "required": [
                "email"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "skipped"
        ],
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Luma provider guide](https://deepline.com/docs/providers/luma/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


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