Version 3.1
Admin API endpoint
https://api.tito.io/v3
Examples in this documentation are written using curl.
This is our latest beta version which you are welcome to try.
The default version is 3.0. To choose to use 3.1 instead you have two options:
- Generate a new access token and choose version 3.1 (you can do that here). This means that all API requests made using that token will use version 3.1.
- Append
version=3.1
to your URL parameters. This will allow you to experiment with a single endpoint without switching over to 3.1 completely.
The examples given below assume you have switched over your access token.
Introduction
The Admin API is designed to be a predictable and intuitive interface for secure programmatic access to Tito. The Admin API can be used to manage events, tickets, etc.
The Admin API is a REST API and returns JSON responses.
We hope by providing an API it will allow developers to build cool and useful tools on top of Tito.
Authentication
The Admin API uses API tokens to allow users to authenticate without exposing their credentials.
Developers can generate an API token by signing in at https://id.tito.io and selecting
Generate New Token
.
As the Admin API is a private API, only secret
API token types can be used. As well as selecting a token type, a mode
must also be selected:
live
- Use this mode once your event has gone live. This mode will only returntickets
andregistrations
from the live mode.test
- Use this mode to test your API integration is working. You can continue to use this token after your event has gone live and it will only read and write test data without affecting your live data. Note this mode will only return testtickets
andregistrations
.
If you find your API token has been compromised it can be revoked and a new one generated.
Your API token needs to be included in the Authorization
header so your requests can be authenticated.
Confirm you can connect
curl --request GET \
--url 'https://api.tito.io/v3/hello' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
{
"authenticated": true,
"access_token": "*ab1C",
"lookup_mode": "live",
"accounts": [
"biscuit-box",
"demo"
]
}
This endpoint will confirm you are authenticated properly and tell you which accounts you have access to.
GET https://api.tito.io/v3/hello
The access_token
is the last four characters of whatever access token you have used.
The Admin API also provides detailed information about Authentication Errors.
Headers
All API requests must send the following request headers:
Authorization
with the valueToken token=YOUR-API-TOKEN
whereYOUR-API-TOKEN
is replaced with your API token.Accept
header with the value ofapplication/json
Pagination
Endpoints which enumerate objects are paginated.
Pagination information is returned in the meta
attribute in the response body.
current_page
- The current page number.next_page
- The next page number.prev_page
- The previous page number.total_pages
- The number of pages.total_count
- The number of records with filtering applied,per_page
- The number of results returned in each page.overall_total
- The overall number of records without any filtering applied.
A specific page can be retrieved by providing the page[number]
parameter:
https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id?page[number]=2
The number of records returned in each page can be set with a page[size]
parameter:
https://api.tito.io/v3/:account_slug/:event_slug/tickets?page[size]=100
The default page size is 100 and the maximum page size is 1000.
Expansions
In version 3.0, if you asked for a registration
then you got all its tickets
too (as well line_items
, payment
, receipt
, receipts
, and refunds
). But if you don't need all those other resources then it just makes the response bigger and slower. In version 3.1 you just get the resource you asked for unless you explicitly "expand" other resources.
Single resource
By default, you just get the resource you asked for. For example, to get a single registration.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
GET /:account_slug/:event_slug/registration/:registration_slug
Add an expansion
You can ask for more information. For example, to get the registration's tickets too.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug?expand=tickets' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
GET /:account_slug/:event_slug/registration/:registration_slug?expand=tickets
Multiple expansions
You can expand more than one resource by listing them separated by a comma.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug?expand=tickets,receipts' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
GET /:account_slug/:event_slug/registration/:registration_slug?expand=tickets,receipts
Available expansions
At the end of every response is a meta
section which includes a list of all the possible expansions for this resource and whether they are currently expanded or not.
{
"meta": {
"expandable": {
"tickets": true,
"receipts": false
}
}
}
Translations
Translations is a beta feature. Contact us to get it enabled.
Translated attributes will be shown for each locale
for your event if you have provided them and you have more than one locale set up. You can force the translations to be shown even for one locale by using ?expand=translations
.
One locale
In this example, the event only has one locale so the translations
attribute is omitted.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"question": {
"_type": "question",
"id": 1,
"answers_count": 49,
"description": "What is your most favorite color of all?",
"title": "Fave tree?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "favorite-color",
"tickets_count": 103,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:09.000Z"
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"releases": false
}
}
}
GET /:account_slug/:event_slug/questions/:question_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.question_slug
- theslug
(orid
) of thequestion
.
Multiple locales
In this example, the event only has two locales so the translations
attribute is shown.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"question": {
"_type": "question",
"id": 1,
"answers_count": 49,
"description": "What is your most favorite color of all?",
"title": "Fave tree?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "favorite-color",
"tickets_count": 103,
"translations": {
"en": {
"description": "What is your most favorite color of all?",
"options": null,
"options_free_text_field": null,
"title": "Fave tree?"
},
"de": {
"description": "Ihr Liebling aller Zeiten",
"options": null,
"options_free_text_field": null,
"title": "Was ist deine Lieblingsfarbe?"
}
},
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:09.000Z"
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"releases": false
}
}
}
GET /:account_slug/:event_slug/questions/:question_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.question_slug
- theslug
(orid
) of thequestion
.
Force
If you need it, you can force the translations
to be shown even if you only have one locale by expanding with "translations".
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug?expand=translations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"question": {
"_type": "question",
"id": 1,
"answers_count": 49,
"description": "What is your most favorite color of all?",
"title": "Fave tree?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "favorite-color",
"tickets_count": 103,
"translations": {
"en": {
"description": "What is your most favorite color of all?",
"options": null,
"options_free_text_field": null,
"title": "Fave tree?"
}
},
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:09.000Z"
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"releases": false
}
}
}
GET /:account_slug/:event_slug/questions/:question_slug?expand=translations
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.question_slug?expand=translations
-
Errors
{
"status": 422,
"message": "A readable message that describes the problem"
}
If you get an error then it will follow a common format. Every error includes a status
and a message
.
Attributes
access_token
stringThe last four characters of the access token used. Included if you get a 404 error.errors
objectA hash of each attribute and an array of messages for that attribute.error_list
object arraySimilar toerrors
but in an array.hint
stringGuidance on what to do to solve this problem.identifier
stringIf we have logged this error then this unique identifier will help us find it in our logs.test_mode
booleanWhether test mode is on or off.message
stringDescribes the problem.status
integerThe HTTP status code. See below.
Authentication errors [401]
{
"status": 401,
"message": "The API token is missing.",
"hint": "You can retrieve your API token at https://id.tito.io. Please see the API docs for further information at https://ti.to/docs/api."
}
If a request cannot be authenticated (we don't know who you are).
Authorization errors [403]
{
"status": 403,
"message": "Forbidden",
"hint": "You are not authorized to access discount_codes"
}
If a request cannot be authorized as a user has insufficient permissions (we know who you are but you're not allowed to do what you're trying to do).
Resource not found [404]
{
"status": 404,
"message": "Resource not found",
"test_mode": false,
"hint": "Record not found with test mode off but it does exist with test mode on",
"access_token": "*bill"
}
If the resource you are looking for isn't there. If the resource does exist but you were looking in the wrong test mode then it will tell you that in the hint
.
Validation errors [422]
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"discount_code[code]":"HALFPRICE","discount_code[type]":"WrongType"}'
{
"status": 422,
"message": "That request was invalid",
"errors": {
"code": [
"has already been taken"
],
"type": [
"is not included in the list"
],
"value": [
"can't be blank"
]
},
"error_list": [
{
"attribute": "code",
"message": "has already been taken"
},
{
"attribute": "type",
"message": "is not included in the list"
},
{
"attribute": "value",
"message": "can't be blank"
}
]
}
For example, creating a new discount code can result in a validation error.
The validation errors are shown in the errors
object with each attribute linked to an array of messages.
This is repeated in an array called error_list
which you might find easier.
HTTP status codes
OK
200All is well.Created
201Your request has been fulfilled and has resulted in one or more new resources being created.No content
204Your request has been fulfilled and that there is no additional content to send in the response payload body, e.g. deleting a resource.Unauthorized
401Your request is not authenticated. See the [Authentication Errors](#errors-authentication-errors) section for more information.Forbidden
403Your request is not authorized as the user has insufficient permissions. See the [Authorization Errors](#errors-authorization-errors) section for more information.Page not found
404The endpoint requested does not exist.Unprocessable entity
422The resource couldn't be created or updated due to a validation error. Please see the response body for more information.Too many requests
429Your application is exceeding its rate limit. Slow down, pal!Internal server error
500Something is wrong on our end.Bad gateway
502The app responsible for serving your request is temporarily unavailable.Gateway timeout
504Something has timed out on our end.
Activities
Activities represent things that attendees can go to during your event that are not part of their ticket e.g. bowling or conference dinner.
Tickets can have multiple activities attached, allowing you to share capacity, set start and end dates and times, sell single and combo tickets for multi-day events, and show a schedule and itinerary to attendees.
Attributes
allocation_count
integerthe number of tickets (or upgrades) linked to this activity. Limited by the activitycapacity
.capacity
integerThe number of people who can attend. If not set then there is no limit.date
dateThe date of this activity.description
texttranslated*A statement or tag line describing the activity.end_at
datetimeread onlyThe date and time the activity is going to end based on thedate
andend_time
.end_time
timeThe time the activity is going to start, e.g. "17:00" (24-hour clock).name
stringrequiredtranslated*The name of the activity.questions
object arrayA list of questions that will be asked for this activity. This attribute is hidden by default but you can expand it using?expand=questions
. See questions.questions_ids
integer arrayOr usequestions_ids
and just get an array ofid
values.questions_slugs
string arrayOr usequestions_slugs
and just get an array ofslug
values.releases
object arrayA list of releases attached to this activity. This attribute is hidden by default but you can expand it using?expand=releases
. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.show_to_attendee
booleanYou can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default isfalse
.sold_out
booleanTrue if this activity'scapacity
has been reached.start_at
datetimeread onlyThe date and time the activity is going to start based on thedate
andstart_time
.start_time
timeThe time the activity is going to start, e.g. "09:00" (24-hour clock).upgrades
object arrayA list of upgrades attached to this activity. This attribute is hidden by default but you can expand it using?expand=upgrades
.venue
objectThe venue associated with this activity. This attribute is hidden by default but you can expand it using?expand=venue
.- Common attributes:
id
integerread onlyUnique record identifier
* See translations.
Expansions
Append a comma separated list of expansions to pull back more information about this Activity.
questions
object arrayA list of questions that will be asked for this activity. See questions.questions_ids
integer arrayOr usequestions_ids
and just get an array ofid
values.questions_slugs
string arrayOr usequestions_slugs
and just get an array ofslug
values.releases
object arrayA list of releases attached to this activity. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.upgrades
object arrayA list of upgrades attached to this activity.venue
objectThe venue associated with this activity.translations
A list of every translated attribute for each locale setup for your event.
Get all activities
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"activities": [
{
"_type": "activity",
"id": 1,
"capacity": 100,
"date": "2022-12-25",
"description": "An activity for Conference",
"start_time": "09:00",
"end_time": "17:00",
"start_at": "2022-12-25T09:00:00.000Z",
"end_at": "2022-12-25T17:00:00.000Z",
"name": "Conference",
"allocation_count": 103,
"sold_out": true,
"show_to_attendee": true
},
{
"_type": "activity",
"id": 9,
"capacity": 100,
"date": "2022-12-25",
"description": "An activity for Conference",
"start_time": "09:00",
"end_time": "17:00",
"start_at": "2022-12-25T09:00:00.000Z",
"end_at": "2022-12-25T17:00:00.000Z",
"name": "Conference Copy",
"allocation_count": 103,
"sold_out": true,
"show_to_attendee": true
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"questions": false,
"question_ids": false,
"question_slugs": false,
"releases": false,
"release_ids": false,
"release_slugs": false,
"upgrades": false,
"venue": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 6,
"per_page": 100,
"overall_total": 6,
"sort_options": {
"Name A-Z": {
"attr": "name",
"direction": "asc",
"default": true
},
"Name Z-A": {
"attr": "name",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/activities
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get an activity
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"activity": {
"_type": "activity",
"id": 1,
"capacity": 100,
"date": "2022-12-25",
"description": "An activity for Conference",
"start_time": "09:00",
"end_time": "17:00",
"start_at": "2022-12-25T09:00:00.000Z",
"end_at": "2022-12-25T17:00:00.000Z",
"name": "Conference",
"allocation_count": 103,
"sold_out": true,
"show_to_attendee": true
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"questions": false,
"question_ids": false,
"question_slugs": false,
"releases": false,
"release_ids": false,
"release_slugs": false,
"upgrades": false,
"venue": false
}
}
}
GET /:account_slug/:event_slug/activities/:activity_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.activity_id
- theid
of theactivity
Create an activity
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"activity[name]":"Breakfast"}'
{
"activity": {
"_type": "activity",
"id": 10,
"capacity": null,
"date": null,
"description": null,
"start_time": null,
"end_time": null,
"start_at": null,
"end_at": null,
"name": "Breakfast",
"allocation_count": 0,
"sold_out": false,
"show_to_attendee": true
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/activities
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
name
stringThe name of the activity.
Update an activity
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activities_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"activity[capacity]":100}'
{
"activity": {
"_type": "activity",
"id": 1,
"capacity": 100,
"date": "2022-12-25",
"description": "An activity for Conference",
"start_time": "09:00",
"end_time": "17:00",
"start_at": "2022-12-25T09:00:00.000Z",
"end_at": "2022-12-25T17:00:00.000Z",
"name": "Conference",
"allocation_count": 103,
"sold_out": true,
"show_to_attendee": true
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/activities/:activity_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.activity_id
- theid
of theactivity
Required attributes
name
stringThe name of the activity.
Delete an activity
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activities_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/activities/:activity_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.activity_id
- theid
of theactivity
Duplicate an activity
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
{
"activity": {
"_type": "activity",
"id": 11,
"capacity": 100,
"date": "2022-12-25",
"description": "An activity for Conference",
"start_time": "09:00",
"end_time": "17:00",
"start_at": "2022-12-25T09:00:00.000Z",
"end_at": "2022-12-25T17:00:00.000Z",
"name": "Conference Copy",
"allocation_count": 103,
"sold_out": true,
"show_to_attendee": true
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/activities/:activity_id/duplication
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.activity_id
- theid
of theactivity
you are duplicating
Answers
Answers to questions
Attributes
alternate_response
stringThe response to the question's free text field if it's included e.g. 'If other, please specify'.download_url
urlFor file field questions, the URL where the uploaded file can be downloaded.primary_response
string/arrayThe response to the question, Note, this can be a string but it also can be an array if it's for a checkboxes question with multiple responses.question
objectThe question the answer is attached to. This attribute is hidden by default but you can expand it using?expand=question
.question_id
integerTheid
of thequestion
the answer is attached to.response
stringread onlyA human friendly response to the question, a comma separated string containing theprimary_response
andalternate_response
if present.ticket
objectThe ticket this answer is attached to. This attribute is hidden by default but you can expand it using?expand=ticket
.ticket_id
integerTheid
of theticket
the answer is attached to.- Common attributes:
id
integerread onlyUnique record identifier
Expansions
Append a comma separated list of expansions to pull back more information about this Answer.
question
objectThe question the answer is attached to.ticket
objectThe ticket this answer is attached to.
Get all answers
All the answers for a single question.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug/answers' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"answers": [
{
"_type": "answer",
"id": 1,
"download_url": null,
"question_id": 1,
"ticket_id": 1,
"response": "Blue",
"primary_response": "Blue",
"alternate_response": null
},
{
"_type": "answer",
"id": 6,
"download_url": null,
"question_id": 1,
"ticket_id": 6,
"response": "Blue",
"primary_response": "Blue",
"alternate_response": null
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"question": false,
"ticket": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 49,
"per_page": 100,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/questions/:question_slug/answers
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.question_slug
- theslug
(orid
) of thequestion
.
Check-in Lists
Check-in Lists allow you to check your attendees in at the venue of your event.
Create a master check-in list for all attendees or create special lists just for particular ticket types.
Activities represent things that attendees can go to during your event that are not part of their ticket e.g. bowling or conference dinner.
Tickets can have multiple checkin_lists attached, allowing you to share capacity, set start and end dates and times, sell single and combo tickets for multi-day events, and show a schedule and itinerary to attendees.
Attributes
activities
object arrayThe activities linked to this check-in list. This attribute is hidden by default but you can expand it using?expand=activities
. See activities.activities_ids
integer arrayOr useactivities_ids
and just get an array ofid
values.checked_in_count
integerread onlyHow many attendees have checked in.checked_in_percent
integerread onlyThechecked_in_count
expressed as a percentage.expired
booleanread onlyTrue if theexpires_at
is in the past.expires_at
datetimeThe time at which the check-in list should no longer be accessible or null for no expiry.hide_unpaid
booleanIf true then any tickets not yet paid (e.g. paid by invoice) will not appear in the list.open
booleanread onlyTrue is theexpires_at
is in the future or is null. The inverse ofexpired
.qr_code_url
urlread onlyScanning the QR code at this URL will give our check-in apps access to this check-in list.questions
object arrayThe questions linked to this check-in list. This attribute is hidden by default but you can expand it using?expand=questions
. See questions.questions_ids
integer arrayOr usequestions_ids
and just get an array ofid
values.questions_slugs
string arrayOr usequestions_slugs
and just get an array ofslug
values.releases
object arrayThe releases linked to this check-in list. This attribute is hidden by default but you can expand it using?expand=releases
. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.show_company_name
booleanShow the attendees' company name on the check-in list.show_email
booleanShow the attendees' email address on the check-in list.show_phone_number
booleanShow the attendees' phone number on the check-in list.state
stringread onlyEitherexpired
oropen
.tickets_count
integerread onlyHow many tickets are there. When thechecked_in_count
is the same as this then everyone is checked in.title
stringrequiredThe name of the check-in list.web_checkin_url
urlread onlyGives you access to the web based checkin app.- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyUnique string used in the URL to identify this record.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
Expansions
Append a comma separated list of expansions to pull back more information about this Check-in List.
activities
object arrayThe activities linked to this check-in list. See activities.activities_ids
integer arrayOr useactivities_ids
and just get an array ofid
values.questions
object arrayThe questions linked to this check-in list. See questions.questions_ids
integer arrayOr usequestions_ids
and just get an array ofid
values.questions_slugs
string arrayOr usequestions_slugs
and just get an array ofslug
values.releases
object arrayThe releases linked to this check-in list. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.
Get all check-in lists
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"checkin_lists": [
{
"_type": "checkin_list",
"id": 1,
"checked_in_count": 0,
"expires_at": null,
"expired": false,
"open": true,
"qr_code_url": "https://qr.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ",
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"hide_unpaid": false,
"slug": "chk_ddqgQVVWO6Unp9CyZkXrKWQ",
"state": "open",
"title": "Front door",
"tickets_count": 184,
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:37:07.000Z",
"checked_in_percent": 0.0,
"web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ"
}
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"activity_ids": false,
"questions": false,
"question_ids": false,
"question_slugs": false,
"releases": false,
"release_ids": false,
"release_slugs": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"sort_options": {
"Name A-Z": {
"attr": "title",
"direction": "asc",
"default": true
},
"Name Z-A": {
"attr": "title",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/checkin_lists
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get a check-in list
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"checkin_list": {
"_type": "checkin_list",
"id": 1,
"checked_in_count": 0,
"expires_at": null,
"expired": false,
"open": true,
"qr_code_url": "https://qr.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ",
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"hide_unpaid": false,
"slug": "chk_ddqgQVVWO6Unp9CyZkXrKWQ",
"state": "open",
"title": "Front door",
"tickets_count": 184,
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:37:07.000Z",
"checked_in_percent": 0.0,
"web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ"
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"activity_ids": false,
"questions": false,
"question_ids": false,
"question_slugs": false,
"releases": false,
"release_ids": false,
"release_slugs": false
}
}
}
GET /:account_slug/:event_slug/checkin_lists/:checkin_list_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.checkin_list_slug
- theslug
(orid
) of thecheckin_list
.
Create a check-in list
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"checkin_list[title]":"Back door"}'
{
"checkin_list": {
"_type": "checkin_list",
"id": 5,
"checked_in_count": 0,
"expires_at": null,
"expired": false,
"open": true,
"qr_code_url": "https://qr.tito.io/checkin_lists/chk_dNjNAIKdYWIKvUltpeP455g",
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"hide_unpaid": false,
"slug": "chk_dNjNAIKdYWIKvUltpeP455g",
"state": "open",
"title": "Back door",
"tickets_count": 184,
"created_at": "2022-03-26T07:59:17.000Z",
"updated_at": "2022-03-26T07:59:17.000Z",
"checked_in_percent": 0.0,
"web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_dNjNAIKdYWIKvUltpeP455g"
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/checkin_lists
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
title
stringThe name of the check-in list.
Update a check-in list
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_lists_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"checkin_list[title]":"Front door"}'
{
"checkin_list": {
"_type": "checkin_list",
"id": 1,
"checked_in_count": 0,
"expires_at": null,
"expired": false,
"open": true,
"qr_code_url": "https://qr.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ",
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"hide_unpaid": false,
"slug": "chk_ddqgQVVWO6Unp9CyZkXrKWQ",
"state": "open",
"title": "Front door",
"tickets_count": 184,
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:37:07.000Z",
"checked_in_percent": 0.0,
"web_checkin_url": "https://checkin.tito.io/checkin_lists/chk_ddqgQVVWO6Unp9CyZkXrKWQ"
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/checkin_lists/:checkin_list_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.checkin_list_slug
- theslug
(orid
) of thecheckin_list
.
Required attributes
title
stringThe name of the check-in list.
Delete a check-in list
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_lists_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/checkin_lists/:checkin_list_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.checkin_list_slug
- theslug
(orid
) of thecheckin_list
.
Discount Codes
Read more about discount codes
Attributes
block_registrations_if_not_applicable
booleanBlock registrations when discount cannot be applied to all discountable tickets. Default isfalse
.code
StringrequiredThe code that will be distributed to provide a discount.description
StringShown on the payment form.description_for_organizer
StringOnly visible to organizers. Useful for keeping track of what discount codes are for.disable_for_degressive
booleanDisable this discount code if it's used with degressive pricing (seerelease#price_degressive
).end_at
datetimeThe time when the discount code becomes unavailable.max_quantity_per_release
integerDiscount only applies to a maximum of this number.min_quantity_per_release
integerDiscount only applies if this many tickets are selected.quantity
integerThe number of tickets that can avail of this discount code.quantity_used
integerread onlyThe number of tickets this discount code has been applied to.registrations_count
integerread onlyThe number ofregistrations
that used this discount code. Will be more than thequantity_used
if people buy multipletickets
at the same time.releases
object arrayThereleases
this discount code can be applied to. This attribute is hidden by default but you can expand it using?expand=releases
. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.share_url
urlShareable link to give access to the discount.show_public_releases
stringWhether all public tickets are shown when this discount code is used. If set to "all" (default) then they are all shown; if set to "only_attached" then public tickets are only shown if they are attached to this discount code.show_secret_releases
stringWhether secret tickets are revealed when this discount code is used. Set to "none" (default) to have them not revealed; "if_discount_code_available" to reveal them if this discount code is available; and "even_if_discount_code_not_available" if they should be revealed regardless of whether this discount code is available or not.start_at
datetimeThe time when the discount code becomes available.state
stringEitherupcoming
,current
orpast
depending on thestart_at
andend_at
values.tickets_count
integerHow many tickets have been bought with this discount code.type
StringrequiredThe kind of discount to apply.MoneyOffDiscountCode
applies a flat discount.PercentOffDiscountCode
applies a percentage discount.value
decimalrequiredThe amount off per ticket. A percentage or flat amount depending on the discount code type.- Common attributes:
id
integerread onlyUnique record identifier
Expansions
Append a comma separated list of expansions to pull back more information about this Discount Code.
releases
object arrayThereleases
this discount code can be applied to. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.
Get all discount codes
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"discount_codes": [
{
"_type": "discount_code",
"id": 2,
"code": "HALFPRICE",
"description": "Sell for 50.0% less. Unlimited. Applies to 1 ticket. Used 5 times.",
"description_for_organizer": null,
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"quantity": null,
"quantity_used": 5,
"registrations_count": 3,
"show_public_releases": "all",
"show_secret_releases": "none",
"share_url": "https://ti.to/demo/awesomeconf/discount/HALFPRICE",
"start_at": null,
"state": "current",
"tickets_count": 5,
"type": "PercentOffDiscountCode",
"value": "50.0",
"block_registrations_if_not_applicable": false,
"disable_for_degressive": false
},
{
"_type": "discount_code",
"id": 1,
"code": "FREE2U",
"description": "Sell for $1 less. Unlimited. Applies to 1 ticket. Used 5 times.",
"description_for_organizer": null,
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"quantity": null,
"quantity_used": 5,
"registrations_count": 3,
"show_public_releases": "all",
"show_secret_releases": "none",
"share_url": "https://ti.to/demo/awesomeconf/discount/FREE2U",
"start_at": null,
"state": "current",
"tickets_count": 5,
"type": "MoneyOffDiscountCode",
"value": "1.0",
"block_registrations_if_not_applicable": false,
"disable_for_degressive": false
}
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"releases": false,
"release_ids": false,
"release_slugs": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 2,
"per_page": 100,
"overall_total": 2,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"past"
],
"sort_options": {
"Code A-Z": {
"attr": "code",
"direction": "asc"
},
"Code Z-A": {
"attr": "code",
"direction": "desc",
"default": true
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Current",
"value": "current"
},
{
"label": "Past",
"value": "past"
},
{
"label": "Upcoming",
"value": "upcoming"
},
{
"label": "Used",
"value": "used"
},
{
"label": "Unused",
"value": "unused"
}
],
"selected_states": [
"current",
"upcoming",
"used",
"unused"
]
}
}
}
GET /:account_slug/:event_slug/discount_codes
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get a discount code
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"discount_code": {
"_type": "discount_code",
"id": 1,
"code": "FREE2U",
"description": "Sell for $1 less. Unlimited. Applies to 1 ticket. Used 5 times.",
"description_for_organizer": null,
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"quantity": null,
"quantity_used": 5,
"registrations_count": 3,
"show_public_releases": "all",
"show_secret_releases": "none",
"share_url": "https://ti.to/demo/awesomeconf/discount/FREE2U",
"start_at": null,
"state": "current",
"tickets_count": 5,
"type": "MoneyOffDiscountCode",
"value": "1.0",
"block_registrations_if_not_applicable": false,
"disable_for_degressive": false
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"releases": false,
"release_ids": false,
"release_slugs": false
}
}
}
GET /:account_slug/:event_slug/discount_codes/:discount_code_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.discount_code_id
- theid
of thediscount_code
Create a discount code
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"discount_code[code]":"NcIgbNNuzOtOwg","discount_code[type]":"PercentOffDiscountCode","discount_code[value]":50}'
{
"discount_code": {
"_type": "discount_code",
"id": 6,
"code": "NcIgbNNuzOtOwg",
"description": "Sell for 50.0% less. Unlimited. Applies to 0 tickets. Not used yet.",
"description_for_organizer": null,
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"quantity": null,
"quantity_used": 0,
"registrations_count": 0,
"show_public_releases": "all",
"show_secret_releases": "none",
"share_url": "https://ti.to/demo/awesomeconf/discount/NcIgbNNuzOtOwg",
"start_at": null,
"state": "current",
"tickets_count": 0,
"type": "PercentOffDiscountCode",
"value": "50.0",
"block_registrations_if_not_applicable": false,
"disable_for_degressive": false
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/discount_codes
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
code
StringThe code that will be distributed to provide a discount.type
StringThe kind of discount to apply.MoneyOffDiscountCode
applies a flat discount.PercentOffDiscountCode
applies a percentage discount.value
decimalThe amount off per ticket. A percentage or flat amount depending on the discount code type.
Update a discount code
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_codes_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"discount_code[type]":"MoneyOffDiscountCode","discount_code[value]":1}'
{
"discount_code": {
"_type": "discount_code",
"id": 1,
"code": "FREE2U",
"description": "Sell for $1 less. Unlimited. Applies to 1 ticket. Used 5 times.",
"description_for_organizer": null,
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"quantity": null,
"quantity_used": 5,
"registrations_count": 3,
"show_public_releases": "all",
"show_secret_releases": "none",
"share_url": "https://ti.to/demo/awesomeconf/discount/FREE2U",
"start_at": null,
"state": "current",
"tickets_count": 5,
"type": "MoneyOffDiscountCode",
"value": "1.0",
"block_registrations_if_not_applicable": false,
"disable_for_degressive": false
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/discount_codes/:discount_code_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.discount_code_id
- theid
of thediscount_code
Required attributes
code
StringThe code that will be distributed to provide a discount.type
StringThe kind of discount to apply.MoneyOffDiscountCode
applies a flat discount.PercentOffDiscountCode
applies a percentage discount.value
decimalThe amount off per ticket. A percentage or flat amount depending on the discount code type.
Delete a discount code
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_codes_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/discount_codes/:discount_code_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.discount_code_id
- theid
of thediscount_code
Events
An Event belongs to an Account
and most other resources belong to an event.
An event URL is the combination of the account_slug
and the event_slug
.
For example https://ti.to/ultimateconf/2024
is composed:
- The base
ti.to
URL - The Ultimate Conf
account
slugultimateconf
- The specific
event
slug for the 2024 edition.
The equivalent event can be looked up using a similar URL structure with the API base URL:
https://api.tito.io/v3/ultimateconf/2024
Attributes
account_id
integerread onlyLink to the accountaccount_slug
stringread onlyTheslug
for the account. Used in theurl
.additional_info
texttranslated*after_registration_closed_url
urltranslated*after_registration_complete_url
urltranslated*after_registration_redirect_after_questions
booleanany_live_sales
booleanread onlyany_live_tickets
booleanread onlyarchived
booleanWhether this event is archived or not.banner
objectbanner_url
urlread onlyA link to the event's banner image.consent
objectWhether consent is required for data protectioncredit_card_payment_option_gateway_type
stringThe payment option for credit cards, e.g. "stripe".credit_card_payment_option_id
integerThe reference for the payment option you are using for credit card payments. This is unique to your account.currency
string3 letter ISO 4217 currency code e.g.USD
currency_options
object arrayA list of all possible currencies for this event. This attribute is hidden by default but you can expand it using?expand=currency_options
.custom_background_color
stringColor of homepage background, e.g.#FFFF77
.custom_complete_ticket_label
custom_css
textCustom CSS used on the event homepage. This requires thecustom_css
private beta feature.custom_email_css
textThis requires thecustom_css
private beta feature.custom_email_signature
texttranslated*Custom signature for event emails. Will use a default signature if this is blank.custom_overlay_css
textThis requires thecustom_css
private beta feature.custom_registration_confirmation_subject
texttranslated*custom_registration_unavailable_message
texttranslated*custom_success_html
texttranslated*custom_ticket_added_subject
stringtranslated*custom_ticket_gifted_subject
stringtranslated*custom_ticket_message
texttranslated*custom_ticket_updated_subject
stringtranslated*custom_view_ticket_label
translated*date_or_range
stringread onlyThe date or dates of this event. E.g. "June 14th, 2022" or "June 14th-16th, 2022".day_number
integerThe day of the event, while it is happening. If the event hasn't started yet or has finished then this is blank. For example, for a two-day event this would be1
then2
.days_since
integerThe number of days since the event ended, based one theend_date
or, if that is blank, thestart_date
.days_until
integerThe number of days until the event starts, based on thestart_date
.default_billing_country
default_locale
stringThe default locale of the eventdescription
markdowntranslated*A statement or tag line describing the eventdiscount_codes_count
integerread onlyThe number of discount codes for this event.display_date
translated*display_title
translated*email_address
stringrequiredThe contact email address so that attendees can get in touch. This is required but will default to the email address of whoever created the event.email_image
email_invoice
end_date
dateThe date the event is going to endfacebook_share_message
translated*from_email
happening_in
Eitherpast
,now
,future
orunknown
(ifstart_date
is blank).hide_tax_types
invoice_change_cutoff_days
invoice_due_days
invoice_extra
translated*invoice_form_message
translated*invoice_issue_method
invoice_number_format
invoice_number_offset
invoice_payment_instructions
texttranslated*invoice_purchase_message
translated*invoice_tax_details
italian_checkout
This requires theitalian_checkout
private beta feature.last_invoice_number
live
booleanIs it visible to the public or not.locales
ArrayA list of locales supported for this eventlocation
stringThe location the event is taking placelock_changes_when_ticket_not_complete
logo
objectmap_latitude
map_link
map_longitude
map_zoomlevel
max_tickets_per_person
max_tickets_per_registration
meta_robots
metadata
jsonJSON that will appear in API requests for integration with external systemsmin_tickets_per_person
min_tickets_per_registration
next_invoice_number
organization_address
organization_name
passbook_icon
payment_instructions
translated*paypal_payment_option_id
integerThe reference for the payment option you are using for PayPal payments. This is unique to your account.paypal_payment_options
object arrayA list of the PayPal payment options available on this account. This attribute is hidden by default but you can expand it using?expand=paypal_payment_options
.private
booleanIs it to be listed on the event's account page or not.receipt_footer_message
translated*register_button_label
translated*register_interest_form_label
translated*registrations_count
releases
object arrayread onlyA list of releases. This attribute is hidden by default but you can expand it using?expand=releases
. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.releases_count
reply_to_email
requires_billing_address
requires_company_name
requires_country
requires_vat_number
secret_password
security_token
stringread onlysend_registration_confirmation_email
send_ticket_gifted_email
send_ticket_updated_email
setup
booleanread onlyshare_link
shareable_image
show_additional_info
show_banner
booleanshow_company_field
booleanshow_date
booleanshow_description
booleanshow_discount_code_field
booleanread onlyshow_email_address
booleanshow_invoice_purchase_order_number_field
booleanshow_location
booleanshow_logo
booleanshow_next_tickets
booleanshow_past_tickets
booleanshow_phone_number_field
booleanshow_prices_ex_tax
booleanWhether to display prices inclusive or exclusive of tax. Default isfalse
.show_register_interest_form
booleanshow_register_interest_form_tickets_not_on_sale
booleanshow_register_interest_form_tickets_on_sale
booleanshow_sharing_links
booleanshow_tickets_remaining
booleanshow_tickets_remaining_threshold
booleanshow_title
booleanshow_venue
booleansnoozing_disabled
booleansocial_sharing_description
stringsocial_sharing_title
stringstart_date
dateThe date the event is going to startstripe
stripe_statement_descriptor
team_signoff
translated*test_mode
booleanIs the event in test mode or not.theme
stringEithermcdonagh
orclassic
. Default ismcdonagh
.ticket_cancelling_enabled
booleanWhether attendees can cancel their own tickets. Default isfalse
.ticket_downloads_enabled
booleanWhether attendees can download a PDF of their ticket. Default istrue
.ticket_fail_message
stringtranslated*ticket_gifting_disabled
booleanticket_gifting_disabled_at
datetimeticket_gifting_disabled_message
stringtranslated*ticket_gifting_disabled_now
booleanticket_groups
ticket_qr_codes_enabled
booleanWhether tickets show a QR code. Default istrue
.ticket_success_message
texttranslated*ticket_wallet_pass_enabled
booleanWhether attendees can add their ticket to their Apple Wallet. Default istrue
.tickets_count
integerThe number of live tickets soldtickets_form_label
translated*timezone
stringThe time zone for this event, e.g. "Pacific Time (US & Canada)". Default is "UTC".title
stringrequiredtranslated*The name of the eventtwitter_share_message
texttranslated*typekit_id
stringurl
urlread onlyThe URL for the event homepage, based on the accountslug
and eventslug
.users_count
integerread only- Common attributes:
id
integerread onlyUnique record identifierslug
stringA human friendly string used in the Event URLcreated_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
* See translations.
Expansions
Append a comma separated list of expansions to pull back more information about this Event.
currency_options
object arrayA list of all possible currencies for this event.paypal_payment_options
object arrayA list of the PayPal payment options available on this account.releases
object arrayread onlyA list of releases. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.releases_slugs
string arrayOr usereleases_slugs
and just get an array ofslug
values.translations
A list of every translated attribute for each locale setup for your event.
Get all upcoming events
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/events' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"events": [
{
"discount_codes_count": 2,
"_type": "event",
"id": 1,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:59:11.000Z",
"title": "Awesomeconf",
"description": null,
"banner": {
"url": null,
"thumb": {
"url": null
}
},
"banner_url": "/uploads/event/banner/1/",
"currency": "USD",
"default_locale": "en",
"from_email": "\"Awesomeconf\" <support@tito.io>",
"reply_to_email": "bill@tito.io",
"archived": false,
"live": false,
"test_mode": false,
"locales": [
"en"
],
"location": null,
"logo": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"private": false,
"slug": "awesomeconf",
"account_id": 1,
"start_date": "2022-06-26",
"end_date": null,
"date_or_range": "June 26th, 2022",
"days_until": 92,
"days_since": -92,
"happening_in": "future",
"day_number": null,
"security_token": "8h0xrxP14FJEZrOJyu-eYg",
"metadata": {
"my_event_variable": "something",
"another_event_variable": 123
},
"url": "https://ti.to/demo/awesomeconf",
"setup": false,
"show_discount_code_field": false,
"releases_count": 4,
"account_slug": "demo",
"consent": {
"required": false
},
"registrations_count": 30,
"tickets_count": 184,
"additional_info": null,
"after_registration_closed_url": null,
"after_registration_complete_url": null,
"after_registration_redirect_after_questions": false,
"any_live_sales": true,
"any_live_tickets": true,
"credit_card_payment_option_id": null,
"credit_card_payment_option_gateway_type": null,
"custom_background_color": null,
"custom_complete_ticket_label": null,
"custom_css": null,
"custom_email_css": null,
"custom_email_signature": null,
"custom_overlay_css": null,
"custom_registration_unavailable_message": null,
"custom_registration_confirmation_subject": null,
"custom_success_html": null,
"custom_ticket_message": null,
"custom_view_ticket_label": null,
"default_billing_country": null,
"display_date": null,
"display_title": null,
"email_address": "bill@tito.io",
"email_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"email_invoice": true,
"facebook_share_message": null,
"hide_tax_types": false,
"invoice_change_cutoff_days": 90,
"invoice_due_days": null,
"invoice_extra": null,
"invoice_form_message": null,
"invoice_issue_method": "100",
"invoice_number_format": null,
"invoice_number_offset": null,
"invoice_payment_instructions": null,
"invoice_purchase_message": null,
"invoice_tax_details": null,
"italian_checkout": false,
"last_invoice_number": "0000062",
"lock_changes_when_ticket_not_complete": "1",
"payment_instructions": null,
"paypal_payment_option_id": null,
"map_latitude": "53.3428861",
"map_link": null,
"map_longitude": "-6.2674284",
"map_zoomlevel": 13,
"max_tickets_per_person": null,
"max_tickets_per_registration": null,
"meta_robots": null,
"min_tickets_per_person": null,
"min_tickets_per_registration": null,
"next_invoice_number": "0000063",
"organization_address": null,
"organization_name": null,
"passbook_icon": null,
"receipt_footer_message": null,
"register_button_label": null,
"register_interest_form_label": null,
"requires_billing_address": false,
"requires_company_name": false,
"requires_country": false,
"requires_vat_number": false,
"secret_password": null,
"send_registration_confirmation_email": true,
"send_ticket_gifted_email": true,
"send_ticket_updated_email": true,
"share_link": null,
"shareable_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"show_additional_info": true,
"show_banner": true,
"show_company_field": false,
"show_date": true,
"show_description": true,
"show_email_address": true,
"show_invoice_purchase_order_number_field": true,
"show_location": true,
"show_logo": true,
"show_next_tickets": false,
"show_past_tickets": true,
"show_phone_number_field": false,
"show_prices_ex_tax": false,
"show_register_interest_form": false,
"show_register_interest_form_tickets_not_on_sale": false,
"show_register_interest_form_tickets_on_sale": false,
"show_sharing_links": true,
"show_tickets_remaining": false,
"show_tickets_remaining_threshold": null,
"show_title": true,
"show_venue": true,
"snoozing_disabled": false,
"social_sharing_description": null,
"social_sharing_title": null,
"stripe": null,
"stripe_statement_descriptor": null,
"team_signoff": null,
"theme": "mcdonagh",
"ticket_cancelling_enabled": false,
"ticket_downloads_enabled": true,
"ticket_fail_message": null,
"ticket_gifting_disabled": false,
"ticket_gifting_disabled_at": null,
"ticket_gifting_disabled_now": false,
"ticket_gifting_disabled_message": null,
"ticket_qr_codes_enabled": true,
"ticket_success_message": null,
"ticket_wallet_pass_enabled": true,
"tickets_form_label": null,
"timezone": "UTC",
"typekit_id": null,
"twitter_share_message": null,
"users_count": 8
},
{
"discount_codes_count": 0,
"_type": "event",
"id": 2,
"created_at": "2022-03-26T07:37:05.000Z",
"updated_at": "2022-03-26T07:37:05.000Z",
"title": "Very Cool Conf",
"description": null,
"banner": {
"url": null,
"thumb": {
"url": null
}
},
"banner_url": "/uploads/event/banner/2/",
"currency": "USD",
"default_locale": "en",
"from_email": "\"Very Cool Conf\" <support@tito.io>",
"reply_to_email": "bill@tito.io",
"archived": false,
"live": false,
"test_mode": true,
"locales": [
"en"
],
"location": null,
"logo": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"private": false,
"slug": "very-cool-conf",
"account_id": 1,
"start_date": null,
"end_date": null,
"date_or_range": "",
"days_until": null,
"days_since": null,
"happening_in": "unknown",
"day_number": null,
"security_token": "zm5D5oJ5kf2AmncXlRHYjQ",
"metadata": null,
"url": "https://ti.to/demo/very-cool-conf",
"setup": true,
"show_discount_code_field": false,
"releases_count": 0,
"account_slug": "demo",
"consent": {
"required": false
},
"registrations_count": 0,
"tickets_count": 0,
"additional_info": null,
"after_registration_closed_url": null,
"after_registration_complete_url": null,
"after_registration_redirect_after_questions": false,
"any_live_sales": false,
"any_live_tickets": false,
"credit_card_payment_option_id": null,
"credit_card_payment_option_gateway_type": null,
"custom_background_color": null,
"custom_complete_ticket_label": null,
"custom_css": null,
"custom_email_css": null,
"custom_email_signature": null,
"custom_overlay_css": null,
"custom_registration_unavailable_message": null,
"custom_registration_confirmation_subject": null,
"custom_success_html": null,
"custom_ticket_message": null,
"custom_view_ticket_label": null,
"default_billing_country": null,
"display_date": null,
"display_title": null,
"email_address": "bill@tito.io",
"email_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"email_invoice": true,
"facebook_share_message": null,
"hide_tax_types": false,
"invoice_change_cutoff_days": 90,
"invoice_due_days": null,
"invoice_extra": null,
"invoice_form_message": null,
"invoice_issue_method": "100",
"invoice_number_format": null,
"invoice_number_offset": null,
"invoice_payment_instructions": null,
"invoice_purchase_message": null,
"invoice_tax_details": null,
"italian_checkout": false,
"last_invoice_number": null,
"lock_changes_when_ticket_not_complete": "1",
"payment_instructions": null,
"paypal_payment_option_id": null,
"map_latitude": null,
"map_link": null,
"map_longitude": null,
"map_zoomlevel": null,
"max_tickets_per_person": null,
"max_tickets_per_registration": null,
"meta_robots": null,
"min_tickets_per_person": null,
"min_tickets_per_registration": null,
"next_invoice_number": "0000001",
"organization_address": null,
"organization_name": null,
"passbook_icon": null,
"receipt_footer_message": null,
"register_button_label": null,
"register_interest_form_label": null,
"requires_billing_address": false,
"requires_company_name": false,
"requires_country": false,
"requires_vat_number": false,
"secret_password": null,
"send_registration_confirmation_email": true,
"send_ticket_gifted_email": true,
"send_ticket_updated_email": true,
"share_link": null,
"shareable_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"show_additional_info": true,
"show_banner": true,
"show_company_field": false,
"show_date": true,
"show_description": true,
"show_email_address": true,
"show_invoice_purchase_order_number_field": true,
"show_location": true,
"show_logo": true,
"show_next_tickets": false,
"show_past_tickets": true,
"show_phone_number_field": false,
"show_prices_ex_tax": false,
"show_register_interest_form": false,
"show_register_interest_form_tickets_not_on_sale": false,
"show_register_interest_form_tickets_on_sale": false,
"show_sharing_links": true,
"show_tickets_remaining": false,
"show_tickets_remaining_threshold": null,
"show_title": true,
"show_venue": true,
"snoozing_disabled": false,
"social_sharing_description": null,
"social_sharing_title": null,
"stripe": null,
"stripe_statement_descriptor": null,
"team_signoff": null,
"theme": "mcdonagh",
"ticket_cancelling_enabled": false,
"ticket_downloads_enabled": true,
"ticket_fail_message": null,
"ticket_gifting_disabled": false,
"ticket_gifting_disabled_at": null,
"ticket_gifting_disabled_now": false,
"ticket_gifting_disabled_message": null,
"ticket_qr_codes_enabled": true,
"ticket_success_message": null,
"ticket_wallet_pass_enabled": true,
"tickets_form_label": null,
"timezone": "UTC",
"typekit_id": null,
"twitter_share_message": null,
"users_count": 6
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"paypal_payment_options": false,
"currency_options": false,
"releases": false,
"release_ids": false,
"release_slugs": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 4,
"per_page": 100,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Past",
"value": "past"
},
{
"label": "Upcoming",
"value": "upcoming"
}
],
"selected_states": [
"upcoming"
]
}
}
}
GET /:account_slug/events
account_slug
- theslug
of theaccount
.
Get all Past Events
Where the end_date
is in the past.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/events/past' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
GET /:account_slug/events/past
account_slug
- theslug
of theaccount
.
Get all Archived Events
Where the event is archived
.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/events/archived' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
GET /:account_slug/events/archived
account_slug
- theslug
of theaccount
.
Get an event
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"event": {
"discount_codes_count": 2,
"_type": "event",
"id": 1,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:59:11.000Z",
"title": "Awesomeconf",
"description": null,
"banner": {
"url": null,
"thumb": {
"url": null
}
},
"banner_url": "/uploads/event/banner/1/",
"currency": "USD",
"default_locale": "en",
"from_email": "\"Awesomeconf\" <support@tito.io>",
"reply_to_email": "bill@tito.io",
"archived": false,
"live": false,
"test_mode": false,
"locales": [
"en"
],
"location": null,
"logo": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"private": false,
"slug": "awesomeconf",
"account_id": 1,
"start_date": "2022-06-26",
"end_date": null,
"date_or_range": "June 26th, 2022",
"days_until": 92,
"days_since": -92,
"happening_in": "future",
"day_number": null,
"security_token": "8h0xrxP14FJEZrOJyu-eYg",
"metadata": {
"my_event_variable": "something",
"another_event_variable": 123
},
"url": "https://ti.to/demo/awesomeconf",
"setup": false,
"show_discount_code_field": false,
"releases_count": 4,
"account_slug": "demo",
"consent": {
"required": false
},
"registrations_count": 30,
"tickets_count": 184,
"additional_info": null,
"after_registration_closed_url": null,
"after_registration_complete_url": null,
"after_registration_redirect_after_questions": false,
"any_live_sales": true,
"any_live_tickets": true,
"credit_card_payment_option_id": null,
"credit_card_payment_option_gateway_type": null,
"custom_background_color": null,
"custom_complete_ticket_label": null,
"custom_css": null,
"custom_email_css": null,
"custom_email_signature": null,
"custom_overlay_css": null,
"custom_registration_unavailable_message": null,
"custom_registration_confirmation_subject": null,
"custom_success_html": null,
"custom_ticket_message": null,
"custom_view_ticket_label": null,
"default_billing_country": null,
"display_date": null,
"display_title": null,
"email_address": "bill@tito.io",
"email_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"email_invoice": true,
"facebook_share_message": null,
"hide_tax_types": false,
"invoice_change_cutoff_days": 90,
"invoice_due_days": null,
"invoice_extra": null,
"invoice_form_message": null,
"invoice_issue_method": "100",
"invoice_number_format": null,
"invoice_number_offset": null,
"invoice_payment_instructions": null,
"invoice_purchase_message": null,
"invoice_tax_details": null,
"italian_checkout": false,
"last_invoice_number": "0000062",
"lock_changes_when_ticket_not_complete": "1",
"payment_instructions": null,
"paypal_payment_option_id": null,
"map_latitude": "53.3428861",
"map_link": null,
"map_longitude": "-6.2674284",
"map_zoomlevel": 13,
"max_tickets_per_person": null,
"max_tickets_per_registration": null,
"meta_robots": null,
"min_tickets_per_person": null,
"min_tickets_per_registration": null,
"next_invoice_number": "0000063",
"organization_address": null,
"organization_name": null,
"passbook_icon": null,
"receipt_footer_message": null,
"register_button_label": null,
"register_interest_form_label": null,
"requires_billing_address": false,
"requires_company_name": false,
"requires_country": false,
"requires_vat_number": false,
"secret_password": null,
"send_registration_confirmation_email": true,
"send_ticket_gifted_email": true,
"send_ticket_updated_email": true,
"share_link": null,
"shareable_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"show_additional_info": true,
"show_banner": true,
"show_company_field": false,
"show_date": true,
"show_description": true,
"show_email_address": true,
"show_invoice_purchase_order_number_field": true,
"show_location": true,
"show_logo": true,
"show_next_tickets": false,
"show_past_tickets": true,
"show_phone_number_field": false,
"show_prices_ex_tax": false,
"show_register_interest_form": false,
"show_register_interest_form_tickets_not_on_sale": false,
"show_register_interest_form_tickets_on_sale": false,
"show_sharing_links": true,
"show_tickets_remaining": false,
"show_tickets_remaining_threshold": null,
"show_title": true,
"show_venue": true,
"snoozing_disabled": false,
"social_sharing_description": null,
"social_sharing_title": null,
"stripe": null,
"stripe_statement_descriptor": null,
"team_signoff": null,
"theme": "mcdonagh",
"ticket_cancelling_enabled": false,
"ticket_downloads_enabled": true,
"ticket_fail_message": null,
"ticket_gifting_disabled": false,
"ticket_gifting_disabled_at": null,
"ticket_gifting_disabled_now": false,
"ticket_gifting_disabled_message": null,
"ticket_qr_codes_enabled": true,
"ticket_success_message": null,
"ticket_wallet_pass_enabled": true,
"tickets_form_label": null,
"timezone": "UTC",
"typekit_id": null,
"twitter_share_message": null,
"users_count": 8
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"paypal_payment_options": false,
"currency_options": false,
"releases": false,
"release_ids": false,
"release_slugs": false
}
}
}
GET /:account_slug/:event_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Create an event
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/events' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"event[title]":"Very Cool Conf"}'
{
"event": {
"discount_codes_count": 0,
"_type": "event",
"id": 5,
"created_at": "2022-03-26T07:59:15.000Z",
"updated_at": "2022-03-26T07:59:15.000Z",
"title": "Very Cool Conf",
"description": null,
"banner": {
"url": null,
"thumb": {
"url": null
}
},
"banner_url": "/uploads/event/banner/5/",
"currency": "USD",
"default_locale": "en",
"from_email": "\"Very Cool Conf\" <support@tito.io>",
"reply_to_email": "bill@tito.io",
"archived": false,
"live": false,
"test_mode": true,
"locales": [
"en"
],
"location": null,
"logo": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"private": false,
"slug": "very-cool-conf-5f2b344b-f94a-4bac-8a83-997cb0446fb0",
"account_id": 1,
"start_date": null,
"end_date": null,
"date_or_range": "",
"days_until": null,
"days_since": null,
"happening_in": "unknown",
"day_number": null,
"security_token": "C82MQ7VjshkNIRde-vOMbA",
"metadata": null,
"url": "https://ti.to/demo/very-cool-conf-5f2b344b-f94a-4bac-8a83-997cb0446fb0",
"setup": true,
"show_discount_code_field": false,
"releases_count": 0,
"account_slug": "demo",
"consent": {
"required": false
},
"registrations_count": 0,
"tickets_count": 0,
"additional_info": null,
"after_registration_closed_url": null,
"after_registration_complete_url": null,
"after_registration_redirect_after_questions": false,
"any_live_sales": false,
"any_live_tickets": false,
"credit_card_payment_option_id": null,
"credit_card_payment_option_gateway_type": null,
"custom_background_color": null,
"custom_complete_ticket_label": null,
"custom_css": null,
"custom_email_css": null,
"custom_email_signature": null,
"custom_overlay_css": null,
"custom_registration_unavailable_message": null,
"custom_registration_confirmation_subject": null,
"custom_success_html": null,
"custom_ticket_message": null,
"custom_view_ticket_label": null,
"default_billing_country": null,
"display_date": null,
"display_title": null,
"email_address": "bill@tito.io",
"email_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"email_invoice": true,
"facebook_share_message": null,
"hide_tax_types": false,
"invoice_change_cutoff_days": 90,
"invoice_due_days": null,
"invoice_extra": null,
"invoice_form_message": null,
"invoice_issue_method": "100",
"invoice_number_format": null,
"invoice_number_offset": null,
"invoice_payment_instructions": null,
"invoice_purchase_message": null,
"invoice_tax_details": null,
"italian_checkout": false,
"last_invoice_number": null,
"lock_changes_when_ticket_not_complete": "1",
"payment_instructions": null,
"paypal_payment_option_id": null,
"map_latitude": null,
"map_link": null,
"map_longitude": null,
"map_zoomlevel": null,
"max_tickets_per_person": null,
"max_tickets_per_registration": null,
"meta_robots": null,
"min_tickets_per_person": null,
"min_tickets_per_registration": null,
"next_invoice_number": "0000001",
"organization_address": null,
"organization_name": null,
"passbook_icon": null,
"receipt_footer_message": null,
"register_button_label": null,
"register_interest_form_label": null,
"requires_billing_address": false,
"requires_company_name": false,
"requires_country": false,
"requires_vat_number": false,
"secret_password": null,
"send_registration_confirmation_email": true,
"send_ticket_gifted_email": true,
"send_ticket_updated_email": true,
"share_link": null,
"shareable_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"show_additional_info": true,
"show_banner": true,
"show_company_field": false,
"show_date": true,
"show_description": true,
"show_email_address": true,
"show_invoice_purchase_order_number_field": true,
"show_location": true,
"show_logo": true,
"show_next_tickets": false,
"show_past_tickets": true,
"show_phone_number_field": false,
"show_prices_ex_tax": false,
"show_register_interest_form": false,
"show_register_interest_form_tickets_not_on_sale": false,
"show_register_interest_form_tickets_on_sale": false,
"show_sharing_links": true,
"show_tickets_remaining": false,
"show_tickets_remaining_threshold": null,
"show_title": true,
"show_venue": true,
"snoozing_disabled": false,
"social_sharing_description": null,
"social_sharing_title": null,
"stripe": null,
"stripe_statement_descriptor": null,
"team_signoff": null,
"theme": "mcdonagh",
"ticket_cancelling_enabled": false,
"ticket_downloads_enabled": true,
"ticket_fail_message": null,
"ticket_gifting_disabled": false,
"ticket_gifting_disabled_at": null,
"ticket_gifting_disabled_now": false,
"ticket_gifting_disabled_message": null,
"ticket_qr_codes_enabled": true,
"ticket_success_message": null,
"ticket_wallet_pass_enabled": true,
"tickets_form_label": null,
"timezone": "UTC",
"typekit_id": null,
"twitter_share_message": null,
"users_count": 6
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/events
account_slug
- theslug
of theaccount
.
Required attributes
email_address
stringThe contact email address so that attendees can get in touch. This is required but will default to the email address of whoever created the event.title
stringThe name of the event
Update an event
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/events/:events_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"event[quantity]":100}'
{
"event": {
"discount_codes_count": 2,
"_type": "event",
"id": 1,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:59:11.000Z",
"title": "Awesomeconf",
"description": null,
"banner": {
"url": null,
"thumb": {
"url": null
}
},
"banner_url": "/uploads/event/banner/1/",
"currency": "USD",
"default_locale": "en",
"from_email": "\"Awesomeconf\" <support@tito.io>",
"reply_to_email": "bill@tito.io",
"archived": false,
"live": false,
"test_mode": false,
"locales": [
"en"
],
"location": null,
"logo": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"private": false,
"slug": "awesomeconf",
"account_id": 1,
"start_date": "2022-06-26",
"end_date": null,
"date_or_range": "June 26th, 2022",
"days_until": 92,
"days_since": -92,
"happening_in": "future",
"day_number": null,
"security_token": "8h0xrxP14FJEZrOJyu-eYg",
"metadata": {
"my_event_variable": "something",
"another_event_variable": 123
},
"url": "https://ti.to/demo/awesomeconf",
"setup": false,
"show_discount_code_field": false,
"releases_count": 4,
"account_slug": "demo",
"consent": {
"required": false
},
"registrations_count": 30,
"tickets_count": 184,
"additional_info": null,
"after_registration_closed_url": null,
"after_registration_complete_url": null,
"after_registration_redirect_after_questions": false,
"any_live_sales": true,
"any_live_tickets": true,
"credit_card_payment_option_id": null,
"credit_card_payment_option_gateway_type": null,
"custom_background_color": null,
"custom_complete_ticket_label": null,
"custom_css": null,
"custom_email_css": null,
"custom_email_signature": null,
"custom_overlay_css": null,
"custom_registration_unavailable_message": null,
"custom_registration_confirmation_subject": null,
"custom_success_html": null,
"custom_ticket_message": null,
"custom_view_ticket_label": null,
"default_billing_country": null,
"display_date": null,
"display_title": null,
"email_address": "bill@tito.io",
"email_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"email_invoice": true,
"facebook_share_message": null,
"hide_tax_types": false,
"invoice_change_cutoff_days": 90,
"invoice_due_days": null,
"invoice_extra": null,
"invoice_form_message": null,
"invoice_issue_method": "100",
"invoice_number_format": null,
"invoice_number_offset": null,
"invoice_payment_instructions": null,
"invoice_purchase_message": null,
"invoice_tax_details": null,
"italian_checkout": false,
"last_invoice_number": "0000062",
"lock_changes_when_ticket_not_complete": "1",
"payment_instructions": null,
"paypal_payment_option_id": null,
"map_latitude": "53.3428861",
"map_link": null,
"map_longitude": "-6.2674284",
"map_zoomlevel": 13,
"max_tickets_per_person": null,
"max_tickets_per_registration": null,
"meta_robots": null,
"min_tickets_per_person": null,
"min_tickets_per_registration": null,
"next_invoice_number": "0000063",
"organization_address": null,
"organization_name": null,
"passbook_icon": null,
"receipt_footer_message": null,
"register_button_label": null,
"register_interest_form_label": null,
"requires_billing_address": false,
"requires_company_name": false,
"requires_country": false,
"requires_vat_number": false,
"secret_password": null,
"send_registration_confirmation_email": true,
"send_ticket_gifted_email": true,
"send_ticket_updated_email": true,
"share_link": null,
"shareable_image": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"show_additional_info": true,
"show_banner": true,
"show_company_field": false,
"show_date": true,
"show_description": true,
"show_email_address": true,
"show_invoice_purchase_order_number_field": true,
"show_location": true,
"show_logo": true,
"show_next_tickets": false,
"show_past_tickets": true,
"show_phone_number_field": false,
"show_prices_ex_tax": false,
"show_register_interest_form": false,
"show_register_interest_form_tickets_not_on_sale": false,
"show_register_interest_form_tickets_on_sale": false,
"show_sharing_links": true,
"show_tickets_remaining": false,
"show_tickets_remaining_threshold": null,
"show_title": true,
"show_venue": true,
"snoozing_disabled": false,
"social_sharing_description": null,
"social_sharing_title": null,
"stripe": null,
"stripe_statement_descriptor": null,
"team_signoff": null,
"theme": "mcdonagh",
"ticket_cancelling_enabled": false,
"ticket_downloads_enabled": true,
"ticket_fail_message": null,
"ticket_gifting_disabled": false,
"ticket_gifting_disabled_at": null,
"ticket_gifting_disabled_now": false,
"ticket_gifting_disabled_message": null,
"ticket_qr_codes_enabled": true,
"ticket_success_message": null,
"ticket_wallet_pass_enabled": true,
"tickets_form_label": null,
"timezone": "UTC",
"typekit_id": null,
"twitter_share_message": null,
"users_count": 8
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
email_address
stringThe contact email address so that attendees can get in touch. This is required but will default to the email address of whoever created the event.title
stringThe name of the event
Delete an event
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/events/:events_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Duplicate an event
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
{
"duplication":{
"_type":"duplication",
"status":"processing",
"title":null,
"slug":null
}
}
POST /:account_slug/:event_slug/duplication
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
As duplicating an Event
happens asynchronously the Tito API provides a response
indicating the current status
of the duplication:
processing
- The duplication is still being processed.complete
- The duplication has successfully completed.
The latest status of the duplication can be then looked up.
Duplicate an event status
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"duplication":{
"_type":"duplication",
"status":"complete",
"title":"2018 Copy",
"slug":"2018-copy"
}
}
GET /:account_slug/:event_slug/duplication
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
The latest status of the Event
duplication.
As duplicating an Event
happens asynchronously the API provides the ability to
lookup the latest status of the duplication. The status can be either:
processing
- The duplication is still being processed.complete
- The duplication has successfully completed.
Once the duplication completes the Event slug
and title
will be assigned.
Interested Users
Read more about interested users
Attributes
email
stringrequiredThe email of the interested user.name
stringThe name of the interested user.- Common attributes:
id
integerread onlyUnique record identifiercreated_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
Get all interested users
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"interested_users": [
{
"_type": "interested_user",
"id": 1,
"name": "Darth Sidious",
"email": "w4wQQDFn-9PkIg@example.com",
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:59:07.000Z"
},
{
"_type": "interested_user",
"id": 2,
"name": "Borvo the Hutt",
"email": "jamarcus.littel@example.net",
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:36:07.000Z"
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 3,
"per_page": 100,
"overall_total": 3,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/interested_users
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get an interested user
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"interested_user": {
"_type": "interested_user",
"id": 1,
"name": "Darth Sidious",
"email": "w4wQQDFn-9PkIg@example.com",
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:59:07.000Z"
},
"meta": {
"api_version": "3.1.0",
"expandable": {
}
}
}
GET /:account_slug/:event_slug/interested_users/:interested_user_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.interested_user_id
- theid
of theinterested_user
Create an interested user
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"interested_user[email]":"871mkW1IE_8m8g@example.com"}'
{
"interested_user": {
"_type": "interested_user",
"id": 7,
"name": null,
"email": "871mkW1IE_8m8g@example.com",
"created_at": "2022-03-26T07:59:19.000Z",
"updated_at": "2022-03-26T07:59:19.000Z"
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/interested_users
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
email
stringThe email of the interested user.
Update an interested user
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_users_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"interested_user[email]":"UdYANi0-YvKyiQ@example.com"}'
{
"interested_user": {
"_type": "interested_user",
"id": 1,
"name": "Darth Sidious",
"email": "UdYANi0-YvKyiQ@example.com",
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:59:19.000Z"
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/interested_users/:interested_user_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.interested_user_id
- theid
of theinterested_user
Required attributes
email
stringThe email of the interested user.
Delete an interested user
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_users_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/interested_users/:interested_user_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.interested_user_id
- theid
of theinterested_user
Opt-ins
Opt-ins is a beta feature. Contact us to get it enabled.
Attributes
acceptance_count
description
stringtranslated*The description of this opt-in.name
stringrequiredtranslated*The name of this opt-in.releases
object arrayA list of releases linked to this opt-in. This attribute is hidden by default but you can expand it using?expand=releases
. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyUnique string used in the URL to identify this record.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
* See translations.
Expansions
Append a comma separated list of expansions to pull back more information about this Opt-in.
releases
object arrayA list of releases linked to this opt-in. See releases.releases_ids
integer arrayOr usereleases_ids
and just get an array ofid
values.translations
A list of every translated attribute for each locale setup for your event.
Get all opt-ins
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"opt_ins": [
{
"_type": "opt_in",
"id": 1,
"slug": "newsletter",
"name": "Newsletter",
"description": "Please join!",
"acceptance_count": 0,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:10.000Z"
}
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"releases": false,
"release_ids": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"sort_options": {
"A-Z": {
"attr": "name",
"direction": "asc",
"default": true
},
"Z-A": {
"attr": "name",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/opt_ins
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get an opt-in
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_in_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"opt_in": {
"_type": "opt_in",
"id": 1,
"slug": "newsletter",
"name": "Newsletter",
"description": "Please join!",
"acceptance_count": 0,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:10.000Z"
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"releases": false,
"release_ids": false
}
}
}
GET /:account_slug/:event_slug/opt_ins/:opt_in_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.opt_in_slug
- theslug
(orid
) of theopt_in
.
Create an opt-in
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"opt_in[name]":"Swag","opt_in[description]":"Would you like SWAG?"}'
{
"opt_in": {
"_type": "opt_in",
"id": 5,
"slug": "swag",
"name": "Swag",
"description": "Would you like SWAG?",
"acceptance_count": 0,
"created_at": "2022-03-26T07:59:19.000Z",
"updated_at": "2022-03-26T07:59:19.000Z"
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/opt_ins
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
name
stringThe name of this opt-in.
Update an opt-in
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_ins_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"opt_in[description]":"Please join!"}'
{
"opt_in": {
"_type": "opt_in",
"id": 1,
"slug": "newsletter",
"name": "Newsletter",
"description": "Please join!",
"acceptance_count": 0,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:10.000Z"
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/opt_ins/:opt_in_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.opt_in_slug
- theslug
(orid
) of theopt_in
.
Required attributes
name
stringThe name of this opt-in.
Delete an opt-in
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_ins_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/opt_ins/:opt_in_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.opt_in_slug
- theslug
(orid
) of theopt_in
.
Questions
Attributes
activities
object arrayA list of activities linked to this question. This attribute is hidden by default but you can expand it using?expand=activities
. See activities.answers_count
integerread onlyThe number of answers. See alsotickets_count
.description
stringtranslated*A statement or tag line describing the questionfield_type
stringrequiredCheckboxes
,Country
,File
,Select
,Text
orTextarea
.include_free_text_field
booleanShould an 'Other' text field be included alongside this question or not. Only applies toCheckboxes
orSelect
field questions. Default isfalse
options
textA line separated list of options for this question e.g.A\nB\nC
. Only applies toCheckboxes
orSelect
field questions.options_free_text_field
stringA custom label for the 'Other' text field option if it's enabled. Only applies toCheckboxes
orSelect
field questions.releases
object arrayA list of releases linked to this question. This attribute is hidden by default but you can expand it using?expand=releases
. See releases.required
booleanDoes this question require a response or not. Default isfalse
tickets_count
integerread onlyThe number of tickets that have asked this question. Theanswers_count
will be less than or equal to this.title
stringrequiredtranslated*The question you would like to ask.- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyUnique string used in the URL to identify this record.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
* See translations.
Get all questions
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"questions": [
{
"_type": "question",
"id": 1,
"answers_count": 49,
"description": "What is your most favorite color of all?",
"title": "Fave tree?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "favorite-color",
"tickets_count": 103,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:09.000Z"
},
{
"_type": "question",
"id": 2,
"answers_count": 153,
"description": "To help us with travel arrangements",
"title": "Where do you live?",
"field_type": "Country",
"include_free_text_field": false,
"required": true,
"slug": "where-do-you-live",
"tickets_count": 0,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:36:06.000Z"
}
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"releases": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 3,
"per_page": 100,
"overall_total": 2,
"sort_options": {
"Question Title, A-Z": {
"attr": "title",
"direction": "asc",
"default": true
},
"Question Title, Z-A": {
"attr": "title",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/questions
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get a question
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"question": {
"_type": "question",
"id": 1,
"answers_count": 49,
"description": "What is your most favorite color of all?",
"title": "Fave tree?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "favorite-color",
"tickets_count": 103,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:09.000Z"
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"releases": false
}
}
}
GET /:account_slug/:event_slug/questions/:question_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.question_slug
- theslug
(orid
) of thequestion
.
Create a question
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"question[title]":"Fave city?","question[field_type]":"Text"}'
{
"question": {
"_type": "question",
"id": 6,
"answers_count": null,
"description": null,
"title": "Fave city?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "fave-city",
"tickets_count": 0,
"created_at": "2022-03-26T07:59:18.000Z",
"updated_at": "2022-03-26T07:59:18.000Z"
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/questions
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
field_type
stringCheckboxes
,Country
,File
,Select
,Text
orTextarea
.title
stringThe question you would like to ask.
Update a question
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:questions_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"question[title]":"Fave tree?"}'
{
"question": {
"_type": "question",
"id": 1,
"answers_count": 49,
"description": "What is your most favorite color of all?",
"title": "Fave tree?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "favorite-color",
"tickets_count": 103,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:09.000Z"
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/questions/:question_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.question_slug
- theslug
(orid
) of thequestion
.
Required attributes
field_type
stringCheckboxes
,Country
,File
,Select
,Text
orTextarea
.title
stringThe question you would like to ask.
Delete a question
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:questions_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/questions/:question_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.question_slug
- theslug
(orid
) of thequestion
.
Refunds
Attributes
amount
decimalrequiredHow much was refundedmanual
booleanread onlyTrue if the refund was not processed via the payment gateway.registration
objectread onlyThe registration this refund relates to. This attribute is hidden by default but you can expand it using?expand=registration
.- Common attributes:
id
integerread onlyUnique record identifiercreated_at
datetimeread onlyTimestamp of when this record was created.
Expansions
Append a comma separated list of expansions to pull back more information about this Refund.
registration
objectread onlyThe registration this refund relates to.
Get all refunds
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/refunds' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"refunds": [
{
"_type": "refund",
"id": 19,
"amount": "-90.0",
"created_at": "2022-03-26T07:36:16.000Z",
"manual": null
},
{
"_type": "refund",
"id": 7,
"amount": "-190.0",
"created_at": "2022-03-26T07:36:10.000Z",
"manual": null
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"registration": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 4,
"per_page": 100,
"overall_total": 4,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/refunds
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get a refund
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/refunds/:refund_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"refund": {
"_type": "refund",
"id": 7,
"amount": "-190.0",
"created_at": "2022-03-26T07:36:10.000Z",
"manual": null
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"registration": false
}
}
}
GET /:account_slug/:event_slug/refunds/:refund_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.refund_slug
- theslug
(orid
) of therefund
.
Registrations
Attributes
billing_address
objectThe address entered during payment. This attribute is hidden by default but you can expand it using?expand=billing_address
.cancelled
booleanread onlyWhether this registration has been cancelled.cancelled_at
datetimeread onlyThe date this registration was cancelled.cancelled_by
stringread onlyThe name or email of who cancelled this registration.company_name
completed_at
consented_at
discount_code
discount_code_id
editable_total_and_prices
email
event
Objectread onlyThe event this registration belongs to, containing itsid
,title
,slug
andpath
.expires_at
free
imported
invoice
ip_address
job_title
line_items
object arrayAn array ofLine Items
attached to this registration. This attribute is hidden by default but you can expand it using?expand=line_items
.locale
manual
metadata
name
paid
partially_refunded
payment
payment_complete
payment_incomplete
payment_option_name
payment_option_provider_name
payment_reference
phone_number
quantities
receipt
receipt_id
receipt_number
receipt_paid
receipts
object arrayAn array ofReceipts
attached to this registration. This attribute is hidden by default but you can expand it using?expand=receipts
.reference
refundable
refunded
refunds
object arrayAn array ofRefunds
attached to this registration. This attribute is hidden by default but you can expand it using?expand=refunds
. See refunds.registration_type
source
state
terms_accepted
termset_ids
test_mode
tickets
object arrayAn array ofTickets
attached to this registration. This attribute is hidden by default but you can expand it using?expand=tickets
. See tickets.tickets_count
total
total_less_tax
- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyUnique string used in the URL to identify this record.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
Expansions
Append a comma separated list of expansions to pull back more information about this Registration.
billing_address
objectThe address entered during payment.line_items
object arrayAn array ofLine Items
attached to this registration.receipts
object arrayAn array ofReceipts
attached to this registration.refunds
object arrayAn array ofRefunds
attached to this registration. See refunds.tickets
object arrayAn array ofTickets
attached to this registration. See tickets.
Get all registrations
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"registrations": [
{
"_type": "registration",
"id": 29,
"slug": "reg_djFKz14smymcBAHSQKAm4sw",
"created_at": "2022-03-26T07:36:26.000Z",
"updated_at": "2022-03-26T07:36:26.000Z",
"completed_at": "2022-03-26T07:36:26.000Z",
"discount_code": null,
"email": "jake@example.net",
"job_title": null,
"expires_at": "2022-03-26 07:51:26 UTC",
"ip_address": null,
"locale": "en",
"metadata": null,
"name": "Nute Gunray",
"company_name": null,
"payment_reference": null,
"payment_option_name": null,
"phone_number": null,
"registration_type": "manual",
"reference": "LP3B",
"source": null,
"state": "incomplete",
"test_mode": false,
"cancelled": false,
"cancelled_at": null,
"cancelled_by": null,
"free": false,
"paid": true,
"invoice": true,
"manual": true,
"imported": false,
"refundable": true,
"refunded": false,
"partially_refunded": false,
"receipt_paid": true,
"receipt_number": "0000059",
"receipt_id": 59,
"payment_incomplete": false,
"payment_complete": true,
"total": 380.0,
"tickets_count": 6,
"consented_at": null,
"terms_accepted": false,
"termset_ids": [
],
"editable_total_and_prices": true,
"total_less_tax": 380.0,
"discount_code_id": null,
"payment_option_provider_name": null,
"quantities": {
"early-bird": {
"release": "Early Bird",
"quantity": 2
},
"standard": {
"release": "Standard",
"quantity": 2
},
"exhibitor": {
"release": "Exhibitor",
"quantity": 1
},
"speaker": {
"release": "Speaker",
"quantity": 1
}
}
},
{
"_type": "registration",
"id": 30,
"slug": "reg_dBDhMdUevS3G5Qwc9Tkmk7Q",
"created_at": "2022-03-26T07:36:26.000Z",
"updated_at": "2022-03-26T07:36:27.000Z",
"completed_at": "2022-03-26T07:36:27.000Z",
"discount_code": null,
"email": "crystal_jast@example.org",
"job_title": null,
"expires_at": "2022-03-26 07:51:26 UTC",
"ip_address": null,
"locale": "en",
"metadata": null,
"name": "Ki-Adi-Mundi",
"company_name": null,
"payment_reference": null,
"payment_option_name": null,
"phone_number": null,
"registration_type": "manual",
"reference": "UHMF",
"source": null,
"state": "incomplete",
"test_mode": false,
"cancelled": false,
"cancelled_at": null,
"cancelled_by": null,
"free": false,
"paid": true,
"invoice": true,
"manual": true,
"imported": false,
"refundable": true,
"refunded": false,
"partially_refunded": false,
"receipt_paid": true,
"receipt_number": "0000061",
"receipt_id": 61,
"payment_incomplete": false,
"payment_complete": true,
"total": 270.0,
"tickets_count": 8,
"consented_at": null,
"terms_accepted": false,
"termset_ids": [
],
"editable_total_and_prices": true,
"total_less_tax": 270.0,
"discount_code_id": null,
"payment_option_provider_name": null,
"quantities": {
"early-bird": {
"release": "Early Bird",
"quantity": 3
},
"exhibitor": {
"release": "Exhibitor",
"quantity": 2
},
"speaker": {
"release": "Speaker",
"quantity": 3
}
}
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"billing_address": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 30,
"per_page": 100,
"overall_total": 30,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"cancelled"
],
"sort_options": {
"Name A-Z": {
"attr": "name",
"direction": "asc"
},
"Name Z-A": {
"attr": "name",
"direction": "desc"
},
"Purchase date, earliest first": {
"attr": "created_at",
"direction": "asc"
},
"Purchase date, newest first": {
"attr": "created_at",
"direction": "desc"
},
"Total paid, least first": {
"attr": "total",
"direction": "asc"
},
"Total paid, most first": {
"attr": "total",
"direction": "desc",
"default": true
},
"Reference": {
"attr": "reference",
"direction": "asc"
},
"Payment provider": {
"attr": "payment_provider",
"direction": "asc"
},
"Last change": {
"attr": "updated_at",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Paid",
"value": "paid"
},
{
"label": "Unpaid",
"value": "unpaid"
},
{
"label": "Complete",
"value": "complete"
},
{
"label": "Confirmed",
"value": "confirmed"
},
{
"label": "Incomplete",
"value": "incomplete"
},
{
"label": "Cancelled",
"value": "cancelled"
}
],
"selected_states": [
"paid",
"unpaid",
"complete",
"confirmed",
"incomplete"
]
}
}
}
GET /:account_slug/:event_slug/registrations
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Sort Order
The default order is by created_at
with newest registrations first. You can change the order by appending some parameters to the endpoint URL. This is the same as the default:
?search[sort]=created_at&search[direction]=desc
The direction can either be asc
or desc
.
You can sort on the following attributes:
name
created_at
updated_at
total
reference
payment_provider
Filtering
You can filter which registrations you get back too. For instance, to only get unpaid
or incomplete
registrations:
By state
?search[states][]=unpaid&search[states][]=incomplete
Possible states are:
cancelled
complete
confirmed
incomplete
paid
unpaid
By time
This will show all registrations created since 1 Jan 2019 at 9am UTC:
?search[created_at][gt]=2019-01-01T09:00:00+UTC
That operator can be:
gt
- greater thangte
- greater than or equal tolt
- less thanlte
- less than or equal to
And you can do that on the following attributes
created_at
updated_at
So, for instance, to find all registrations that have been updated in the last hour:
?search[updated_at][gt]=2019-01-01T09:00:00+UTC
(where you obviously change that timestamp to be one hour ago).
Note: if you don't use the +UTC
suffix on those timestamps it will default to the time zone used by the event itself.
By any text
You can also search by text, which uses the same logic as the dashboard UI:
- name
- slug
- reference
- company name
- discount code
For example:
?q=Alice
Get a registration
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"registration": {
"_type": "registration",
"id": 1,
"slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:59:13.000Z",
"completed_at": "2022-03-26T07:36:07.000Z",
"discount_code": "FREE2U",
"email": "nIFOizT0YnYTTA@example.com",
"job_title": null,
"expires_at": "2022-03-26 07:51:07 UTC",
"ip_address": null,
"locale": "en",
"metadata": null,
"name": "Watto",
"company_name": null,
"payment_reference": null,
"payment_option_name": null,
"phone_number": null,
"registration_type": "manual",
"reference": "9K9R",
"source": null,
"state": "incomplete",
"test_mode": false,
"cancelled": false,
"cancelled_at": null,
"cancelled_by": null,
"free": false,
"paid": true,
"invoice": true,
"manual": true,
"imported": false,
"refundable": false,
"refunded": false,
"partially_refunded": false,
"receipt_paid": false,
"receipt_number": "0000001",
"receipt_id": 1,
"payment_incomplete": true,
"payment_complete": false,
"total": 270.0,
"tickets_count": 6,
"consented_at": null,
"terms_accepted": false,
"termset_ids": [
],
"editable_total_and_prices": true,
"total_less_tax": 270.0,
"discount_code_id": 1,
"payment_option_provider_name": null,
"quantities": {
"early-bird": {
"release": "Early Bird",
"quantity": 3
},
"standard": {
"release": "Standard",
"quantity": 2
},
"exhibitor": {
"release": "Exhibitor",
"quantity": 1
}
}
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"billing_address": false
}
}
}
GET /:account_slug/:event_slug/registrations/:registration_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_id
- theid
of theregistration
Create a registration
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"registration[email]":"rUQwD6LdqHR8sA@example.com","registration[name]":"Jane Smith","registration[discount_code]":"","registration[source]":"","registration[line_items][][release_id]":1,"registration[line_items][][quantity]":1}'
{
"registration": {
"_type": "registration",
"id": 105,
"slug": "reg_dzHx3ANTal31xvP1dHbdL0w",
"created_at": "2022-04-27T08:09:33.000+01:00",
"updated_at": "2022-04-27T08:09:33.000+01:00",
"completed_at": "2022-04-27T08:09:33.000+01:00",
"discount_code": "",
"email": "rUQwD6LdqHR8sA@example.com",
"job_title": null,
"expires_at": "2022-04-27 08:24:33 +0100",
"ip_address": "192.168.80.6",
"locale": "en",
"metadata": null,
"name": "Jane Smith",
"company_name": null,
"payment_reference": null,
"payment_option_name": "manual",
"phone_number": null,
"registration_type": "manual",
"reference": "3Q8K",
"source": null,
"state": "incomplete",
"test_mode": false,
"cancelled": false,
"cancelled_at": null,
"cancelled_by": null,
"free": false,
"paid": true,
"invoice": false,
"manual": true,
"imported": false,
"refundable": true,
"refunded": false,
"partially_refunded": false,
"receipt_paid": true,
"receipt_number": "0000025",
"receipt_id": 108,
"payment_incomplete": false,
"payment_complete": true,
"total": 90.0,
"tickets_count": 1,
"consented_at": null,
"terms_accepted": false,
"termset_ids": [
],
"editable_total_and_prices": true,
"total_less_tax": 90.0,
"discount_code_id": null,
"payment_option_provider_name": null,
"quantities": {
"early-bird": {
"release": "Early Bird for Wednesday and Thursday for Students and Others Only",
"quantity": 1
}
}
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/registrations
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
- None
Update a registration
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registrations_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"registration[email]":"44UDocNZuV4pmw@example.com"}'
{
"registration": {
"_type": "registration",
"id": 1,
"slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:59:20.000Z",
"completed_at": "2022-03-26T07:36:07.000Z",
"discount_code": "FREE2U",
"email": "44UDocNZuV4pmw@example.com",
"job_title": null,
"expires_at": "2022-03-26 07:51:07 UTC",
"ip_address": null,
"locale": "en",
"metadata": null,
"name": "Watto",
"company_name": null,
"payment_reference": null,
"payment_option_name": null,
"phone_number": null,
"registration_type": "manual",
"reference": "9K9R",
"source": null,
"state": "incomplete",
"test_mode": false,
"cancelled": false,
"cancelled_at": null,
"cancelled_by": null,
"free": false,
"paid": true,
"invoice": true,
"manual": true,
"imported": false,
"refundable": false,
"refunded": false,
"partially_refunded": false,
"receipt_paid": false,
"receipt_number": "0000001",
"receipt_id": 1,
"payment_incomplete": true,
"payment_complete": false,
"total": 270.0,
"tickets_count": 6,
"consented_at": null,
"terms_accepted": false,
"termset_ids": [
],
"editable_total_and_prices": true,
"total_less_tax": 270.0,
"discount_code_id": 1,
"payment_option_provider_name": null,
"quantities": {
"early-bird": {
"release": "Early Bird",
"quantity": 3
},
"standard": {
"release": "Standard",
"quantity": 2
},
"exhibitor": {
"release": "Exhibitor",
"quantity": 1
}
}
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/registrations/:registration_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_id
- theid
of theregistration
Required attributes
- None
Mark a registration as Paid
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
Pay by invoice is a beta feature. Contact us to get it enabled.
POST /:account_slug/:event_slug/registrations/:registration_slug/confirmations
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_slug
- theslug
(orid
) of theregistration
.
Show that a Registration
has been paid. Useful if you are allowing your customers to pay by invoice.
Changes the receipt_paid
attribute to true.
Mark a Registration as Unpaid
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Pay by invoice is a beta feature. Contact us to get it enabled.
DELETE /:account_slug/:event_slug/registrations/:registration_slug/confirmations
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_slug
- theslug
(orid
) of theregistration
.
Show that a Registration
has NOT been paid. Useful if you are allowing your customers to pay by invoice. You wouldn't normally need to do this but might do if you marked it as paid by mistake.
Changes the receipt_paid
attribute to false.
Refund a Registration
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/refunds' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"refund":{"manual":false}}'
POST /:account_slug/:event_slug/registrations/:registration_slug/refunds
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_slug
- theslug
(orid
) of theregistration
.
Parameters
refund[manual]
booleanrequiredSet to true if you don't want to refund via the payment provider or false if you do.
Cancel a Registration
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/cancellation' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
POST /:account_slug/:event_slug/registrations/:registration_slug/cancellation
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_slug
- theslug
(orid
) of theregistration
.
This will cancel a registration and void any associated tickets.
Releases
Attributes
activities
object arrayread onlyActivities linked to this release. This attribute is hidden by default but you can expand it using?expand=activities
. See activities.activity_questions
object arrayread onlyQuestions linked by activities to this release. This attribute is hidden by default but you can expand it using?expand=activity_questions
.allocatable
integerread onlyarchived
booleancard_payments
booleanchanges_locked
booleanread onlyWhether tickets of this release type can be changed. Depends onlock_changes
and also the event settings.combo_releases
object arrayread onlyA list of releases linked bysuper_combo_releases
. This attribute is hidden by default but you can expand it using?expand=combo_releases
.default_quantity
integerThe number of tickets to add the payment form by default.deletable
booleanread onlyWhether this release can be safely deleted. Set to false if any tickets have been sold (even in test mode).description
stringtranslated*Describes this releasediscounted_tickets_count
integerread onlyHow many tickets of this release type that have been discounted.display_price
decimalread onlyThe price to display. Could be including or excluding tax depending on the event settings.donation
booleanWhether donations are allowed for this release.enable_super_combo_summary
booleanend_at
datetimeWhen the release is available until (can be null). See alsostart_at
.event_id
integerread onlyReferences the eventexpired
booleanread onlyIf theend_at
is set and it's in the pastfail_message
texttranslated*Message to show on failure.free_tickets_count
integerread onlyThe number of free tickets of this release type.full_price_tickets_count
integerread onlyThe number of tickets of this release type for which full price was paid.gross_income
decimalread onlyThe income generated including tax and feeshas_fail_message
booleanread onlyWhether thefail_message
is present.has_success_message
booleanread onlyWhether thesuccess_message
is present.invoice
booleanWhether people can pay by invoice. This requires theinvoices
private beta feature.lock_changes
booleanWhether tickets are locked for this release.locked
booleanread onlyIf a lot of people are buying tickets of this type and we're nearing capacity then the release is automatically locked for a short period of time.max_donation
decimalThe maximum allowable donation. See alsodonation
andmin_donation
.max_tickets_per_person
integerActually the maximum number tickets of this release type per registration (order) not per person. See alsomin_tickets_per_person
.metadata
objectA hash of metadata.min_donation
decimalThe minimum allowable donation. See alsodonation
andmax_donation
.min_tickets_per_person
integerActually the minimum number tickets of this release type per registration (order) not per person. See alsomax_tickets_per_person
.not_a_ticket
booleanWhether tickets of this release type appear as tickets to the attendee. Usually used in combination with supercombos.off_sale
booleanread onlyWhether this release is currently available to buy. See alsostate_name
.only_issue_combos
booleanUsed in connection with supercombos.payment_type
stringread onlyEither "degressive", "donation", "paid", or "free".pending_waiting_list
position
integerDefines sort order when displaying releases.price
decimalHow much to sell this release for. See alsotax_exclusive
andprice_degressive
.price_degressive
stringComma separated list of prices to use with degressive (reducing) pricing.price_degressive_list
decimal arrayread onlyList ofprice_degressive
, split by commas.price_ex_tax
decimalread onlyThe price excluding any tax. See alsoprice
andtax_exclusive
.pricing_type
stringread onlyAlias forpayment_type
.quantity
integerThe total number of tickets of this release type available.questions
object arrayread onlyList of questions. This attribute is hidden by default but you can expand it using?expand=questions
. See questions.request_company_name
booleanWhether the company name field is shown on the payment form. See alsorequire_company_name
.request_vat_number
booleanWhether the VAT number field is shown on the payment form. See alsorequire_vat_number
.require_billing_address
booleanWhether the billing address is required on the payment form.require_company_name
booleanWhether the company name is required. See alsorequest_company_name
.require_credit_card_for_sold_out_waiting_list
booleanrequire_email
booleanWhether an email is required. Default istrue
.require_name
booleanWhether a name is required. Default istrue
.require_vat_number
booleanWhether the VAT number is required. See alsorequest_vat_number
.secret
booleanA secret release is only shown if you use its shareable URL (share_url
) or if it's revealed by using a discount code.share_url
urlread onlyA URL that will display just this release. Useful for giving people access tosecret
tickets.show_company_name
booleanshow_discount_code_field_here
booleanshow_phone_number
booleanshow_price
booleanshow_qr_code
booleanshow_vat_number
booleansold_out
booleanread onlyThere are no more tickets available. Could be because ofquantity
or a linked activity.start_at
datetimeWhen the release is available until (can be null). See alsoend_at
.state_name
stringread onlyEither "on_sale" or "off_sale".success_message
texttranslated*Message to show on success.suggested_donation
decimalThe suggested donation amount. See alsomin_donation
andmax_donation
.super_combo_releases
object arrayread onlyA list of that shows the releaseid
of all super combo releases and thequantity
of each. See alsocombo_releases
. This attribute is hidden by default but you can expand it using?expand=super_combo_releases
.tax_components
object arrayread onlyTax components linked to this release. This attribute is hidden by default but you can expand it using?expand=tax_components
.tax_description
tax_exclusive
booleanWhether theprice
is inclusive or exclusive of tax.tax_types
object arrayread onlyTax types linked to this release. This attribute is hidden by default but you can expand it using?expand=tax_types
.termset
objectread onlyLink to termset This attribute is hidden by default but you can expand it using?expand=termset
.ticket_group
objectLink to ticket group This attribute is hidden by default but you can expand it using?expand=ticket_group
.tickets_count
integerread onlyThe number of non-void tickets.title
stringrequiredtranslated*The title of this release.upcoming
booleanread onlyIf thestart_at
is in the future. Set tofalse
if there is nostart_at
.voided_tickets_count
integerread onlyThe number of voided tickets.waiting_list
waiting_list_enabled_during_locked
booleanWhether the waiting list is enabled because this release is locked.waiting_list_enabled_during_sold_out
booleanWhether the waiting list is enabled because this release is sold out.warnings
objectread onlyWarnings related to whether this release is limited because of activity limits or whether this release is locked.- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyUnique string used in the URL to identify this record.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
* See translations.
Expansions
Append a comma separated list of expansions to pull back more information about this Release.
activities
object arrayread onlyActivities linked to this release. See activities.activity_questions
object arrayread onlyQuestions linked by activities to this release.combo_releases
object arrayread onlyA list of releases linked bysuper_combo_releases
.questions
object arrayread onlyList of questions. See questions.super_combo_releases
object arrayread onlyA list of that shows the releaseid
of all super combo releases and thequantity
of each. See alsocombo_releases
.tax_components
object arrayread onlyTax components linked to this release.tax_types
object arrayread onlyTax types linked to this release.termset
objectread onlyLink to termsetticket_group
objectLink to ticket grouptranslations
A list of every translated attribute for each locale setup for your event.
Get all releases
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"releases": [
{
"_type": "release",
"id": 1,
"event_id": 1,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:13.000Z",
"slug": "early-bird",
"title": "Early Bird",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": 0,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"show_qr_code": true,
"only_issue_combos": false,
"pricing_type": "paid",
"payment_type": "paid",
"position": 0,
"price": 90.0,
"price_ex_tax": 90.0,
"tax_exclusive": false,
"price_degressive": null,
"price_degressive_list": [
],
"quantity": 300,
"request_company_name": null,
"request_vat_number": null,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": true,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": "90.0",
"lock_changes": null,
"state_name": "on_sale",
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/demo/awesomeconf/with/early-bird",
"tickets_count": 56,
"locked": false,
"waiting_list": false,
"sold_out": true,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": false,
"changes_locked": false,
"deletable": false,
"display_price": 90.0,
"gross_income": 0.0,
"full_price_tickets_count": 56,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"pending_waiting_list": false,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": null,
"show_phone_number": false,
"tax_description": null,
"warnings": {
"quantity": "This ticket’s quantity is set to 300 but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
}
},
{
"_type": "release",
"id": 2,
"event_id": 1,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:36:06.000Z",
"slug": "standard",
"title": "Standard",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": 0,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"show_qr_code": true,
"only_issue_combos": false,
"pricing_type": "paid",
"payment_type": "paid",
"position": 0,
"price": 100.0,
"price_ex_tax": 100.0,
"tax_exclusive": false,
"price_degressive": null,
"price_degressive_list": [
],
"quantity": null,
"request_company_name": null,
"request_vat_number": null,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": true,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": "100.0",
"lock_changes": null,
"state_name": "on_sale",
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/demo/awesomeconf/with/standard",
"tickets_count": 47,
"locked": false,
"waiting_list": false,
"sold_out": true,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": false,
"changes_locked": false,
"deletable": false,
"display_price": 100.0,
"gross_income": 0.0,
"full_price_tickets_count": 37,
"free_tickets_count": 5,
"discounted_tickets_count": 10,
"voided_tickets_count": 0,
"pending_waiting_list": false,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": null,
"show_phone_number": false,
"tax_description": null,
"warnings": {
"quantity": "This ticket’s quantity is not limited but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
}
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"activity_questions": false,
"combo_releases": false,
"questions": false,
"super_combo_releases": false,
"tax_components": false,
"tax_types": false,
"termset": false,
"ticket_group": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 4,
"per_page": 100,
"overall_total": 4,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"archived"
],
"sort_options": {
"Position on event homepage": {
"attr": "position",
"direction": "asc",
"default": true
},
"On sale date, earliest first": {
"attr": "start_at",
"direction": "desc"
},
"On sale date, latest first": {
"attr": "start_at",
"direction": "asc"
},
"Title A-Z": {
"attr": "title",
"direction": "asc"
},
"Title Z-A": {
"attr": "title",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "On Sale",
"value": "on_sale"
},
{
"label": "Off Sale",
"value": "off_sale"
},
{
"label": "Not Sold Out",
"value": "not_sold_out"
},
{
"label": "Sold Out",
"value": "sold_out"
},
{
"label": "Public",
"value": "public"
},
{
"label": "Secret",
"value": "secret"
},
{
"label": "Active",
"value": "active"
},
{
"label": "Archived",
"value": "archived"
},
{
"label": "Changes Locked",
"value": "changes_locked"
},
{
"label": "Changes Allowed",
"value": "changes_allowed"
}
],
"selected_states": [
"on_sale",
"off_sale",
"not_sold_out",
"sold_out",
"public",
"secret",
"active",
"changes_locked",
"changes_allowed"
]
}
}
}
GET /:account_slug/:event_slug/releases
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get a release
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"release": {
"_type": "release",
"id": 1,
"event_id": 1,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:13.000Z",
"slug": "early-bird",
"title": "Early Bird",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": 0,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"show_qr_code": true,
"only_issue_combos": false,
"pricing_type": "paid",
"payment_type": "paid",
"position": 0,
"price": 90.0,
"price_ex_tax": 90.0,
"tax_exclusive": false,
"price_degressive": null,
"price_degressive_list": [
],
"quantity": 300,
"request_company_name": null,
"request_vat_number": null,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": true,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": "90.0",
"lock_changes": null,
"state_name": "on_sale",
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/demo/awesomeconf/with/early-bird",
"tickets_count": 56,
"locked": false,
"waiting_list": false,
"sold_out": true,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": false,
"changes_locked": false,
"deletable": false,
"display_price": 90.0,
"gross_income": 0.0,
"full_price_tickets_count": 56,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"pending_waiting_list": false,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": null,
"show_phone_number": false,
"tax_description": null,
"warnings": {
"quantity": "This ticket’s quantity is set to 300 but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
}
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"activity_questions": false,
"combo_releases": false,
"questions": false,
"super_combo_releases": false,
"tax_components": false,
"tax_types": false,
"termset": false,
"ticket_group": false
}
}
}
GET /:account_slug/:event_slug/releases/:release_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Create a release
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"release[title]":"Late Bird"}'
{
"release": {
"_type": "release",
"id": 8,
"event_id": 1,
"created_at": "2022-03-26T07:59:22.000Z",
"updated_at": "2022-03-26T07:59:22.000Z",
"slug": "late-bird",
"title": "Late Bird",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": 0,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": null,
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"show_qr_code": true,
"only_issue_combos": false,
"pricing_type": "free",
"payment_type": "free",
"position": 0,
"price": null,
"price_ex_tax": 0.0,
"tax_exclusive": false,
"price_degressive": null,
"price_degressive_list": [
],
"quantity": null,
"request_company_name": null,
"request_vat_number": null,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": true,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": null,
"lock_changes": null,
"state_name": "off_sale",
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/demo/awesomeconf/with/late-bird",
"tickets_count": 0,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": true,
"expired": false,
"upcoming": false,
"allocatable": false,
"changes_locked": false,
"deletable": true,
"display_price": 0.0,
"gross_income": 0.0,
"full_price_tickets_count": 0,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"pending_waiting_list": false,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": null,
"show_phone_number": false,
"tax_description": null,
"warnings": {
"quantity": "This ticket’s quantity is not limited but there are only 100 tickets remaining because it is limited by the overall event capacity of 100."
}
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/releases
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
title
stringThe title of this release.
Update a release
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:releases_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"release[quantity]":300}'
{
"release": {
"_type": "release",
"id": 1,
"event_id": 1,
"created_at": "2022-03-26T07:36:06.000Z",
"updated_at": "2022-03-26T07:37:13.000Z",
"slug": "early-bird",
"title": "Early Bird",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": 0,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"show_qr_code": true,
"only_issue_combos": false,
"pricing_type": "paid",
"payment_type": "paid",
"position": 0,
"price": 90.0,
"price_ex_tax": 90.0,
"tax_exclusive": false,
"price_degressive": null,
"price_degressive_list": [
],
"quantity": 300,
"request_company_name": null,
"request_vat_number": null,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": true,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": "90.0",
"lock_changes": null,
"state_name": "on_sale",
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/demo/awesomeconf/with/early-bird",
"tickets_count": 56,
"locked": false,
"waiting_list": false,
"sold_out": true,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": false,
"changes_locked": false,
"deletable": false,
"display_price": 90.0,
"gross_income": 0.0,
"full_price_tickets_count": 56,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"pending_waiting_list": false,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": null,
"show_phone_number": false,
"tax_description": null,
"warnings": {
"quantity": "This ticket’s quantity is set to 300 but it is not available because the Conference, Conference Copy, Conference Copy, Conference Copy, and Conference Copy activities are sold out."
}
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/releases/:release_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Required attributes
title
stringThe title of this release.
Delete a release
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:releases_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/releases/:release_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Archive a Release
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
POST /:account_slug/:event_slug/releases/:release_slug/archival
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Unarchive a Release
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/releases/:release_slug/archival
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Duplicate a Release
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
POST /:account_slug/:event_slug/releases/:release_slug/duplication
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Put a Release on sale
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/activation' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{}'
PATCH /:account_slug/:event_slug/releases/:release_slug/activation
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Pause the sale of a Release
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/deactivation' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{}'
PATCH /:account_slug/:event_slug/releases/:release_slug/deactivation
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Make a Release public
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
POST /:account_slug/:event_slug/releases/:release_slug/publication
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Make a Release secret
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/releases/:release_slug/publication
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_slug
- theslug
(orid
) of therelease
.
Make an on-sale release
secret. A secret release
won't appear on your event page
and can only be purchased through the shareable URL (share_url
).
RSVP Lists
RSVP is a beta feature. Contact us to get it enabled.
Invite people to register and target specific releases. An RSVP List
has many Release Invitations.
Attributes
maybes_count
integerread onlyHow many people have responded "maybe".message_slug
stringread onlyThe slug for the message that was used to send the invitation.nos_count
integerread onlyHow many people have responded "no".redeemed_count
integerread onlyHow many people have accepted the invitation.release_invitations_count
integerread onlyHow many people have been invited.title
stringrequiredA title for this list- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyUnique string used in the URL to identify this record.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
Expansions
TODO: No expansions to show in 3.1/rsvp_lists/expansions.json
Get all RSVP lists
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"rsvp_lists": [
{
"_type": "rsvp_list",
"id": 1,
"slug": "rsvp_list_dnAfyUA6p72PXipIdNXmt2Q",
"created_at": "2022-03-26T07:36:27.000Z",
"updated_at": "2022-03-26T07:36:27.000Z",
"title": "Welcome",
"redeemed_count": 2,
"maybes_count": 3,
"nos_count": 2,
"release_invitations_count": 10,
"message_slug": null
}
],
"meta": {
"api_version": "3.1.0",
"expandable": {
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"sort_options": {
"Created time, earliest first": {
"attr": "created_at",
"direction": "asc"
},
"Created time, latest first": {
"attr": "created_at",
"direction": "desc",
"default": true
},
"Title A-Z": {
"attr": "title",
"direction": "asc"
},
"Title Z-A": {
"attr": "title",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
]
}
}
}
GET /:account_slug/:event_slug/rsvp_lists
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get an RSVP list
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"rsvp_list": {
"_type": "rsvp_list",
"id": 1,
"slug": "rsvp_list_dnAfyUA6p72PXipIdNXmt2Q",
"created_at": "2022-03-26T07:36:27.000Z",
"updated_at": "2022-03-26T07:36:27.000Z",
"title": "Welcome",
"redeemed_count": 2,
"maybes_count": 3,
"nos_count": 2,
"release_invitations_count": 10,
"message_slug": null
},
"meta": {
"api_version": "3.1.0",
"expandable": {
}
}
}
GET /:account_slug/:event_slug/rsvp_lists/:rsvp_list_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.rsvp_list_id
- theid
of thersvp_list
Create an RSVP list
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"rsvp_list[title]":"Welcome Back"}'
{
"rsvp_list": {
"_type": "rsvp_list",
"id": 5,
"slug": "rsvp_list_ddgJ2rvXQMPwJRGdAmzQ9WQ",
"created_at": "2022-03-26T07:59:23.000Z",
"updated_at": "2022-03-26T07:59:23.000Z",
"title": "Welcome Back",
"redeemed_count": 0,
"maybes_count": 0,
"nos_count": 0,
"release_invitations_count": 0,
"message_slug": null
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/rsvp_lists
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
title
stringA title for this list
Update an RSVP list
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_lists_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"rsvp_list[title]":"Welcome"}'
{
"rsvp_list": {
"_type": "rsvp_list",
"id": 1,
"slug": "rsvp_list_dnAfyUA6p72PXipIdNXmt2Q",
"created_at": "2022-03-26T07:36:27.000Z",
"updated_at": "2022-03-26T07:36:27.000Z",
"title": "Welcome",
"redeemed_count": 2,
"maybes_count": 3,
"nos_count": 2,
"release_invitations_count": 10,
"message_slug": null
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/rsvp_lists/:rsvp_list_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.rsvp_list_id
- theid
of thersvp_list
Required attributes
title
stringA title for this list
Delete an RSVP list
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_lists_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/rsvp_lists/:rsvp_list_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.rsvp_list_id
- theid
of thersvp_list
RSVP Release Invitations
RSVP is a beta feature. Contact us to get it enabled.
An RSVP Release Invitation
belongs to an RSVP list
Attributes
auto
booleanAuto-register the person being invited once they confirm attendance. You probably only want to set this if it's a free ticket. Default is false.discount_code
stringAuto-apply this discount code when the invitee orders the ticket.email
stringrequiredThe email of the person who is being invited. It must be unique within this RSVP list.expires_at
datetimeThe invitation must be redeemed before this time.first_name
stringThe first name of the person who is being invited.guest
booleanAllow the person being invited to register a guest.importer_id
integerread onlyAn internal reference that links to the file that was used to import this invitation (if it was imported).last_name
stringThe last name of the person who is being invited.message_delivery_id
integerread onlyAn internal reference that links to the message that was sent.name
stringread onlySeefirst_name
andlast_name
.redeemed
booleanread onlyWhether this invitation has been accepted. This means that it is linked to a registration and that registration is "finished".redirect
booleanWhat happens if the customer clicks the invitation link after they've ordered. True means they will be redirected to their order, false means they will be shown a "link expired" message. Defaults is false.registration
objectread onlyThe registration linked to this invitation once it's accepted. This attribute is hidden by default but you can expand it using?expand=registration
.registration_id
integerread onlyLinks to the registration once this invitation has been redeemed.release_id
integerread onlyNot used.rsvp_list_id
integerrequiredLink to the RSVP list this invitation belongs to.status
stringEitheryes
,no
ormaybe
.unique_url
urlread onlyThe link that is emailed to the person who is being invited. Clicking this link allows them to redeem the invitation.- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyUnique string used in the URL to identify this record.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
Expansions
Append a comma separated list of expansions to pull back more information about this Release Invitation.
registration
objectread onlyThe registration linked to this invitation once it's accepted.
Get all release invitations
All the release invitations for a single RSVP list.
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"release_invitations": [
{
"_type": "release_invitation",
"id": 12,
"slug": "rsvp_duCBjB75EPway0pkHvtHlPA",
"first_name": null,
"last_name": null,
"email": "x2nbE-L3TW8Npw@example.com",
"name": "",
"unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_duCBjB75EPway0pkHvtHlPA",
"status": null,
"redeemed": false,
"registration_id": null,
"created_at": "2022-03-26T07:37:28.000Z",
"updated_at": "2022-03-26T07:37:28.000Z",
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 1,
"discount_code": null,
"message_delivery_id": null,
"auto": false,
"guest": false,
"redirect": false
},
{
"_type": "release_invitation",
"id": 11,
"slug": "rsvp_dxeB0agrHdFadov28Ud7koA",
"first_name": null,
"last_name": null,
"email": "pe2r5cEeaEaaaw@example.com",
"name": "",
"unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_dxeB0agrHdFadov28Ud7koA",
"status": null,
"redeemed": false,
"registration_id": null,
"created_at": "2022-03-26T07:37:16.000Z",
"updated_at": "2022-03-26T07:37:16.000Z",
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 1,
"discount_code": null,
"message_delivery_id": null,
"auto": false,
"guest": false,
"redirect": false
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"registration": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 10,
"per_page": 100,
"overall_total": 10,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Redeemed",
"value": "redeemed"
}
],
"selected_states": [
]
}
}
}
GET /:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.rsvp_list_slug
- theslug
(orid
) of thersvp_list
.
Get a release invitation
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations/:release_invitation_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"release_invitation": {
"_type": "release_invitation",
"id": 4,
"slug": "rsvp_d36QcNmBdCeimd5cxx4ZQNA",
"first_name": "Watto",
"last_name": null,
"email": "jailyn@example.com",
"name": "Watto",
"unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_d36QcNmBdCeimd5cxx4ZQNA",
"status": "yes",
"redeemed": true,
"registration_id": 1,
"created_at": "2022-03-26T07:36:27.000Z",
"updated_at": "2022-03-26T07:36:27.000Z",
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 1,
"discount_code": null,
"message_delivery_id": null,
"auto": false,
"guest": false,
"redirect": false
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"registration": false
}
}
}
GET /:account_slug/:event_slug/release_invitations/:release_invitation_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_invitation_id
- theid
of therelease_invitation
Create a release invitation
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"release_invitation[email]":"f0JL97wYMUlB0A@example.com"}'
{
"release_invitation": {
"_type": "release_invitation",
"id": 14,
"slug": "rsvp_dNoZXmP78nE2NVTXtqn4Qyw",
"first_name": null,
"last_name": null,
"email": "f0JL97wYMUlB0A@example.com",
"name": "",
"unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_dNoZXmP78nE2NVTXtqn4Qyw",
"status": null,
"redeemed": false,
"registration_id": null,
"created_at": "2022-03-26T07:59:23.000Z",
"updated_at": "2022-03-26T07:59:23.000Z",
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 1,
"discount_code": null,
"message_delivery_id": null,
"auto": false,
"guest": false,
"redirect": false
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/release_invitations
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
email
stringThe email of the person who is being invited. It must be unique within this RSVP list.rsvp_list_id
integerLink to the RSVP list this invitation belongs to.
Update a release invitation
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations/:release_invitations_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"release_invitation[email]":"udFZswvJM0IZnQ@example.com"}'
{
"release_invitation": {
"_type": "release_invitation",
"id": 4,
"slug": "rsvp_d36QcNmBdCeimd5cxx4ZQNA",
"first_name": "Watto",
"last_name": null,
"email": "udFZswvJM0IZnQ@example.com",
"name": "Watto",
"unique_url": "https://ti.to/demo/awesomeconf/rsvp/rsvp_d36QcNmBdCeimd5cxx4ZQNA",
"status": "yes",
"redeemed": true,
"registration_id": 1,
"created_at": "2022-03-26T07:36:27.000Z",
"updated_at": "2022-03-26T07:59:23.000Z",
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 1,
"discount_code": null,
"message_delivery_id": null,
"auto": false,
"guest": false,
"redirect": false
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/release_invitations/:release_invitation_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_invitation_id
- theid
of therelease_invitation
Required attributes
email
stringThe email of the person who is being invited. It must be unique within this RSVP list.rsvp_list_id
integerLink to the RSVP list this invitation belongs to.
Delete a release invitation
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/release_invitations/:release_invitations_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/release_invitations/:release_invitation_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.release_invitation_id
- theid
of therelease_invitation
Tickets
Attributes
activities
object arrayA list of the activities attached to this ticket. This attribute is hidden by default but you can expand it using?expand=activities
. See activities.activities_ids
integer arrayOr useactivities_ids
and just get an array ofid
values.answers
object arrayAn array ofAnswers
to questions for this ticket. This attribute is hidden by default but you can expand it using?expand=answers
. See answers.answers_ids
integer arrayOr useanswers_ids
and just get an array ofid
values.assigned
booleanread onlyWhether the ticket has been assigned to an individual's email addressavatar_url
urlThe ticket holders avatar.changes_locked
booleanread onlyWhether changes are allowed on this ticket. Dependent onlock_changes
on this ticket but also the release and the event settings.company_name
stringThe company name of the attendee.consented_at
datetimeread onlyThe date the attendee consented to providing their information.delete_answers
booleanwrite onlyDelete all answers (useful if reassigning a ticket to someone else).discount_code_used
stringread onlyThe code ofDiscountCode
used when purchasing.email
stringThe email address of the attendee.first_name
stringThe first name of the attendee.last_name
stringThe last name of the attendee.lock_changes
booleanWhether to lock changes at ticket level.metadata
objectMetadata about the attendee.name
stringread onlyThe full name of the attendee based on thefirst_name
andlast_name
.number
integerread onlyDefault: Starts at 1 and counts up with each ticket registered.opt_ins
object arrayA list of all the opt-ins for this ticket. This attribute is hidden by default but you can expand it using?expand=opt_ins
. See opt_ins.phone_number
stringThe phone number of the attendee.price
decimalThe price paid for this ticket without any upgrades.price_less_tax
decimalread onlyThe net price paid for this ticket minus any tax.qr_code_disabled
booleanWhether a QR code is shown on the ticket.qr_url
urlread onlyThe URL to show the QR code.reference
stringread onlyDefault: The order reference plus the index of the ticket in that order e.g.AXBY-1
.registration
objectread onlyTheRegistration
attached to the ticket. This attribute is hidden by default but you can expand it using?expand=registration
.registration_id
integerread onlyThe id of theRegistration
this ticket was created from.registration_slug
release
objectread onlyTheRelease
attached to the ticket. This attribute is hidden by default but you can expand it using?expand=release
.release_archived
booleanread onlyWhether the release is archived.release_id
integerrequiredTheid
of the release attached to the ticket.release_slug
release_title
resell
booleanwrite onlyWhether a ticket can be resold after it's been voided if you have limited capacity.responses
object arrayread onlyThe answer to eachQuestion
attached to the ticket. Format: A hash of answers, keyed byQuestion
slug e.g.{ "t-shirt-siz: "Medium" }
This attribute is hidden by default but you can expand it using?expand=responses
.show_qr_code
booleanSee alsoqr_code_disabled
.state
stringread onlyEitherunassigned
,complete
,incomplete
, orvoid
. Default isunassigned
.tag_names
string arrayA list of tag namestags
stringA comma separated list of tags for the ticket.temporary
booleanread onlyIs the ticket temporary or not. For example if a ticket needs to be assigned but is not yet confirmed e.g. a payment is pending. Default isfalse
.test_mode
booleanread onlyDefault:true
if test mode is enabled for you or for your entire event, otherwisefalse
.total_paid
decimalread onlyThe gross price paid for this ticket including any upgradestotal_paid_less_tax
decimalread onlyThe net price paid including upgrades.total_tax_paid
decimalread onlyThe tax paid for this ticket.unique_url
urlread onlyThe unique URL that the attendee can use to access this ticket.upgrade_ids
integer arrayAn array of the IDs ofUpgrade
attached to the release. This requires theupgrades
private beta feature. This attribute is hidden by default but you can expand it using?expand=upgrade_ids
.void
booleanread onlyWhether this ticket has been voided.- Common attributes:
id
integerread onlyUnique record identifierslug
stringread onlyA human friendly string used in the URL.created_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
Expansions
Append a comma separated list of expansions to pull back more information about this Ticket.
activities
object arrayA list of the activities attached to this ticket. See activities.activities_ids
integer arrayOr useactivities_ids
and just get an array ofid
values.answers
object arrayAn array ofAnswers
to questions for this ticket. See answers.answers_ids
integer arrayOr useanswers_ids
and just get an array ofid
values.opt_ins
object arrayA list of all the opt-ins for this ticket. See opt_ins.registration
objectread onlyTheRegistration
attached to the ticket.release
objectread onlyTheRelease
attached to the ticket.responses
object arrayread onlyThe answer to eachQuestion
attached to the ticket. Format: A hash of answers, keyed byQuestion
slug e.g.{ "t-shirt-siz: "Medium" }
upgrade_ids
integer arrayAn array of the IDs ofUpgrade
attached to the release. This requires theupgrades
private beta feature.
Get all tickets
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"tickets": [
{
"_type": "ticket",
"id": 180,
"slug": "ti_dPBLf7TbEC1cWgKhTT1GRBQ",
"unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dPBLf7TbEC1cWgKhTT1GRBQ",
"company_name": null,
"email": "crystal_jast@example.org",
"metadata": null,
"first_name": "Ki-Adi-Mundi",
"last_name": null,
"name": "Ki-Adi-Mundi",
"number": 180,
"phone_number": null,
"price": 90.0,
"reference": "UHMF-4",
"state": "complete",
"test_mode": false,
"registration_id": 30,
"release_id": 1,
"release_archived": false,
"avatar_url": "https://secure.gravatar.com/avatar/34f008dbe93dc800315000b8b1889ab5?default=https://starwavatars.global.ssl.fastly.net/avatars/34f008dbe93dc800315000b8b1889ab5.png",
"void": false,
"changes_locked": false,
"consented_at": null,
"discount_code_used": null,
"tag_names": [
],
"created_at": "2022-03-26T07:36:27.000Z",
"updated_at": "2022-03-26T07:36:27.000Z",
"assigned": true,
"qr_url": "https://qr.tito.io/tickets/ti_dPBLf7TbEC1cWgKhTT1GRBQ",
"show_qr_code": true,
"qr_code_disabled": false,
"price_less_tax": 90.0,
"total_paid": 90.0,
"total_tax_paid": 0.0,
"total_paid_less_tax": 90.0,
"tags": null,
"lock_changes": false
},
{
"_type": "ticket",
"id": 181,
"slug": "ti_dLn9FsjF44o5Cx0eFxdeSow",
"unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dLn9FsjF44o5Cx0eFxdeSow",
"company_name": null,
"email": "crystal_jast@example.org",
"metadata": null,
"first_name": "Ki-Adi-Mundi",
"last_name": null,
"name": "Ki-Adi-Mundi",
"number": 181,
"phone_number": null,
"price": 90.0,
"reference": "UHMF-5",
"state": "complete",
"test_mode": false,
"registration_id": 30,
"release_id": 1,
"release_archived": false,
"avatar_url": "https://secure.gravatar.com/avatar/34f008dbe93dc800315000b8b1889ab5?default=https://starwavatars.global.ssl.fastly.net/avatars/34f008dbe93dc800315000b8b1889ab5.png",
"void": false,
"changes_locked": false,
"consented_at": null,
"discount_code_used": null,
"tag_names": [
],
"created_at": "2022-03-26T07:36:27.000Z",
"updated_at": "2022-03-26T07:36:27.000Z",
"assigned": true,
"qr_url": "https://qr.tito.io/tickets/ti_dLn9FsjF44o5Cx0eFxdeSow",
"show_qr_code": true,
"qr_code_disabled": false,
"price_less_tax": 90.0,
"total_paid": 90.0,
"total_tax_paid": 0.0,
"total_paid_less_tax": 90.0,
"tags": null,
"lock_changes": false
},
"..."
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"activity_ids": false,
"answers": false,
"answer_ids": false,
"opt_ins": false,
"registration": false,
"release": false,
"responses": false,
"upgrade_ids": false
},
"current_page": 1,
"next_page": 2,
"prev_page": null,
"total_pages": 2,
"total_count": 184,
"per_page": 100,
"overall_total": 184,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"void",
"archived"
],
"sort_options": {
"First name A-Z": {
"attr": "first_name",
"direction": "asc"
},
"First name Z-A": {
"attr": "first_name",
"direction": "desc"
},
"Last name A-Z": {
"attr": "last_name",
"direction": "asc"
},
"Last name Z-A": {
"attr": "last_name",
"direction": "desc"
},
"Ticket date, earliest first": {
"attr": "tickets.created_at",
"direction": "asc"
},
"Ticket date, newest first": {
"attr": "tickets.created_at",
"direction": "desc",
"default": true
},
"Price, least first": {
"attr": "price",
"direction": "asc"
},
"Price, most first": {
"attr": "price",
"direction": "desc"
},
"Reference": {
"attr": "reference",
"direction": "asc"
},
"Number": {
"attr": "number",
"direction": "asc"
},
"Last change": {
"attr": "updated_at",
"direction": "desc"
}
},
"filter_options": {
"types": [
{
"label": "Added manually",
"value": "manual"
},
{
"label": "Ordered by customer",
"value": "standard"
}
],
"release_ids": [
{
"label": "Early Bird",
"value": "early-bird"
},
{
"label": "Standard",
"value": "standard"
},
{
"label": "Exhibitor",
"value": "exhibitor"
},
{
"label": "Speaker",
"value": "speaker"
}
],
"activity_ids": [
{
"label": "Conference",
"value": "1"
},
{
"label": "Dinner",
"value": "2"
},
{
"label": "Workshop",
"value": "3"
},
{
"label": "Conference Copy",
"value": "5"
},
{
"label": "Conference Copy",
"value": "7"
},
{
"label": "Conference Copy",
"value": "9"
},
{
"label": "Conference Copy",
"value": "11"
}
],
"sections": {
"states": {
"label": "Status",
"open": false
},
"types": {
"label": "Type",
"open": false
},
"release_ids": {
"label": "Tickets",
"open": false
},
"activity_ids": {
"label": "Activities",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Complete",
"value": "complete"
},
{
"label": "Incomplete",
"value": "incomplete"
},
{
"label": "Unassigned",
"value": "unassigned"
},
{
"label": "Void",
"value": "void"
},
{
"label": "Changes Locked",
"value": "changes_locked"
},
{
"label": "Changes Allowed",
"value": "changes_allowed"
},
{
"label": "Archived",
"value": "archived"
}
],
"selected_states": [
"complete",
"incomplete",
"unassigned",
"changes_locked",
"changes_allowed"
]
}
}
}
GET /:account_slug/:event_slug/tickets
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Sort Order
The default order is by created_at
with newest tickets first. You can change the order by appending some parameters to the endpoint URL. This is the same as the default:
?search[sort]=created_at&search[direction]=desc
The direction can either be asc
or desc
.
You can sort on the following attributes:
first_name
last_name
created_at
updated_at
price
reference
number
Filtering
You can filter which tickets you get back too.
By state
For instance, to only get incomplete
or unassigned
tickets:
?search[states][]=incomplete&search[states][]=unassigned
Possible states are:
complete
incomplete
unassigned
void
By default, the list will exclude void
tickets. If you want void tickets then you have to explicitly ask for them.
There are some other pseudo-states that behave a little differently.
changes_allowed
(only show tickets that allow changes)changes_locked
(only show tickets that have changes locked)
If you select both changes_allowed
and changes_locked
then that's effectively the same as saying "those tickets that are either locked or not locked" which is the same as the default.
archived
(tickets belonging to an archived release)
The list excludes archived tickets by default. If you select this state then it also includes archived tickets as well as non-archived tickets.
By type
?search[types][]=manual
Possible types are:
manual
- added manuallystandard
- ordered by customer
By release
?search[release_ids][]=early-bird
where "early-bird" is the release slug
.
By activity
?search[activity_ids][]=1025351
where "1025351" is the activity id
.
By time
This will show all tickets created since 1 Jan 2019 at 9am UTC:
?search[created_at][gt]=2019-01-01T09:00:00+UTC
That operator can be:
gt
- greater thangte
- greater than or equal tolt
- less thanlte
- less than or equal to
And you can do that on the following attributes
created_at
updated_at
So, for instance, to find all tickets that have been updated in the last hour:
?search[updated_at][gt]=2019-01-01T09:00:00+UTC
(where you obviously change that timestamp to be one hour ago).
Note: if you don't use the +UTC
suffix on those timestamps it will default to the time zone used by the event itself.
By any text
You can also search by text, which uses the same logic as the dashboard UI:
- name
- phone number
- slug
- reference
- company name
- tag
For example:
?q=Alice
Get a ticket
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"ticket": {
"_type": "ticket",
"id": 1,
"slug": "ti_dj8GKOodhY1PZK3VpFxVshw",
"unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
"company_name": null,
"email": "yW0K4UJmnG_eyQ@example.com",
"metadata": null,
"first_name": null,
"last_name": null,
"name": "",
"number": 1,
"phone_number": null,
"price": 0.0,
"reference": "9K9R-1",
"state": "incomplete",
"test_mode": false,
"registration_id": 1,
"release_id": 2,
"release_archived": false,
"avatar_url": "https://secure.gravatar.com/avatar/6f63f583f222a8945169a145e40710b9?default=https://starwavatars.global.ssl.fastly.net/avatars/6f63f583f222a8945169a145e40710b9.png",
"void": false,
"changes_locked": false,
"consented_at": null,
"discount_code_used": "FREE2U",
"tag_names": [
],
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:59:13.000Z",
"assigned": true,
"qr_url": "https://qr.tito.io/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
"show_qr_code": false,
"qr_code_disabled": false,
"price_less_tax": 0.0,
"total_paid": 0.0,
"total_tax_paid": 0.0,
"total_paid_less_tax": 0.0,
"tags": null,
"lock_changes": false
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"activities": false,
"activity_ids": false,
"answers": false,
"answer_ids": false,
"opt_ins": false,
"registration": false,
"release": false,
"responses": false,
"upgrade_ids": false
}
}
}
GET /:account_slug/:event_slug/tickets/:ticket_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.ticket_slug
- theslug
(orid
) of theticket
.
Create a ticket
TODO: missing data/3.1/tickets/create.json
Update a ticket
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:tickets_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"ticket[email]":"8nRo0oMfMkjHGA@example.com"}'
{
"ticket": {
"_type": "ticket",
"id": 1,
"slug": "ti_dj8GKOodhY1PZK3VpFxVshw",
"unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
"company_name": null,
"email": "8nRo0oMfMkjHGA@example.com",
"metadata": null,
"first_name": null,
"last_name": null,
"name": "",
"number": 1,
"phone_number": null,
"price": 0.0,
"reference": "9K9R-1",
"state": "incomplete",
"test_mode": false,
"registration_id": 1,
"release_id": 2,
"release_archived": false,
"avatar_url": "https://secure.gravatar.com/avatar/69ad0840e4e3b9b5b6df4a0b6d27acf8?default=https://starwavatars.global.ssl.fastly.net/avatars/69ad0840e4e3b9b5b6df4a0b6d27acf8.png",
"void": false,
"changes_locked": false,
"consented_at": null,
"discount_code_used": "FREE2U",
"tag_names": [
],
"created_at": "2022-03-26T07:36:07.000Z",
"updated_at": "2022-03-26T07:59:24.000Z",
"assigned": true,
"qr_url": "https://qr.tito.io/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
"show_qr_code": false,
"qr_code_disabled": false,
"price_less_tax": 0.0,
"total_paid": 0.0,
"total_tax_paid": 0.0,
"total_paid_less_tax": 0.0,
"tags": null,
"lock_changes": false
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/tickets/:ticket_slug
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.ticket_slug
- theslug
(orid
) of theticket
.
Required attributes
release_id
integerTheid
of the release attached to the ticket.
Reassign a Ticket
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/reassignments' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"reassignment":{"email":"jane@example.com","first_name":"Jane","last_name":"Smith","delete_answers":true}}'
{
"ticket": {
"_type": "ticket",
"id": 3068932,
"slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
"company_name": null,
"email": null,
"metadata": {},
"first_name": "Jane",
"last_name": "Doe",
"name": "Jane Doe",
"number": null,
"phone_number": null,
"price": "0.0",
"reference": "PNGU-1",
"state": "complete",
"test_mode": true,
"registration_id": 3509398,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:54:00.000+00:00",
"updated_at": "2018-11-12T13:54:00.000+00:00",
"responses": null,
"assigned": false,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
},
"answers": []
}
}
Reassign a Ticket
to a new attendee. It's different from just updating the email and name for a ticket: reassigning a ticket also sends out an email to the new attendee and (optionally) deletes all the answers made by the original attendee.
POST /:account_slug/:event_slug/tickets/:ticket_slug/reassignments
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.ticket_slug
- theslug
(orid
) of theticket
.
Parameters
delete_answers
booleanDelete all answers (useful if reassigning a ticket to someone else).email
stringThe email address of the attendee.first_name
stringThe first name of the attendee.last_name
stringThe last name of the attendee.
Emails Sent
The following people receive an email after a reassignment:
- the new attendee
- the orderer (if their email is different to the original email for this ticket)
- the organisers (if they have chosen to receive notifications)
Void a Ticket
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/void' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"void":{"resell":true}}'
{
"void": {
"_type": "void",
"resell": true,
"ticket": {
"_type": "ticket",
"id": 3068932,
"slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
"company_name": null,
"email": null,
"metadata": {},
"first_name": "Jane",
"last_name": "Doe",
"name": "Jane Doe",
"number": null,
"phone_number": null,
"price": "0.0",
"reference": "PNGU-1",
"state": "void",
"test_mode": true,
"registration_id": 3509398,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:54:00.000+00:00",
"updated_at": "2018-11-12T13:54:00.000+00:00",
"responses": null,
"assigned": false,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
},
"answers": []
}
}
}
Void a Ticket
so that it is no longer able to be used to checkin to an event.
POST /:account_slug/:event_slug/tickets/:ticket_slug/void
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.ticket_slug
- theslug
(orid
) of theticket
.
Parameters
resell
booleanWhether a ticket can be resold after it's been voided if you have limited capacity.
If the Release
quantity
is defined (i.e. the number of tickets for that release is limited) then you also need to pass in the resell
parameter.
For instance, if you have 19/20 tickets sold and you void one and you pass "resell":true
then it will show 18/20 tickets sold and two will now be available.
If you pass "resell":false
then it will show 18/19 tickets sold and only one will be available.
If the Release
quantity
is not defined (i.e. the number of tickets available is infinite) then the resell
parameter is optional.
Waitlisted people
Attributes
email
stringrequiredThe person's email.expired
booleanread onlyTrue if thestate
is "expired".expires_at
datetimeThe date and time the offer expires, if set.joined
booleanread onlyTrue if thestate
is "joined".joined_at
datetimeThe date and time the person was added to the list.message
The custom message to send in the offer email. Leave blank to use the standard message.name
stringThe person's name.offered
booleanread onlyTrue if thestate
is "offered".offered_at
datetimeThe date and time the person was offered a ticket.redeemed
booleanread onlyTrue if thestate
is "redeemed".registration
objectread onlyTheRegistration
created when the offer is redeemed. This attribute is hidden by default but you can expand it using?expand=registration
.rejected
booleanread onlyTrue if thestate
is "rejected".release
objectread onlyTheRelease
attached to this person. This attribute is hidden by default but you can expand it using?expand=release
.release_id
integerrequiredReferences the release that this person is waiting for.state
stringread onlyOne ofjoined
,offered
,redeemed
orrejected
.status
stringread onlyOne of "Redeemed", "Expired", "Waiting", "Offered", or "Rejected".unique_offer_url
stringread onlyOnce the person has been offered a ticket, this contains the URL they need to use to redeem it.- Common attributes:
id
integerread onlyUnique record identifiercreated_at
datetimeread onlyTimestamp of when this record was created.updated_at
datetimeread onlyTimestamp of when this record was last updated.
Get all waitlisted_people
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"waitlisted_people": [
{
"_type": "waitlisted_person",
"id": 4,
"name": "Jane Smith",
"email": "jane.smith@example.com",
"offered_at": null,
"expires_at": null,
"created_at": "2022-09-14T08:04:35.000Z",
"updated_at": "2022-09-14T08:04:35.000Z",
"joined_at": "2022-09-14T08:04:35.000Z",
"release_id": 1,
"state": "joined",
"message": null,
"status": "Waiting",
"redeemed": false,
"expired": false,
"joined": true,
"offered": false,
"rejected": false,
"unique_offer_url": null
}
],
"meta": {
"api_version": "3.1.0",
"expandable": {
"registration": false,
"release": false
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"redeemed",
"rejected",
"expired"
],
"sort_options": {
"Name A-Z": {
"attr": "name",
"direction": "asc"
},
"Name Z-A": {
"attr": "name",
"direction": "desc"
},
"Join date, earliest first": {
"attr": "created_at",
"direction": "asc"
},
"Join date, newest first": {
"attr": "created_at",
"direction": "desc",
"default": true
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Joined",
"value": "joined"
},
{
"label": "Offered",
"value": "offered"
},
{
"label": "Redeemed",
"value": "redeemed"
},
{
"label": "Rejected",
"value": "rejected"
},
{
"label": "Expired",
"value": "expired"
}
],
"selected_states": [
"joined",
"offered"
]
}
}
}
GET /:account_slug/:event_slug/waitlisted_people
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get a waitlisted person
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"waitlisted_person": {
"_type": "waitlisted_person",
"id": 4,
"name": "Jane Smith",
"email": "jane.smith@example.com",
"offered_at": null,
"expires_at": null,
"created_at": "2022-09-14T08:04:35.000Z",
"updated_at": "2022-09-14T08:04:35.000Z",
"joined_at": "2022-09-14T08:04:35.000Z",
"release_id": 1,
"state": "joined",
"message": null,
"status": "Waiting",
"redeemed": false,
"expired": false,
"joined": true,
"offered": false,
"rejected": false,
"unique_offer_url": null
},
"meta": {
"api_version": "3.1.0",
"expandable": {
"registration": false,
"release": false
}
}
}
GET /:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.waitlisted_person_id
- theid
of thewaitlisted_person
Create a waitlisted person
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"waitlisted_person[name]":"Jane Doe","waitlisted_person[email]":"jane.doe@example.com","waitlisted_person[release_id]":1}'
{
"waitlisted_person": {
"_type": "waitlisted_person",
"id": 13,
"name": "Jane Doe",
"email": "jane.doe@example.com",
"offered_at": null,
"expires_at": null,
"created_at": "2022-09-14T15:13:21.000Z",
"updated_at": "2022-09-14T15:13:21.000Z",
"joined_at": "2022-09-14T15:13:21.000Z",
"release_id": 1,
"state": "joined",
"message": null,
"status": "Waiting",
"redeemed": false,
"expired": false,
"joined": true,
"offered": false,
"rejected": false,
"unique_offer_url": null
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/waitlisted_people
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
email
stringThe person's email.release_id
integerReferences the release that this person is waiting for.
Update a waitlisted person
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people/:waitlisted_people_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"waitlisted_person[email]":"7GmO4VysORdDsw@example.com"}'
{
"waitlisted_person": {
"_type": "waitlisted_person",
"id": 4,
"name": "Jane Smith",
"email": "7GmO4VysORdDsw@example.com",
"offered_at": null,
"expires_at": null,
"created_at": "2022-09-14T08:04:35.000Z",
"updated_at": "2022-09-14T08:04:35.000Z",
"joined_at": "2022-09-14T08:04:35.000Z",
"release_id": 1,
"state": "joined",
"message": null,
"status": "Waiting",
"redeemed": false,
"expired": false,
"joined": true,
"offered": false,
"rejected": false,
"unique_offer_url": null
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.waitlisted_person_id
- theid
of thewaitlisted_person
Required attributes
email
stringThe person's email.release_id
integerReferences the release that this person is waiting for.
Delete a waitlisted person
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/waitlisted_people/:waitlisted_people_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/waitlisted_people/:waitlisted_person_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.waitlisted_person_id
- theid
of thewaitlisted_person
Webhook Endpoints
See Webhooks for more information.
Attributes
custom_data
objectA hash of custom data that will be passed along in the webhook payload.deprecated
booleanread onlyWhether the URL is deprecated. We only support secure, https connections now.included_triggers
string arrayrequiredList of triggers that will be sent to this webhook endpoint.url
urlrequiredWhere to send the webhooks to. Must be a secure, https URL.- Common attributes:
id
integerread onlyUnique record identifier
Expansions
TODO: No expansions to show in 3.1/webhook_endpoints/expansions.json
Get all webhook endpoints
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"webhook_endpoints": [
{
"_type": "webhook_endpoint",
"id": 1,
"url": "https://doesnotexist.tito.io/listen/123",
"included_triggers": [
"ticket.completed"
],
"custom_data": "{\"my_webhook_variable\":\"there-i-go\"}",
"deprecated": false
}
],
"meta": {
"api_version": "3.1.0",
"expandable": {
},
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1
}
}
GET /:account_slug/:event_slug/webhook_endpoints
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Get an webhook endpoint
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"webhook_endpoint": {
"_type": "webhook_endpoint",
"id": 1,
"url": "https://doesnotexist.tito.io/listen/123",
"included_triggers": [
"ticket.completed"
],
"custom_data": "{\"my_webhook_variable\":\"there-i-go\"}",
"deprecated": false
},
"meta": {
"api_version": "3.1.0",
"expandable": {
}
}
}
GET /:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.webhook_endpoint_id
- theid
of thewebhook_endpoint
Create an webhook endpoint
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"webhook_endpoint[included_triggers][]":"registration.finished","webhook_endpoint[url]":"https://doesnotexist.tito.io/listen/456"}'
{
"webhook_endpoint": {
"_type": "webhook_endpoint",
"id": 5,
"url": "https://doesnotexist.tito.io/listen/456",
"included_triggers": [
"registration.finished"
],
"custom_data": null,
"deprecated": false
},
"meta": {
"api_version": "3.1.0"
}
}
POST /:account_slug/:event_slug/webhook_endpoints
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.
Required attributes
included_triggers
string arrayList of triggers that will be sent to this webhook endpoint.url
urlWhere to send the webhooks to. Must be a secure, https URL.
Update an webhook endpoint
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:webhook_endpoints_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"webhook_endpoint[custom_data]":"{\"my_webhook_variable\":\"there-i-go\"}"}'
{
"webhook_endpoint": {
"_type": "webhook_endpoint",
"id": 1,
"url": "https://doesnotexist.tito.io/listen/123",
"included_triggers": [
"ticket.completed"
],
"custom_data": "{\"my_webhook_variable\":\"there-i-go\"}",
"deprecated": false
},
"meta": {
"api_version": "3.1.0"
}
}
PATCH /:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.webhook_endpoint_id
- theid
of thewebhook_endpoint
Required attributes
included_triggers
string arrayList of triggers that will be sent to this webhook endpoint.url
urlWhere to send the webhooks to. Must be a secure, https URL.
Delete an webhook endpoint
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:webhook_endpoints_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
DELETE /:account_slug/:event_slug/webhook_endpoints/:webhook_endpoint_id
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.webhook_endpoint_id
- theid
of thewebhook_endpoint
Webhooks
Webhooks allow data to be passed to an external system in real time. Webhooks
will POST
a JSON
payload to the endpoint you specify, with a X-Webhook-Name
header.
Triggers
Name | Description |
---|---|
checkin.created |
Fired when an attendee is checked-in via one of the Tito apps (web, iOS or Android). |
ticket.created |
Fired when tickets are created immediately after a registration is confirmed. Tickets can be unassigned, incomplete or complete at this stage depending on whether it is a single or multiple ticket registration or whether the ticket has required fields or not. |
ticket.completed |
Fired when all required fields like name, email, etc and required questions have been answered. |
ticket.reassigned |
Fired specifically when a ticket is reassigned to someone else. |
ticket.updated |
Fired anytime ticket details are changed, including changes to the email address. |
ticket.unsnoozed |
Fired when a “snoozed” ticket is assigned to someone. When people register tickets but do not want to or can’t assign them straight away they can be “snoozed”. |
ticket.unvoided |
Fired when a voided ticket is returned to a valid state. |
ticket.voided |
Fired when a ticket is changed to a voided state. Free tickets that are cancelled by the attendee will also cause this webhook to fire. |
registration.updated |
Fired when the registration is updated in the Tito admin area or via the API. |
registration.finished |
Fired as soon as the registration is confirmed, e.g. when payment is complete. |
registration.completed |
Fired when all tickets on a registration have been completed (see the ticket.completed webhook). |
registration.cancelled |
Fired when the registration is cancelled in the Tito admin area or via the API. Free tickets that are cancelled by the attendee will also cause this webhook to fire. |
Payloads
Ticket Payload
{
"_type": "ticket",
"id": 2,
"test_mode": false,
"name": "Watto",
"first_name": "Watto",
"last_name": null,
"email": "jailyn@example.com",
"phone_number": null,
"company_name": null,
"reference": "9K9R-2",
"price": "0.0",
"tax": "0.0",
"price_less_tax": "0.0",
"slug": "ti_dbFC7zPGM4jkgWA1jpVfGOw",
"state_name": "complete",
"gender": null,
"total_paid": "0.0",
"total_paid_less_tax": "0.0",
"updated_at": "2022-03-26 07:36:07 UTC",
"release_price": "100.0",
"discount_code_used": "FREE2U",
"url": "https://ti.to/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
"release_title": "Standard",
"release_slug": "standard",
"release_id": 2,
"release": {
"id": 2,
"title": "Standard",
"slug": "standard",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"custom": {
},
"registration_id": 1,
"registration_slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
"metadata": null,
"answers": [
{
"question": {
"id": 2,
"title": "Where do you live?"
},
"response": "US",
"humanized_response": "United States"
}
],
"opt_ins": [
],
"responses": {
"where-do-you-live": "United States"
},
"last_updated_by_type": "admin",
"upgrades": [
],
"upgrade_ids": [
],
"registration": {
"id": 1,
"slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
"url": "https://ti.to/registrations/reg_dp9Z2e2FgFH9QrhrVbf7Whg",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/registrations/reg_dp9Z2e2FgFH9QrhrVbf7Whg",
"total": "270.0",
"currency": "USD",
"payment_reference": null,
"source": null,
"name": "Watto",
"email": "nIFOizT0YnYTTA@example.com",
"receipt": {
"total": "270.0",
"tax": 0,
"payment_provider": "Invoice",
"paid": false,
"receipt_lines": [
{
"total": "0.0",
"quantity": 2,
"tax": 0
},
{
"total": "0.0",
"quantity": 1,
"tax": 0
},
{
"total": "270.0",
"quantity": 3,
"tax": 0
}
]
}
},
"event": {
"_type": "event",
"id": 1,
"title": "Awesomeconf",
"url": "https://ti.to/demo/awesomeconf",
"account_slug": "demo",
"slug": "awesomeconf",
"start_date": "2022-06-26",
"end_date": null,
"metadata": {
"my_event_variable": "something",
"another_event_variable": 123
}
}
}
For webhooks that have the webhook type of ticket.*
the following JSON payload
will be sent.
Registration Payload
{
"_type": "registration",
"id": 1,
"test_mode": false,
"slug": "reg_dp9Z2e2FgFH9QrhrVbf7Whg",
"reference": "9K9R",
"total": "270.0",
"total_less_tax": "270.0",
"name": "Watto",
"first_name": "Watto",
"last_name": "",
"email": "nIFOizT0YnYTTA@example.com",
"phone_number": null,
"company_name": null,
"discount_code": "FREE2U",
"payment_reference": null,
"created_at": "2022-03-26 07:36:07 UTC",
"completed_at": "2022-03-26 07:36:07 UTC",
"completed_date": "2022-03-26",
"metadata": null,
"updated_at": "2022-03-26 07:59:13 UTC",
"locale": "en",
"created_date": "2022-03-26",
"currency": "USD",
"custom": {
},
"paid": false,
"line_items": [
{
"id": 1,
"release_slug": "standard",
"release_id": 2,
"release_title": "Standard",
"release_price": "100.0",
"release": {
"slug": "standard",
"title": "Standard",
"price": "100.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"price": "0.0",
"title": "Standard",
"quantity": 2,
"total": "0.0",
"currency": "USD"
},
{
"id": 2,
"release_slug": "exhibitor",
"release_id": 3,
"release_title": "Exhibitor",
"release_price": "0.0",
"release": {
"slug": "exhibitor",
"title": "Exhibitor",
"price": "0.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"price": "0.0",
"title": "Exhibitor",
"quantity": 1,
"total": "0.0",
"currency": "USD"
},
{
"id": 3,
"release_slug": "early-bird",
"release_id": 1,
"release_title": "Early Bird",
"release_price": "90.0",
"release": {
"slug": "early-bird",
"title": "Early Bird",
"price": "90.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"price": "90.0",
"title": "Early Bird",
"quantity": 3,
"total": "270.0",
"currency": "USD"
}
],
"quantities": {
"standard": {
"release": "Standard",
"quantity": 2
},
"exhibitor": {
"release": "Exhibitor",
"quantity": 1
},
"early-bird": {
"release": "Early Bird",
"quantity": 3
}
},
"tickets": [
{
"reference": "9K9R-1",
"slug": "ti_dj8GKOodhY1PZK3VpFxVshw",
"price": "0.0",
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_paid_less_tax": "0.0",
"release_id": 2,
"release_slug": "standard",
"release_title": "Standard",
"release": {
"id": 2,
"slug": "standard",
"title": "Standard",
"price": "100.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"name": "",
"first_name": null,
"last_name": null,
"company_name": null,
"email": "yW0K4UJmnG_eyQ@example.com",
"url": "https://ti.to/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
"opt_ins": [
],
"responses": {
"favorite-color": "Blue"
},
"answers": [
{
"question": {
"id": 1,
"title": "Fave tree?",
"description": "What is your most favorite color of all?"
},
"humanized_response": "Blue",
"response": "Blue",
"file": null
}
]
},
{
"reference": "9K9R-2",
"slug": "ti_dbFC7zPGM4jkgWA1jpVfGOw",
"price": "0.0",
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_paid_less_tax": "0.0",
"release_id": 2,
"release_slug": "standard",
"release_title": "Standard",
"release": {
"id": 2,
"slug": "standard",
"title": "Standard",
"price": "100.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"name": "Watto",
"first_name": "Watto",
"last_name": null,
"company_name": null,
"email": "jailyn@example.com",
"url": "https://ti.to/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dbFC7zPGM4jkgWA1jpVfGOw",
"opt_ins": [
],
"responses": {
"where-do-you-live": "United States"
},
"answers": [
{
"question": {
"id": 2,
"title": "Where do you live?",
"description": "To help us with travel arrangements"
},
"humanized_response": "United States",
"response": "US",
"file": null
}
]
},
{
"reference": "9K9R-3",
"slug": "ti_dpIFsGDCrA0ydKeuQxo4FEg",
"price": "0.0",
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_paid_less_tax": "0.0",
"release_id": 3,
"release_slug": "exhibitor",
"release_title": "Exhibitor",
"release": {
"id": 3,
"slug": "exhibitor",
"title": "Exhibitor",
"price": "0.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"name": "Watto",
"first_name": "Watto",
"last_name": null,
"company_name": null,
"email": "jailyn@example.com",
"url": "https://ti.to/demo/awesomeconf/tickets/ti_dpIFsGDCrA0ydKeuQxo4FEg",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dpIFsGDCrA0ydKeuQxo4FEg",
"opt_ins": [
],
"responses": {
"where-do-you-live": "Germany"
},
"answers": [
{
"question": {
"id": 2,
"title": "Where do you live?",
"description": "To help us with travel arrangements"
},
"humanized_response": "Germany",
"response": "DE",
"file": null
}
]
},
{
"reference": "9K9R-4",
"slug": "ti_dPRNYLLpkElscpUJckyjwWg",
"price": "90.0",
"price_less_tax": "90.0",
"total_paid": "90.0",
"total_paid_less_tax": "90.0",
"release_id": 1,
"release_slug": "early-bird",
"release_title": "Early Bird",
"release": {
"id": 1,
"slug": "early-bird",
"title": "Early Bird",
"price": "90.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"name": "Watto",
"first_name": "Watto",
"last_name": null,
"company_name": null,
"email": "jailyn+4@example.com",
"url": "https://ti.to/demo/awesomeconf/tickets/ti_dPRNYLLpkElscpUJckyjwWg",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dPRNYLLpkElscpUJckyjwWg",
"opt_ins": [
],
"responses": {
"where-do-you-live": "Germany"
},
"answers": [
{
"question": {
"id": 2,
"title": "Where do you live?",
"description": "To help us with travel arrangements"
},
"humanized_response": "Germany",
"response": "DE",
"file": null
}
]
},
{
"reference": "9K9R-5",
"slug": "ti_dj4277jrKX8rpq2wbY1fEpg",
"price": "90.0",
"price_less_tax": "90.0",
"total_paid": "90.0",
"total_paid_less_tax": "90.0",
"release_id": 1,
"release_slug": "early-bird",
"release_title": "Early Bird",
"release": {
"id": 1,
"slug": "early-bird",
"title": "Early Bird",
"price": "90.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"name": "Watto",
"first_name": "Watto",
"last_name": null,
"company_name": null,
"email": "jailyn+5@example.com",
"url": "https://ti.to/demo/awesomeconf/tickets/ti_dj4277jrKX8rpq2wbY1fEpg",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dj4277jrKX8rpq2wbY1fEpg",
"opt_ins": [
],
"responses": {
"where-do-you-live": "Ireland"
},
"answers": [
{
"question": {
"id": 2,
"title": "Where do you live?",
"description": "To help us with travel arrangements"
},
"humanized_response": "Ireland",
"response": "IE",
"file": null
}
]
},
{
"reference": "9K9R-6",
"slug": "ti_dDEWoBweq75fl7pFhrWAk2g",
"price": "90.0",
"price_less_tax": "90.0",
"total_paid": "90.0",
"total_paid_less_tax": "90.0",
"release_id": 1,
"release_slug": "early-bird",
"release_title": "Early Bird",
"release": {
"id": 1,
"slug": "early-bird",
"title": "Early Bird",
"price": "90.0",
"metadata": {
"my_release_variable": "else",
"another_release_variable": 456
}
},
"name": "",
"first_name": null,
"last_name": null,
"company_name": null,
"email": null,
"url": "https://ti.to/demo/awesomeconf/tickets/ti_dDEWoBweq75fl7pFhrWAk2g",
"admin_url": "https://dashboard.tito.io/demo/awesomeconf/tickets/ti_dDEWoBweq75fl7pFhrWAk2g",
"opt_ins": [
],
"responses": {
"favorite-color": "Blue",
"where-do-you-live": "United Kingdom"
},
"answers": [
{
"question": {
"id": 1,
"title": "Fave tree?",
"description": "What is your most favorite color of all?"
},
"humanized_response": "Blue",
"response": "Blue",
"file": null
},
{
"question": {
"id": 2,
"title": "Where do you live?",
"description": "To help us with travel arrangements"
},
"humanized_response": "United Kingdom",
"response": "UK",
"file": null
}
]
}
],
"source": null,
"payment": {
"reference": null,
"type": null
},
"receipt": {
"number": "0000001",
"total": "270.0",
"tax": 0,
"total_less_tax": "270.0",
"payment_provider": "Invoice",
"payment_reference": null,
"paid": false
},
"billing_address": null,
"event": {
"_type": "event",
"id": 1,
"title": "Awesomeconf",
"url": "https://ti.to/demo/awesomeconf",
"account_slug": "demo",
"slug": "awesomeconf",
"start_date": "2022-06-26",
"end_date": null,
"metadata": {
"my_event_variable": "something",
"another_event_variable": 123
}
}
}
For webhooks that have the webhook type of registration.*
the following JSON payload
will be sent.
Checkin Payload
{
"id": 3068963,
"slug": "ti_eZaOm33Y1rnICcLIpeTuESg",
"name": "John Smith",
"company_name": "Beanster Ltd",
"first_name": "John",
"last_name": "Smith",
"release_title": "Coffee Brewing",
"email": "john.smith@example.com",
"reference": "FITD-1",
"registration_reference": "FITD",
"checked_in": true,
"checked_in_at": "2019-08-16T14:14:21.000Z",
"checkin_list": {
"slug": "chk_el1ClfZxL8We2DHKtUzzoeg",
"title": "Brew Master Check-In List"
},
"checkin_uuid": "4521459e-1cec-49e8-90fe-afadcc364f02",
"custom": null,
"event": {
"slug": "2018",
"title": "2018-2"
},
"answers": [
{
"question": "What is your favourite coffee?",
"response": "Latte"
}
]
}
For webhooks that have the webhook type of checkin.*
the following JSON payload
will be sent.
Verifying the payload
key = 'YOUR EVENT SECURITY TOKEN'
hash = OpenSSL::Digest.new('sha256')
data = 'THE WEBHOOK REQUEST'
Base64.encode64(OpenSSL::HMAC.digest(hash, key, data)).strip
Each payload comes with a signed HMAC signature so that you can verify the origin of the webhook request.
In Customize / Webhooks, you’ll find a shared security token. This is used to sign the payload.
The security token is used as a key to sign the payload data with an HMAC key.
The HMAC key is your security token, the HMAC digest is SHA2, and the data is the raw payload JSON that is sent. The key is sent Base64 encoded via the Tito-Signature HTTP header.
If you’re using Ruby, for example, you can verify the authenticity of your payload with the code opposite.
Developing Locally
When you are developing your application locally you'll need to expose your local development environment to the Internet, so that Tito can send you webhooks and your application can process them.
Using Serveo
You can expose your local environment to the internet using Serveo
To expose your local environment to the internet:
ssh -R 80:localhost:4567 serveo.net
where 4567
is the port number your application
is running on.
You should see a line that looks something like this:
Forwarding HTTP traffic from https://duncan.serveo.net
Copy and paste that *.serveo.net URL into your browser. Notice you can now access your application using that URL.
If your application listens for webhooks from Tito on http://localhost:4567/webhooks/
you can create a webhook endpoint within Tito with the url https://duncan.serveo.net/webhooks/
.