1. Products

This endpoint returns the list of ticketing products (admissions) that are released for sale through third-party integrations for the API key's merchant.

Only admissions that have the Third party integrations sales channel enabled and that list the API key's user in their allow-list are returned.

Not every product an e-guma merchant configures can be sold through this API: some setups (e.g. reserved-seating, products requiring a mandatory customer note, mandatory ticket questions or per-ticket contact details, non-QR ticket media) cannot be completed end-to-end without UI input we can't collect through the API. Products with such a configuration are silently omitted from the response — there is no error or placeholder entry. If a product you expect is missing, ask the merchant to review its setup against the third-party-integration requirements.

GET https://api.e-guma.ch/v1/ticketing/products.json?apikey={api-key}

Parameters

api-key requiredAPI key of a user that is approved for third-party integrations.

Return

company_nameName of the merchant (company) the API key belongs to.
currencyCurrency of every *_in_cents amount in this response, as ISO 4217 code (e.g. CHF, EUR). Lifted to the response root because every product is priced in the merchant's main currency, so the value is constant for the whole payload.
productsList of products, see product object below for details.

Product object

id

ID of the product. Use this value as the product_id in the

List of Availabilities API, Reserve Tickets API and Book Tickets API.

name

Product name in the default language of the merchant. Convenience copy of the corresponding entry in name_translations.

name_translations

Product name keyed by ISO 639-1 language code (e.g. de, en, fr, it). Contains an entry for every language the merchant has activated for this product. Use this map when you want to render the product in a specific language.

description

Product description in the default language of the merchant. It can contain HTML. Convenience copy of the corresponding entry in description_translations.

description_translations

Product description keyed by ISO 639-1 language code. Same shape and language coverage as name_translations; can contain HTML.

description_on_ticket_template

Raw template the merchant has configured for the text that gets printed on the actual ticket, in the default language of the merchant. May be empty. Convenience copy of the corresponding entry in description_on_ticket_template_translations.

⚠️

This value is a template, not finished copy. It may contain placeholder tokens (e.g. {{start_date_and_time}}, {{first_name}}, {{ticket_type_name}}) that e-guma only resolves at the moment a concrete ticket is rendered — they will not be substituted in this response. Do not display the value to end customers as-is. Use it as a starting point / source for the description you build into your own ticket.

description_on_ticket_template_translations

Description-on-ticket template keyed by ISO 639-1 language code. Same shape and language coverage as name_translations. Individual entries may be empty when the merchant has not configured a value for that language. Same placeholder caveat as description_on_ticket_template applies to every entry.

image_url

Absolute HTTPS URL of the product's primary image hosted on the e-guma image CDN, or an empty string if the product has no image.

is_active

true if the product is currently published. If false, the product cannot be booked. The product is still returned so you can keep it referenced in your system and re-activate it once the e-guma user publishes it again.

slot_type

Indicates the granularity of the availabilities returned by the List of Availabilities API:

  • day: The product is booked on a per-day basis. The starts_at of each availability only carries a date (the time portion is always 00:00:00).

  • time: The product is booked on specific calendar slots. The starts_at of each availability carries a meaningful date and time.

updated_at

Moment at which the product was last modified in e-guma, in ISO 8601 format. You can use this value to keep your local cache in sync.

categories

List of person categories (e.g. Adult, Child) that can be purchased for this product. See person category object below for details.

A product may be returned with an empty list of categories. In that case, no booking is currently possible through the API, but the product is still listed so you can keep it referenced in your system.

Person category object

idID of the person category. Use this value as the category_id in the Reserve Tickets API and Book Tickets API.
nameName of the person category (e.g. Adult, Child) in the default language of the merchant. Convenience copy of the corresponding entry in name_translations.
name_translationsPerson-category name keyed by ISO 639-1 language code. Contains an entry for every language the merchant has activated for the parent product.
age_fromMinimum age (in years) for this category, or null if there is no lower bound.
age_toMaximum age (in years) for this category, or null if there is no upper bound.
price_from_in_centsLowest sale price across the ticket types that belong to this category, expressed in cents of the response's currency. Use it to display a "from" price in product listings before the customer has picked a specific date. 0 for free-of-charge categories.

Example

GET https://api.e-guma.ch/v1/ticketing/products.json?apikey=510e32c594d84816a4af9df1
{
  "company_name": "Demo",
  "currency": "CHF",
  "products": [
    {
      "id": "64ad1bb1973b861c040c99bc",
      "name": "Museum admission",
      "name_translations": {
        "de": "Museumseintritt",
        "en": "Museum admission"
      },
      "description": "Admission ticket for the permanent exhibition.",
      "description_translations": {
        "de": "Eintrittsticket für die Dauerausstellung.",
        "en": "Admission ticket for the permanent exhibition."
      },
      "description_on_ticket_template": "Hello {{first_name}}, please present this ticket at the main entrance. Valid for one entry on {{start_date_and_time}}.",
      "description_on_ticket_template_translations": {
        "de": "Hallo {{first_name}}, bitte weisen Sie dieses Ticket beim Haupteingang vor. Gültig für einen Eintritt am {{start_date_and_time}}.",
        "en": "Hello {{first_name}}, please present this ticket at the main entrance. Valid for one entry on {{start_date_and_time}}."
      },
      "image_url": "https://images.e-guma.ch/mandant/events/64ad1bb1973b861c040c99bc.jpg",
      "is_active": true,
      "slot_type": "day",
      "updated_at": "2026-03-15T14:22:05.0000000",
      "categories": [
        {
          "id": "64ad1bb1973b861c040c99c1",
          "name": "Adult",
          "name_translations": {
            "de": "Erwachsene",
            "en": "Adult"
          },
          "age_from": 16,
          "age_to": null,
          "price_from_in_cents": 2500
        },
        {
          "id": "64ad1bb1973b861c040c99c2",
          "name": "Child",
          "name_translations": {
            "de": "Kind",
            "en": "Child"
          },
          "age_from": 6,
          "age_to": 15,
          "price_from_in_cents": 1000
        }
      ]
    },
    {
      "id": "64ad1bb1973b861c040c99bd",
      "name": "Guided tour",
      "name_translations": {
        "de": "Führung",
        "en": "Guided tour"
      },
      "description": "Guided tour of the museum (90 min).",
      "description_translations": {
        "de": "Geführter Rundgang durch das Museum (90 Min.).",
        "en": "Guided tour of the museum (90 min)."
      },
      "description_on_ticket_template": "",
      "description_on_ticket_template_translations": {
        "de": "",
        "en": ""
      },
      "image_url": "",
      "is_active": true,
      "slot_type": "time",
      "updated_at": "2026-03-10T09:00:00.0000000",
      "categories": [
        {
          "id": "64ad1bb1973b861c040c99c1",
          "name": "Adult",
          "name_translations": {
            "de": "Erwachsene",
            "en": "Adult"
          },
          "age_from": null,
          "age_to": null,
          "price_from_in_cents": 3500
        }
      ]
    }
  ]
}