---
updatedAt: 2026-04-21T03:58:56.000Z
agentTools:
  projectIndex: https://developers.e-guma.ch/llms.txt
---

# 3. Reserve Tickets

<HTMLBlock>{`
<link rel=\"stylesheet\" href=\"//dl.dropbox.com/s/w4h68wukvv8gjnt/style.css?dl=0\"> 
`}</HTMLBlock>

This endpoint places a short-lived hold on a specific availability so you can safely collect customer details before calling the [Book Tickets API](https://developers.e-guma.ch/docs/book-tickets). A reservation is held for **60 minutes**. After that it expires automatically and no further action is required.

You are not required to create a reservation before booking. However, for checkout flows where some time passes between picking tickets and paying, using a reservation avoids the risk of overselling.

```text URL
POST https://api.e-guma.ch/v1/ticketing/reservation.json?apikey={api-key}
```

## Parameters

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>

      </th>

      <th>

      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        **api-key**
        `required`
      </td>

      <td>
        API key of a user that is approved for third-party integrations.
      </td>
    </tr>
  </tbody>
</Table>

## POST Data

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>

      </th>

      <th>

      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        **product_id**
        `required`
      </td>

      <td>
        ID of the product. You can get the ID from the [List of Products API](https://developers.e-guma.ch/docs/list-of-products).
      </td>
    </tr>

    <tr>
      <td>
        **starts_at**
        `required`
      </td>

      <td>
        Start date and time of the availability being reserved, in ISO 8601 format. Use the _starts_at_ returned by the [List of Availabilities API](https://developers.e-guma.ch/docs/list-of-availabilities).

        For _day_ slots, pass only the date (or the date with a `00:00:00` time component). For _time_ slots, pass the exact slot date and time.
      </td>
    </tr>

    <tr>
      <td>
        **items**
        `required`
      </td>

      <td>
        List of ticket items to reserve. At least one item is required. Each _category_id_ must appear at most once — combine multiple tickets for the same person category into a single item with the summed quantity. See item object below for details.
      </td>
    </tr>
  </tbody>
</Table>

## Item object

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>

      </th>

      <th>

      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        **category_id**
        `required`
      </td>

      <td>
        ID of the person category. Matches a category returned by the [List of Products API](https://developers.e-guma.ch/docs/list-of-products).
      </td>
    </tr>

    <tr>
      <td>
        **quantity**
        `required`
      </td>

      <td>
        Number of tickets to reserve for this category. Must be greater than `0`.
      </td>
    </tr>
  </tbody>
</Table>

## Return

|                     |                                                                                                                                |
| :------------------ | :----------------------------------------------------------------------------------------------------------------------------- |
| **reservation\_id** | ID of the reservation. Pass this value as *reservation\_id* when calling the [Book Tickets API](https://developers.e-guma.ch/docs/book-tickets).             |
| **expires\_at**     | Moment at which the reservation will automatically expire, in ISO 8601 format. You must complete the booking before this time. |

## Example

```text Request
POST https://api.e-guma.ch/v1/ticketing/reservation.json?apikey=510e32c594d84816a4af9df1
```

```json POST Data
{
  "product_id": "64ad1bb1973b861c040c99bd",
  "starts_at": "2026-03-19T10:00:00",
  "items": [
    {
      "category_id": "64ad1bb1973b861c040c99c1",
      "quantity": 2
    }
  ]
}
```

```json Response
{
  "reservation_id": "69784d61a43bb308fdbf0a14",
  "expires_at": "2026-03-19T09:00:00.0000000"
}
```