Ticket types
List the available ticket types for a specific sub-event. Each ticket type corresponds to a discount in our system (e.g. Standard, CJP, Student). All max-usage logic is applied server-side — what you see is what a user can actually buy at that moment.
GET /v1/:client_name/tickettypes/:event_id
List available ticket types.
Path parameters
| Name | Type | Description |
|---|---|---|
client_name | string | Your short client name |
event_id | string | ID of the sub_event (not the main event) |
Responses
200 OK — list of available ticket types:
[
{
"discount_id": "2ePdA8q3BN",
"discount_name": "Standard",
"base_price": "24.50",
"discount_type": "€",
"discount_value": "0.00",
"discounted_price": "24.50"
},
{
"discount_id": "bo6dlyJGea",
"discount_name": "CJP",
"base_price": "24.50",
"discount_type": "€",
"discount_value": "1.00",
"discounted_price": "23.50"
},
{
"discount_id": "AYDJK7JlkX",
"discount_name": "City pass",
"base_price": "24.50",
"discount_type": "%",
"discount_value": "25.00",
"discounted_price": "18.38"
}
]
404 Not Found — no such sub-event:
{ "message": "sub_event not found" }
Response fields
| Field | Type | Description |
|---|---|---|
discount_id | string | Use this when adding tickets to the cart |
discount_name | string | Human-readable label |
base_price | string (decimal) | Original price before discount |
discount_type | string | € (fixed amount) · % (percentage) · = (fixed overrule price) |
discount_value | string (decimal) | Value applied to base price |
discounted_price | string (decimal) | Final price the user pays |
Discount types explained
discount_type | Meaning | Example |
|---|---|---|
€ | Fixed euro amount off | Base €25 − €5 = €20 |
% | Percentage off | Base €25 − 25% = €18.75 |
= | Overrule to fixed price | Base €25 → fixed €12.50 |
What is hidden
The API automatically takes into account:
- Max per event — a discount disappears from the list when its usage cap is reached for this sub-event.
- Max per order — if the user has already added the maximum, the discount still appears but will error when added again.
- Time-based discounts — early-bird etc. are hidden outside their active window.
- User-tag-based discounts — only appear for authenticated users with matching tags (not visible via public API, since public has no auth).
Using the discount_id
Pass discount_id to POST /cart/:cart_id when adding a seat. Combined with event_id and numberoftickets, this fully determines what the user wants to buy.