Tixly admin API
Tixly provides an administration API to enable external planning or venue management software to create events and productions in Tixly and retrieve sales data for these events.
The Admin API was initially built to the specifications of Yesplan, and additional values have been added since. This is why the authorisation differs from the CRM API (basic vs Bearer token), and some names are not purely Tixly, such as Production instead of Event Group.
Access to the Admin API is configured in the Venue Management module of Tixly and includes a number of configuration options:
Organisation
- Selects an organisation that will be the owner of the created events/groups.
Filter by Organisation
- If set to yes, restricts access to retrieve information only for events of this organisation.
Manual Connection
- If set to yes, a back-office user can add/edit/remove the external ID on events from the Tixly interface.
Disabled Values
Disabled Values allow you to make some event properties read-only in the Tixly interface. This means they can only be changed from the management software, ensuring data consistency on both ends.
These values are also required any time an event is created or updated from the venue management software. If a value is not required, it can still be updated, but does not need to be.
All available Event values listed below under Create events can be disabled/made mandatory to update each time.
Outline of working with the API
Event Groups and Event Dates are initially created in the venue management software. When they need to be made available in Tixly, the management software can push them using this API.
If there are changes or updates to event information in the venue management system, these events can be pushed again to be updated in Tixly. Upon the creation of event groups and events in Tixly, the ID of the generated entities is returned and can be stored in the venue management system.
In Tixly, additional properties are updated on the event to prepare it for sale including setting prices, quotas, and specifying ticket layouts.
When the events are sold, there are several routes available to fetch sales data.
The API uses basic HTTP authentication: all requests should include a header Authorisation with the scheme “Basic”. All data is exchanged in json format. The date-time values are exchanged as JSON strings based on the ISO 8601 standard.
Documentation can be found at https://adminapi.{country url}/v1/swagger/ui/index
Tixly Event values
The first step to creating events in Tixly once the API has been set up in the module, is to retrieve a listing of Tixly Seasons, Promoters, Hall Configurations, Event Categories, and Price Templates. These can then be used when creating Event Dates.
Get mappings
A user of the planning system might be shown this as a list of options to choose from when configuring the events.
GET /admin/mappings can be used to retrieve a basic version of this information.
Specific endpoints exist to find more detailed information about available items in Tixly.
These can be found using the following:
- GET /admin/allocationtypes
- GET /admin/pricetemplates
- GET /admin/seasons
- GET /admin/eventtags
- GET /admin/organisations
- GET /admin/venues
- GET /admin/tickettypes
- GET /admin/halls
- GET /admin/hallconfigurations
- GET /admin/salestatuses
- GET /admin/vats
- GET /admin/promoters
Create productions
POST /admin/productions should be used to create Event Groups in Tixly.
An example value for the Event parameter:
{
"production-id": "TEST-1234",
"name": "The Last Whisperer",
"tix-production-id": "5678",
"admin-name": "The Last Whisperer 2025",
"description": "In a world silenced by an unknown affliction, a lone archivist races against time to decipher the last echoes of humanity's past before the final memory fades into oblivion.",
"available-online": true,
"sub-title": "A Tixly Production",
"External-reference-number": "EX-1234",
"big-image": "https://tix-staging-cdn.s3.eu-west-1.amazonaws.com/se/tix/EventImages/Feature_12240.jpg?r=114880059",
"small-image": "https://tix-staging-cdn.s3.eu-west-1.amazonaws.com/se/tix/EventImages/Event_12240.jpg?r=527710935",
"account": "Account",
"department": "Department",
"dimension1": "Dimension 1",
"dimension2": "Dimension 2",
"dimension3": "Dimension 3",
"dimension4": "Dimension 4",
"dimension5": "Dimension 5",
"dimension6": "Dimension 6",
"dimension7": "Dimension 7",
"dimension8": "Dimension 8"
}The production-id is the planning systems ID that can be used in calls as {externalID} for updates and event creation.
GET /admin/productions/{externalID} should be used to get the production details while PUT /admin/productions/{externalID} should be used to update the production details.
Tixly downloads the images from the URLs you add to Tixly's own system and uses them as-is in the buying flow.
Available EventGroup JSON values include:
- production-id
- name
- tix-production-id
- admin-name
- description
- available-online
- sub-title
- external-reference-number
- big-image
- small-image
- account
- department
- dimension1
- dimension2
- dimension3
- dimension4
- dimension5
- dimension6
- dimension7
- dimension8
Production-id and name are the only required values to create an Event Group, and no additional values can be set to required/disabled.
An example of a successful output is below:
{
"Success": true,
"Message": "Production created",
"EventGroup": "12246",
"displaymessage": "Production created"
}Create events
Once an Event Group or Production exists, you can create Event Dates for it.
Use your own event-id and reference your production, as you see in the first two properties.
The seasons, hallconfigurations and eventcategory expect a single value each from the mapping list. If multiple categories should be assigned, eventcategories should be used.
POST /admin/events should be used to create Event Dates.
It is also possible to send images with this /admin/events. These images “big-image” and “small-image” will replace the images of the primary event group of this event.
Your own event-id can be used as {externalId} to get, update or delete an event.
Only events that have no tickets on them can be deleted!
An example input including all potential values is below:
{
"event-id": "evt-987654",
"production-id": "prod-123456",
"name": "Summer Jazz Festival",
"admin-name": "Anna Lund",
"subtitle": "An evening of smooth jazz",
"starttime": "2025-07-12T18:00:00Z",
"endtime": "2025-07-12T21:00:00Z",
"eventcategories": ["Jazz", "Live Music", "3"],
"hallconfigurationid": 7,
"promoterid": 42,
"seasonid": 3,
"external-reference-number": "SJ-2025-042",
"availableonline": "2025-06-01T00:00:00Z",
"onlinesalestart": "2025-06-10T09:00:00Z",
"onlinesaleend": "2025-07-12T17:00:00Z",
"visibleinboxoffice": "2025-06-01T00:00:00Z",
"boxofficesalestart": "2025-06-15T10:00:00Z",
"boxofficesaleend": "2025-07-12T18:00:00Z",
"account": "JAZZ2025",
"department": "Music & Culture",
"dimension1": "RegionA",
"dimension2": "LIVE32",
"dimension3": "",
"dimension4": "",
"dimension5": "",
"dimension6": "",
"dimension7": "",
"dimension8": "",
"tickettitle": "Jazz Festival Entry",
"tickettextone": "Entry includes access to all evening performances.",
"tickettexttwo": "No re-entry after 7PM.",
"tickettextthree": "Food and beverages available at venue.",
"eventtags": [1, 2, 4],
"vatrate": 11.0
}The following JSON values are always required to create or update an event, along with any values set up as Disabled values in the Venue Management module in Tixly:
- event-id
- production-id
- name
- starttime
- endtime
- hallconfigurationid
- seasonid
- promoterid
An example input of required parameter values for the key Event is below:
{
"event-id": "12345",
"production-id": "TEST-1234",
"name": "The Last Whisperer",
"starttime": "2025-07-18T21:00:00",
"endtime": "2025-07-18T23:00:00",
"hallconfigurationid": "81",
"seasonid": "51",
"promoterid": "51",
}A successful input will provide the following output:
{
"Success": true,
"Message": "Event created",
"Event": "9252",
"displaymessage": "Event created"
}A 500 error will return for any missing default required values, while a specific error will display for any disabled values that are missing. The “Message” text return should be used for any error received.
Retrieve Subscription information
GET /admin/subscriptionsbyeventdates can be used to retrieve information about subscriptions that have events in a specific date range.
An example of the output is available here:
{
"SubscriptionTypeId": 48,
"Name": "The Spotlight Series",
"Abbreviation": "SPOT",
"SeasonId": 51,
"Type": 1,
"OnlineSaleStart": "2024-11-22T12:00:00",
"OnlineSaleEnd": "2025-05-22T20:00:00",
"VisibleOnline": "2024-11-22T12:00:00",
"TicketTypes": [
{
"TicketTypeId": "329",
"Name": "Subscription"
},
{
"TicketTypeId": "330",
"Name": "Child Subscription"
}
],
"EventGroups": [
{
"EventGroupId": "12178",
"Name": "Long Day's Journey into Night"
},
{
"EventGroupId": "12220",
"Name": "Masquerade of Shadows"
},
{
"EventGroupId": "12179",
"Name": "The Glass Menagerie"
},
{
"EventGroupId": "12184",
"Name": "The Last Train to Nowhere"
}
],
"Events": [
{
"EventId": "7867",
"EventGroupId": "12178",
"Name": "Long Day's Journey into Night",
"StartDate": "2025-01-07T20:00:00"
},
{
"EventId": "7933",
"EventGroupId": "12179",
"Name": "The Glass Menagerie",
"StartDate": "2025-03-04T20:00:00"
},
{
"EventId": "7944",
"EventGroupId": "12184",
"Name": "The Last Train to Nowhere",
"StartDate": "2025-05-06T20:00:00"
},
{
"EventId": "8453",
"EventGroupId": "12220",
"Name": "Masquerade of Shadows",
"StartDate": "2025-07-19T19:30:00"
}
],
"Organisations": [
{
"OrganisationId": "42",
"Name": "The Fictional"
}
],
"DefaultTicketTypes": [
{
"TicketTypeId": "329",
"Name": "Subscription"
}
]
}Retrieving sales information
GET /admin/events/{externalID} should be used to retrieve event sales statistics per event.
An example input and output are below:
GET / https://adminapi.se.staging.tixticketing.com/v1/admin/events/12345
{
"tix-event-id": "9251",
"event-id": "12345",
"production-id": "TEST-1234",
"tix-eventgroup-id": "12246",
"name": "The Last Whisperer",
"subtitle": "",
"admin-name": "",
"location": "The Fictional - Crescendo Concert Hall",
"starttime": "2025-07-18T21:00:00+01:00",
"endtime": "2025-07-18T23:00:00+01:00",
"in-sale": false,
"closed": false,
"salestatus": 0,
"salestatustext": "None",
"ticketscapacity": 1243,
"ticketssold": 0,
"ticketsfree": 0,
"ticketsreserved": 0,
"ticketsallocated": 83,
"ticketsblocked": 23,
"ticketsavailable": 1137,
"ticketstotal": 0,
"ticketstemporarilyreserved": 0,
"ticketsheldforsubscribers": 0,
"ticketsscanned": 0,
"ticketsrevenue": 0.0,
"ticketsrevenue-excluding-vat": 0.0,
"productiononline": "1",
"eventonline": "0",
"vat": 20.0,
"promoterid": 51,
"promotername": "The Fictional",
"seasonid": 51,
"seasonname": "2024-2025",
"visibleinboxoffice": "",
"boxofficesalestart": "",
"boxofficesaleend": "",
"visibleonline": "2025-05-27T16:00:00+01:00",
"onlinesalestart": "2025-05-27T16:00:00+01:00",
"onlinesaleend": "2025-07-18T23:00:00+01:00",
"account": "",
"department": "",
"dimension1": "",
"dimension2": "",
"dimension3": "",
"dimension4": "",
"dimension5": "",
"dimension6": "",
"dimension7": "",
"dimension8": ""
}GET /admin/events/{externalID}/detailed should be used to retrieve the most detailed information available about an event’s sales including information about specific ticket type sales.
An example output is below:
{
"tix-event-id": "9251",
"event-id": "12345",
"production-id": "TEST-1234",
"tix-eventgroup-id": "12246",
"name": "The Last Whisperer",
"subtitle": "",
"admin-name": "",
"location": "The Fictional - Crescendo Concert Hall",
"starttime": "2025-07-18T21:00:00+01:00",
"endtime": "2025-07-18T23:00:00+01:00",
"in-sale": false,
"closed": false,
"salestatus": 0,
"salestatustext": "None",
"ticketscapacity": 1243,
"ticketssold": 0,
"ticketsfree": 0,
"ticketsreserved": 0,
"ticketsallocated": 83,
"ticketsblocked": 23,
"ticketsavailable": 1137,
"ticketstotal": 0,
"ticketstemporarilyreserved": 0,
"ticketsheldforsubscribers": 0,
"ticketsscanned": 0,
"ticketsrevenue": 0.00,
"ticketsrevenue-excluding-vat": 0.00,
"productiononline": "1",
"eventonline": "0",
"vat": 20.00,
"promoterid": 51,
"promotername": "The Fictional",
"seasonid": 51,
"seasonname": "2024-2025",
"visibleinboxoffice": "",
"boxofficesalestart": "",
"boxofficesaleend": "",
"visibleonline": "2025-05-27T16:00:00+01:00",
"onlinesalestart": "2025-05-27T16:00:00+01:00",
"onlinesaleend": "2025-07-18T23:00:00+01:00",
"account": "",
"department": "",
"dimension1": "",
"dimension2": "",
"dimension3": "",
"dimension4": "",
"dimension5": "",
"dimension6": "",
"dimension7": "",
"dimension8": "",
"categories": [
{
"eventcategoryid": 80,
"name": "Play"
}
],
"prices": [
{
"tickettypeid": 431,
"tickettypename": "Integration",
"pricezoneid": 1,
"pricezonename": "1",
"ticketprice": 0.00,
"ticketpricewithoutvat": 0.00,
"feeprice": 0.00,
"feepricewithoutvat": 0.00,
"totalprice": 0.00,
"totalpricewithoutvat": 0.00
},
{
"tickettypeid": 431,
"tickettypename": "Integration",
"pricezoneid": 2,
"pricezonename": "2",
"ticketprice": 0.00,
"ticketpricewithoutvat": 0.00,
"feeprice": 0.00,
"feepricewithoutvat": 0.00,
"totalprice": 0.00,
"totalpricewithoutvat": 0.00
},
{
"tickettypeid": 431,
"tickettypename": "Integration",
"pricezoneid": 3,
"pricezonename": "3",
"ticketprice": 0.00,
"ticketpricewithoutvat": 0.00,
"feeprice": 0.00,
"feepricewithoutvat": 0.00,
"totalprice": 0.00,
"totalpricewithoutvat": 0.00
},
{
"tickettypeid": 431,
"tickettypename": "Integration",
"pricezoneid": 4,
"pricezonename": "4",
"ticketprice": 0.00,
"ticketpricewithoutvat": 0.00,
"feeprice": 0.00,
"feepricewithoutvat": 0.00,
"totalprice": 0.00,
"totalpricewithoutvat": 0.00
}
],
"tickettypes": []
}GET /admin/events should be used to receive basic information for all events occurring in a specific month.
The above methods return only events that have an external ID set.
An example of the output is available here:
{
"tix-event-id": "9251",
"event-id": "12345",
"production-id": "TEST-1234",
"tix-eventgroup-id": "12246",
"name": "The Last Whisperer",
"subtitle": "",
"admin-name": "",
"location": "The Fictional - Crescendo Concert Hall",
"starttime": "2025-07-18T21:00:00+01:00",
"endtime": "2025-07-18T23:00:00+01:00",
"in-sale": false,
"closed": false,
"salestatus": 0,
"salestatustext": "None",
"ticketscapacity": 1243,
"ticketssold": 0,
"ticketsfree": 0,
"ticketsreserved": 0,
"ticketsallocated": 83,
"ticketsblocked": 23,
"ticketsavailable": 1137,
"ticketstotal": 0,
"ticketstemporarilyreserved": 0,
"ticketsheldforsubscribers": 0,
"ticketsscanned": 0,
"ticketsrevenue": 0,
"ticketsrevenue-excluding-vat": 0,
"productiononline": "1",
"eventonline": "0",
"vat": 20,
"promoterid": 51,
"promotername": "The Fictional",
"seasonid": 51,
"seasonname": "2024-2025",
"visibleinboxoffice": "",
"boxofficesalestart": "",
"boxofficesaleend": "",
"visibleonline": "2025-05-27T16:00:00+01:00",
"onlinesalestart": "2025-05-27T16:00:00+01:00",
"onlinesaleend": "2025-07-18T23:00:00+01:00",
"account": "",
"department": "",
"dimension1": "",
"dimension2": "",
"dimension3": "",
"dimension4": "",
"dimension5": "",
"dimension6": "",
"dimension7": "",
"dimension8": ""
}The next two routes return all events, including those without an external ID. Optionally, the output can be restricted by a setting in Tixly to only return those connected to the organisation set up in the credentials.
GET /admin/GetEventsByEventDates should be used if you need to get details on events that took place at a certain time, e.g. all events yesterday, or need to have a status on all events in a certain week.
GET /admin/GetEventsBySalesDates should be used if you are interested in all events, and want to get new data on those that had sales activity in e.g. from the last day.
The output of these two routes are arrays grouped by EventId, Ticket Type, Price zone, and Section, giving you rather detailed sales information.
Sales in 3 price zones, each with 5 ticket types will return 15 objects like this example:
{
"ExternalId": "0",
"EventId": 8290,
"AdminName": "",
"Name": "Long Day's Journey into Night",
"StartDate": "02/13/2025 17:00:00",
"Venue": "The Fictional",
"Hall": "Crescendo Concert Hall",
"TicketTypeId": 324,
"TicketType": "Standard",
"PriceZoneId": 2,
"PriceZone": "2",
"SectionId": 370,
"Section": "Orchestra Left",
"SoldTickets": 0,
"SoldRevenue": 0.0000,
"ReservedTickets": 19,
"ReservedRevenue": 1710.0000,
"Capacity": 1220
}The above capacity is about the whole event, while the sold and reserved numbers for this are a combination of EventId, Ticket Type, Pricezone and Section.
Only combinations that have sales or reservations are in the output.
Retrieve customer sales over a period of time
GET /admin/customerticketsbysalesdates can be used to retrieve all customer and ticket information for tickets sold within a specific date range. This report was designed for use with EVIS integrations.
An example of the output is available here:
{
"CustomerId": 17170,
"CustomerName": "Sam Chacon",
"FirstName": "Sam",
"LastName": "Chacon",
"CustomerEmail": "sam@tixly.com",
"Mobile": "+12105555555",
"AddressOne": "Gartenstraße 61",
"AddressTwo": "",
"City": "Berlin",
"ZipCode": "12557",
"Country": "Germany",
"TicketId": 303563,
"TicketTypeId": 329,
"TicketType": "Subscription",
"PriceZoneId": 2,
"PriceZone": "B",
"SubscriptionTypeId": 0,
"Price": -66.0000,
"Created": "2025-03-31T19:42:17.493",
"TransactionType": -1,
"ExternalId": "0",
"EventId": 7948,
"Section": "Orchestra Center",
"RowName": "B",
"SeatName": "104"
}For more information and better usage of customer information, the CRM API should be used.
Retrieve sales data over a period of time
GET /admin/GetTicketsBySalesDates can be used to retrieve all tickets with seat details and customer information that were sold within a specific date range. This can be used to get sales in different configurations, for example, to retrieve sales every hour to keep your external system up to date. This report was designed for use with Event Software Benelux integrations.
An example of the output is available here:
{
"CustomerId": 17170,
"CustomerName": "Sam Chacon",
"FirstName": "Sam",
"LastName": "Chacon",
"CustomerEmail": "sam@tixly.com",
"Mobile": "+12105555555",
"AddressOne": "Gartenstraße 61",
"AddressTwo": "",
"City": "Berlin",
"ZipCode": "12557",
"Country": "Germany",
"TicketId": 303563,
"TicketTypeId": 329,
"TicketType": "Subscription",
"PriceZoneId": 2,
"PriceZone": "B",
"Price": -66.0000,
"Created": "03/31/2025 19:42:17",
"TransactionType": -1,
"ExternalId": "0",
"EventId": 7948,
"Section": "Orchestra Center",
"RowName": "B",
"SeatName": "104"
}
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article