> ## 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 Update Tickets

> Add or remove tickets from an existing guest. Includes SDK V2 guidance, input constraints, response fields, and Deepline credit cost.

Add or remove tickets from an existing guest.

<Info>
  Tool ID: `luma_post_v1_events_guests_update_tickets`
</Info>

## Run this action

Use the TypeScript SDK for a single call. Put `ctx.tools.execute(...)` inside a Play when the call should be durable, scheduled, or run across a CSV.

```ts theme={null}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'luma_post_v1_events_guests_update_tickets',
  {
    "event_id": "event_123",
    "guest_id": "guest_123"
  },
);

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

### CLI

```bash theme={null}
deepline tools execute luma_post_v1_events_guests_update_tickets --input '{
  "event_id": "event_123",
  "guest_id": "guest_123"
}' --json
```

## Example response

The static output schema is not detailed enough to generate a reliable example. Use `deepline tools get luma_post_v1_events_guests_update_tickets --json` for the complete live contract.

## Input reference

Add or remove tickets from an existing guest. This is an administrative operation: added tickets are complimentary, removed tickets are invalidated, and no payment or refund is processed. You can’t change tickets for guests with pending payment holds. Administrative ticket changes can exceed event or ticket-type capacity.

| Name                           | Type      | Required | Default | Details                                                                                                                                                                                                                                             |
| ------------------------------ | --------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payload.event_id`             | `string`  | Yes      | —       | Event ID, this usually starts with evt-                                                                                                                                                                                                             |
| `payload.guest_id`             | `string`  | Yes      | —       | Guest identifier — the guest ID (gst-), a ticket key, a guest key (g-), or the user's email.                                                                                                                                                        |
| `payload.ticket_ids_to_remove` | `array`   | No       | `[]`    | Existing ticket IDs to invalidate. Removing tickets does not issue a refund, and at least one valid ticket must remain on the guest.                                                                                                                |
| `payload.tickets_to_add`       | `array`   | No       | `[]`    | Complimentary tickets to grant. Each entry creates a new \$0 administrative ticket, even when the ticket type is normally paid.                                                                                                                     |
| `payload.send_email`           | `boolean` | No       | —       | Optional. Whether Luma may email the guest about the ticket change. Defaults to true and still respects their notification preferences. This only controls email — the guest still gets an in-app notification, and push follows their preferences. |

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

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Add or remove tickets from an existing guest. This is an administrative operation: added tickets are complimentary, removed tickets are invalidated, and no payment or refund is processed. You can’t change tickets for guests with pending payment holds. Administrative ticket changes can exceed event or ticket-type capacity.",
    "properties": {
      "event_id": {
        "type": "string",
        "description": "Event ID, this usually starts with evt-"
      },
      "guest_id": {
        "type": "string",
        "description": "Guest identifier — the guest ID (gst-), a ticket key, a guest key (g-), or the user's email."
      },
      "ticket_ids_to_remove": {
        "type": "array",
        "description": "Existing ticket IDs to invalidate. Removing tickets does not issue a refund, and at least one valid ticket must remain on the guest.",
        "default": [],
        "items": {
          "type": "string",
          "description": "Ticket ID, this usually starts with tkt-"
        }
      },
      "tickets_to_add": {
        "type": "array",
        "description": "Complimentary tickets to grant. Each entry creates a new $0 administrative ticket, even when the ticket type is normally paid.",
        "default": [],
        "items": {
          "type": "object",
          "properties": {
            "event_ticket_type_id": {
              "type": "string",
              "description": "Ticket type ID, this usually starts with ttype-"
            }
          },
          "required": [
            "event_ticket_type_id"
          ],
          "additionalProperties": false
        }
      },
      "send_email": {
        "type": [
          "boolean",
          "null"
        ],
        "description": "Optional. Whether Luma may email the guest about the ticket change. Defaults to true and still respects their notification preferences. This only controls email — the guest still gets an in-app notification, and push follows their preferences."
      }
    },
    "required": [
      "event_id",
      "guest_id"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name          | Type     | Required | Default | Details                                        |
| ------------- | -------- | -------- | ------- | ---------------------------------------------- |
| `result.data` | `object` | Yes      | —       | Empty response                                 |
| `result.meta` | `object` | No       | —       | Additional response metadata (status, paging). |

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

  ### Output JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Empty response",
        "properties": {},
        "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](/docs/providers/luma/guide)
* [SDK V2 quickstart](/docs/sdk-v2/quickstart)
* [SDK reference](/docs/sdk-v2/sdk-reference)
* [Run tools across a CSV](/docs/sdk-v2/batch-csv)
