/tickets API
Usage
This API can be used to fetch all the tickets that belong to an organizer or an event, along with useful data for each ticket.
It can also be used repeatedly with a parameter to only fetch the new & updated tickets after a given date & time.
Endpoint URL
GET https://api.shotgun.live/tickets
Authentication
If you are a partner, add your key in the URL query string
If you are an organizer, add your token either as a header (Authorization: Bearer [token]) or in the query string as token
Query string parameters
|
key |
required |
description |
|
organizer_id |
yes |
• if you are a partner, this organizer must have granted you access |
|
• if you are the organizer, it must match your token’s payload |
||
|
event_id |
no |
if you only want the tickets for a given event |
|
include_cohosted_events |
no |
set to 1 or true to include events of which you are a cohost |
|
after |
no |
ISO date to only return tickets updated after it |
|
(can also be a tuple of [date]_[ticket id] to specify from which ticket to start when multiple tickets have the exact same update date) |
Ordering & pagination
Tickets are ordered by update date/time ascending, then ID ascending, which means you get the oldest ones first, and the newest ones in the last page.
Pages contain at most 100 tickets, and if the page is full, the result contains a link to the next page for your convenience (in pagination.next).
You don’t get the total count in the response, because by the time you reach the last page, it can evolve.
Example URL
https://api.shotgun.live/tickets?**token**=xxx.xxx.xxx&**organizer_id**=173027&**event_id**=410006&**include_cohosted_events**=1
Response shape
The response uses JSON and is an object containing your params, the pagination infos, and a list of tickets in data, so it looks like this:
Tickets
Each ticket object has these fields:
{
« params »: {
« organizer_id »: 173027,
« event_id »: 410006,
« include_cohosted_events »: true
},
« pagination »: {
« next »: « <https://api.shotgun.live/tickets?token=xxx.xxx.xxx&organizer_id=173027&event_id=410006&after=2025-05-20+12%3A47%3A26.622033_69246828> »
},
« data »: [
// the list of tickets (see specs below)
]
}
|
key |
type |
nullable |
description |
example |
|
ticket_id |
integer |
no |
the ID of the ticket in our database |
123456 |
|
ticket_scan_code |
string |
no |
the QR code or barcode value |
« 42564997260325 » |
|
ticket_scanned_at |
string (ISO datetime) |
yes |
when the ticket was scanned, or null if not scanned (or if scanned by an external provider) |
« 2025-02-21 17:29:52.462881 » |
|
ticket_updated_at |
string (ISO datetime) |
no |
last time the ticket was updated, or its creation date & time otherwise |
« 2025-02-21 17:29:52.462881 » |
|
ticket_canceled_at |
string (ISO datetime) |
yes |
if the ticket was canceled, this is set to the cancelation date & time, otherwise it’s null |
null |
|
ticket_status |
string (enum) |
no |
valid , resold, refunded, canceled, payment_plan_pending, pending_approval or rejected |
« valid » |
|
ticket_seating |
object |
yes |
for seated events, this contains the seat info: |
null |
|
user_id |
integer |
yes |
the ID of the ticket owner (Shotgun user) if any |
46824 |
|
deal_id |
integer |
no |
the organizer event ticket (product) ID |
12345678 |
|
deal_sub_category |
string |
yes |
the category title of tickets if any |
« Friday » |
|
deal_title |
string |
no |
the name of the ticket |
« Early Bird » |
|
deal_channel |
string |
no |
the sales channel, which can be either: |
« online » |
|
deal_visibilities |
array of strings |
no |
can contain one or more of these values: |
« public » |
|
deal_price |
integer |
no |
the ticket price in cents |
3999 |
|
deal_service_fee |
integer |
no |
the organizer fees in cents |
99 |
|
deal_user_service_fee |
integer |
no |
the user fees in cents |
0 |
|
deal_producer_cost |
integer |
no |
for France only (« Droits de Location Producteur » aka “DL prod” in cents), 0 anywhere else |
0 |
|
deal_vat_rate |
float |
no |
the applicable VAT rate |
0.055 |
|
order_id |
integer |
no |
the ID of the order (which can contain more than one ticket) |
123456 |
|
currency |
string (enum) |
no |
the 3-letters order currency code (« eur », « usd » or « brl ») |
« eur » |
|
payment_method |
string |
yes |
null for imported tickets, or one of these values for Shotgun orders: |
« card » |
|
utm_source |
string |
yes |
null for imported tickets, or one of these values for Shotgun orders: |
« shotgun » |
|
utm_medium |
string |
yes |
« website », « app » or « widget » for online orders |
« app » |
|
ordered_at |
string (ISO datetime) |
no |
the order creation date |
« 2025-02-20 17:29:52.462881 » |
|
event_id |
integer |
no |
the ID of the event |
123456 |
|
event_start_time |
string (ISO datetime) |
no |
the event start time |
« 2025-06-07 18:00:00 » |
|
event_end_time |
string (ISO datetime) |
no |
the event end time |
« 2025-06-09 16:00:00 » |
|
event_created_at |
string (ISO datetime) |
no |
the event creation date |
« 2025-02-10 17:29:52.462881 » |
|
event_published_at |
string (ISO datetime) |
yes |
the event publication date |
« 2025-02-11 17:29:52.462881 » |
|
event_launched_at |
string (ISO datetime) |
yes |
the ticketing launch date (can be different from event_published_at in case of pre-registration phase) |
« 2025-02-15 17:29:52.462881 » |
|
event_canceled_at |
string (ISO datetime) |
yes |
the event cancelation date if the organizer cancels it |
null |
|
contact_id |
integer |
yes |
the ID of the contact (ticket holder) |
123456789 |
|
contact_email |
string |
yes |
the contact email address |
« a@shotgun.live » |
|
contact_phone |
string |
yes |
the contact phone number |
null |
|
contact_first_name |
string |
yes |
the contact first name |
« Antoine » |
|
contact_last_name |
string |
yes |
the contact last name |
« Rousseau » |
|
contact_gender |
string (enum) |
yes |
« female », « male », « other » |
null |
|
contact_company_name |
string |
yes |
the contact company name |
« Shotgun » |
|
contact_birthday |
string (YYYY-MM-DD) |
yes |
the contact birthdate (outside Brazil, only the birth year is asked: the day and month are set to O1) |
« 1985-01-01 » |
|
contact_newsletter_optin |
boolean |
yes |
true if the contact is subscribed to the organizer’s newsletter, false if opted-out, null if unset |
null |
|
contact_country |
string |
yes |
the contact location’s country name |
« France » |
|
contact_postal_code |
string |
yes |
the contact location’s post code (zip code in US) |
« 31000 » |
|
contact_locality |
string |
yes |
the contact location’s city or town name |
« Toulouse » |
