Skip to main content

Ticket types

Overview

Ticket types define purchasable or free tickets for organizing events. These endpoints are nested under /event/{organizingEvent} — the event must be one your company organizes. Subscription: Pro plan required. Upgrade at https://app.animo.co/admin/settings/billing.

Public ticket page URL

Each ticket type has a public signup page on the Animo app. Construct the URL from slugs returned by the API:
https://app.animo.co/{company-slug}/event/{event-slug}/{ticket-type-slug}
SegmentAPI source
{company-slug}slug from GET /api/v1/companies
{event-slug}id from the event resource
{ticket-type-slug}slug from the ticket type resource
Append ?qty={n} to pre-select the ticket quantity (e.g. ?qty=1). Example:
https://app.animo.co/aidemodays/event/ai-demo-days-hr-edition/general-admission?qty=1
See Conventions — Public URLs for full details. Unlike events, the slug you supply on ticket type create is honored and can be changed later via PATCH. Paid ticket types (price > 0) require a connected Mollie account on the company before the public ticket page works.
StatePublic page behavior
Mollie connectedTicket signup page loads normally
Mollie not connectedPublic page returns 404 — the ticket type exists in the API but is not purchasable
Connect Mollie in the Animo admin before sharing paid ticket URLs. Free tickets (price: 0) are not affected.

Endpoints

List ticket types

  • Method: GET
  • Path: /api/v1/{company}/event/{organizingEvent}/ticket-types
  • Scope: ticket-types:read (route group also requires events:read)
  • Subscription: Pro plan (USE_API)

Path parameters

NameTypeDescription
companystringCompany sqid
organizingEventstringOrganizing event slug

Query parameters

NameTypeDescription
include_formbooleanWhen present, embeds the related form and fields

Response 200

{
  "data": [
    {
      "slug": "general-admission",
      "name": "General Admission",
      "description": "Standard entry ticket",
      "price": "25.00",
      "currency": "EUR",
      "vat_percentage": "21",
      "availability": 100,
      "approval_required": false,
      "sold_out": false,
      "active": true,
      "hidden_from_shop": false,
      "form_id": "f2Kd8",
      "position": 0,
      "min_quantity": 1,
      "max_quantity": 5
    }
  ]
}

Response fields

FieldTypeDescription
slugstringTicket type slug (use in URLs)
namestringDisplay name
descriptionstring|nullDescription
pricestringPrice as decimal string (0 for free)
currencystringCurrency code
vat_percentagestringVAT rate percentage
availabilityintegerMax tickets (-1 = unlimited)
approval_requiredbooleanRequires organizer approval
sold_outbooleanMarked as sold out
activebooleanAvailable for purchase
hidden_from_shopbooleanHidden from public shop
form_idstring|nullRelated form sqid
formobjectPresent when include_form is set
positionintegerSort order
min_quantityintegerMinimum per order
max_quantityintegerMaximum per order

Create ticket type

  • Method: POST
  • Path: /api/v1/{company}/event/{organizingEvent}/ticket-types/create
  • Scope: ticket-types:create
  • Subscription: Pro plan (USE_API)

Request body

See the request body table below for field requirements.
{
  "name": "General Admission",
  "slug": "general-admission",
  "description": "Standard entry ticket",
  "form_id": "f2Kd8",
  "price": 25.00,
  "vat_percentage": 21,
  "availability": 100,
  "active": true,
  "hidden_from_shop": false,
  "approval_required": false,
  "sold_out": false,
  "position": 0,
  "min_quantity": 1,
  "max_quantity": 5
}
FieldRequiredDescription
nameYesDisplay name
priceYesNumeric; 0 for free, minimum paid price enforced
vat_percentageYesMust be a valid rate for the event’s tax country
slugNoURL slug
descriptionNoText description
form_idNoForm sqid belonging to the company
availabilityNo0 or positive integer; -1 for unlimited
activeNoBoolean
hidden_from_shopNoBoolean
approval_requiredNoBoolean
sold_outNoBoolean
positionNoSort order (>= 0)
min_quantityNoMin per order (>= 1)
max_quantityNoMax per order (>= min_quantity)

Response 201

Returns a single TicketTypeResource.

Show ticket type

  • Method: GET
  • Path: /api/v1/{company}/event/{organizingEvent}/ticket-types/{ticketType}
  • Scope: ticket-types:read
  • Subscription: Pro plan (USE_API)

Query parameters

NameTypeDescription
include_formbooleanEmbeds form and fields

Response 200

Single TicketTypeResource in data envelope.

Update ticket type

  • Method: PATCH
  • Path: /api/v1/{company}/event/{organizingEvent}/ticket-types/{ticketType}
  • Scope: ticket-types:update
  • Subscription: Pro plan (USE_API)

Request body

Same fields as create; all optional on update. See the request body table below for field requirements..

Response 200

Returns the updated TicketTypeResource.

Not implemented

  • DELETE /api/v1/{company}/event/{organizingEvent}/ticket-types/{ticketType} — route is commented out