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.1to 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 returnticketsandregistrationsfrom 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 testticketsandregistrations.
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:
Authorizationwith the valueToken token=YOUR-API-TOKENwhereYOUR-API-TOKENis replaced with your API token.Acceptheader 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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_tokenstringThe last four characters of the access token used. Included if you get a 404 error.errorsobjectA hash of each attribute and an array of messages for that attribute.error_listobject arraySimilar toerrorsbut in an array.hintstringGuidance on what to do to solve this problem.identifierstringIf we have logged this error then this unique identifier will help us find it in our logs.test_modebooleanWhether test mode is on or off.messagestringDescribes the problem.statusintegerThe 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
OK200All is well.Created201Your request has been fulfilled and has resulted in one or more new resources being created.No content204Your request has been fulfilled and that there is no additional content to send in the response payload body, e.g. deleting a resource.Unauthorized401Your request is not authenticated. See the [Authentication Errors](#errors-authentication-errors) section for more information.Forbidden403Your request is not authorized as the user has insufficient permissions. See the [Authorization Errors](#errors-authorization-errors) section for more information.Page not found404The endpoint requested does not exist.Unprocessable entity422The resource couldn't be created or updated due to a validation error. Please see the response body for more information.Too many requests429Your application is exceeding its rate limit. Slow down, pal!Internal server error500Something is wrong on our end.Bad gateway502The app responsible for serving your request is temporarily unavailable.Gateway timeout504Something 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_countintegerthe number of tickets (or upgrades) linked to this activity. Limited by the activitycapacity.capacityintegerThe number of people who can attend. If not set then there is no limit.datedateThe date of this activity.descriptiontexttranslated*A statement or tag line describing the activity.end_atdatetimeread onlyThe date and time the activity is going to end based on thedateandend_time.end_timetimeThe time the activity is going to start, e.g. "17:00" (24-hour clock).namestringrequiredtranslated*The name of the activity.questionsobject 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_idsinteger arrayOr usequestions_idsand just get an array ofidvalues.questions_slugsstring arrayOr usequestions_slugsand just get an array ofslugvalues.releasesobject 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_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.show_to_attendeebooleanYou can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default isfalse.sold_outbooleanTrue if this activity'scapacityhas been reached.start_atdatetimeread onlyThe date and time the activity is going to start based on thedateandstart_time.start_timetimeThe time the activity is going to start, e.g. "09:00" (24-hour clock).upgradesobject arrayA list of upgrades attached to this activity. This attribute is hidden by default but you can expand it using?expand=upgrades.venueobjectThe venue associated with this activity. This attribute is hidden by default but you can expand it using?expand=venue.- Common attributes:
idintegerread onlyUnique record identifier
* See translations.
Expansions
Append a comma separated list of expansions to pull back more information about this Activity.
questionsobject arrayA list of questions that will be asked for this activity. See questions.questions_idsinteger arrayOr usequestions_idsand just get an array ofidvalues.questions_slugsstring arrayOr usequestions_slugsand just get an array ofslugvalues.releasesobject arrayA list of releases attached to this activity. See releases.releases_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.upgradesobject arrayA list of upgrades attached to this activity.venueobjectThe venue associated with this activity.translationsA 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.activity_id- theidof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
namestringThe 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- theslugof theaccount.event_slug- theslugof theevent.activity_id- theidof theactivity
Required attributes
namestringThe 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- theslugof theaccount.event_slug- theslugof theevent.activity_id- theidof 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- theslugof theaccount.event_slug- theslugof theevent.activity_id- theidof theactivityyou are duplicating
Answers
Answers to questions
Attributes
alternate_responsestringThe response to the question's free text field if it's included e.g. 'If other, please specify'.download_urlurlFor file field questions, the URL where the uploaded file can be downloaded.primary_responsestring/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.questionobjectThe question the answer is attached to. This attribute is hidden by default but you can expand it using?expand=question.question_idintegerTheidof thequestionthe answer is attached to.responsestringread onlyA human friendly response to the question, a comma separated string containing theprimary_responseandalternate_responseif present.ticketobjectThe ticket this answer is attached to. This attribute is hidden by default but you can expand it using?expand=ticket.ticket_idintegerTheidof theticketthe answer is attached to.- Common attributes:
idintegerread onlyUnique record identifier
Expansions
Append a comma separated list of expansions to pull back more information about this Answer.
questionobjectThe question the answer is attached to.ticketobjectThe 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- theslugof theaccount.event_slug- theslugof 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
activitiesobject 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_idsinteger arrayOr useactivities_idsand just get an array ofidvalues.checked_in_countintegerread onlyHow many attendees have checked in.checked_in_percentintegerread onlyThechecked_in_countexpressed as a percentage.expiredbooleanread onlyTrue if theexpires_atis in the past.expires_atdatetimeThe time at which the check-in list should no longer be accessible or null for no expiry.hide_unpaidbooleanIf true then any tickets not yet paid (e.g. paid by invoice) will not appear in the list.openbooleanread onlyTrue is theexpires_atis in the future or is null. The inverse ofexpired.qr_code_urlurlread onlyScanning the QR code at this URL will give our check-in apps access to this check-in list.questionsobject 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_idsinteger arrayOr usequestions_idsand just get an array ofidvalues.questions_slugsstring arrayOr usequestions_slugsand just get an array ofslugvalues.releasesobject 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_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.show_company_namebooleanShow the attendees' company name on the check-in list.show_emailbooleanShow the attendees' email address on the check-in list.show_phone_numberbooleanShow the attendees' phone number on the check-in list.statestringread onlyEitherexpiredoropen.tickets_countintegerread onlyHow many tickets are there. When thechecked_in_countis the same as this then everyone is checked in.titlestringrequiredThe name of the check-in list.web_checkin_urlurlread onlyGives you access to the web based checkin app.- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyUnique string used in the URL to identify this record.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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.
activitiesobject arrayThe activities linked to this check-in list. See activities.activities_idsinteger arrayOr useactivities_idsand just get an array ofidvalues.questionsobject arrayThe questions linked to this check-in list. See questions.questions_idsinteger arrayOr usequestions_idsand just get an array ofidvalues.questions_slugsstring arrayOr usequestions_slugsand just get an array ofslugvalues.releasesobject arrayThe releases linked to this check-in list. See releases.releases_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.
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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
titlestringThe 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- theslugof theaccount.event_slug- theslugof theevent.checkin_list_slug- theslug(orid) of thecheckin_list.
Required attributes
titlestringThe 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- theslugof theaccount.event_slug- theslugof theevent.checkin_list_slug- theslug(orid) of thecheckin_list.
Discount Codes
Read more about discount codes
Attributes
block_registrations_if_not_applicablebooleanBlock registrations when discount cannot be applied to all discountable tickets. Default isfalse.codeStringrequiredThe code that will be distributed to provide a discount.descriptionStringShown on the payment form.description_for_organizerStringOnly visible to organizers. Useful for keeping track of what discount codes are for.disable_for_degressivebooleanDisable this discount code if it's used with degressive pricing (seerelease#price_degressive).end_atdatetimeThe time when the discount code becomes unavailable.max_quantity_per_releaseintegerDiscount only applies to a maximum of this number.min_quantity_per_releaseintegerDiscount only applies if this many tickets are selected.quantityintegerThe number of tickets that can avail of this discount code.quantity_usedintegerread onlyThe number of tickets this discount code has been applied to.registrations_countintegerread onlyThe number ofregistrationsthat used this discount code. Will be more than thequantity_usedif people buy multipleticketsat the same time.releasesobject arrayThereleasesthis discount code can be applied to. This attribute is hidden by default but you can expand it using?expand=releases. See releases.releases_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.share_urlurlShareable link to give access to the discount.show_public_releasesstringWhether 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_releasesstringWhether 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_atdatetimeThe time when the discount code becomes available.statestringEitherupcoming,currentorpastdepending on thestart_atandend_atvalues.tickets_countintegerHow many tickets have been bought with this discount code.typeStringrequiredThe kind of discount to apply.MoneyOffDiscountCodeapplies a flat discount.PercentOffDiscountCodeapplies a percentage discount.valuedecimalrequiredThe amount off per ticket. A percentage or flat amount depending on the discount code type.- Common attributes:
idintegerread onlyUnique record identifier
Expansions
Append a comma separated list of expansions to pull back more information about this Discount Code.
releasesobject arrayThereleasesthis discount code can be applied to. See releases.releases_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.
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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.discount_code_id- theidof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
codeStringThe code that will be distributed to provide a discount.typeStringThe kind of discount to apply.MoneyOffDiscountCodeapplies a flat discount.PercentOffDiscountCodeapplies a percentage discount.valuedecimalThe 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- theslugof theaccount.event_slug- theslugof theevent.discount_code_id- theidof thediscount_code
Required attributes
codeStringThe code that will be distributed to provide a discount.typeStringThe kind of discount to apply.MoneyOffDiscountCodeapplies a flat discount.PercentOffDiscountCodeapplies a percentage discount.valuedecimalThe 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- theslugof theaccount.event_slug- theslugof theevent.discount_code_id- theidof 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/2025 is composed:
- The base
ti.toURL - The Ultimate Conf
accountslugultimateconf - The specific
eventslug for the 2025 edition.
The equivalent event can be looked up using a similar URL structure with the API base URL:
https://api.tito.io/v3/ultimateconf/2025
Attributes
account_idintegerread onlyLink to the accountaccount_slugstringread onlyTheslugfor the account. Used in theurl.additional_infotexttranslated*after_registration_closed_urlurltranslated*after_registration_complete_urlurltranslated*after_registration_redirect_after_questionsbooleanany_live_salesbooleanread onlyany_live_ticketsbooleanread onlyarchivedbooleanWhether this event is archived or not.bannerobjectread onlybanner_urlurlread onlyA link to the event's banner image.consentobjectWhether consent is required for data protectioncredit_card_payment_option_gateway_typestringThe payment option for credit cards, e.g. "stripe".credit_card_payment_option_idintegerThe reference for the payment option you are using for credit card payments. This is unique to your account.currencystring3 letter ISO 4217 currency code e.g.USDcurrency_optionsobject 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_colorstringColor of homepage background, e.g.#FFFF77.custom_complete_ticket_labelcustom_csstextCustom CSS used on the event homepage. This requires thecustom_cssprivate beta feature.custom_email_csstextThis requires thecustom_cssprivate beta feature.custom_email_signaturetexttranslated*Custom signature for event emails. Will use a default signature if this is blank.custom_overlay_csstextThis requires thecustom_cssprivate beta feature.custom_registration_confirmation_subjecttexttranslated*custom_registration_unavailable_messagetexttranslated*custom_success_htmltexttranslated*custom_ticket_added_subjectstringtranslated*custom_ticket_gifted_subjectstringtranslated*custom_ticket_messagetexttranslated*custom_ticket_updated_subjectstringtranslated*custom_view_ticket_labeltranslated*date_or_rangestringread onlyThe date or dates of this event. E.g. "June 14th, 2022" or "June 14th-16th, 2022".day_numberintegerThe 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 be1then2.days_sinceintegerThe number of days since the event ended, based one theend_dateor, if that is blank, thestart_date.days_untilintegerThe number of days until the event starts, based on thestart_date.default_billing_countrydefault_localestringThe default locale of the eventdescriptionmarkdowntranslated*A statement or tag line describing the eventdiscount_codes_countintegerread onlyThe number of discount codes for this event.display_datetranslated*display_titletranslated*email_addressstringrequiredThe 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_imageemail_invoiceend_attimestampThe date and time the event is going to end based on theend_dateandend_time, e.g. 2020-12-31T20:00:00.000+01:00.end_datedateThe date the event is going to end, e.g. 2020-12-31end_timetimeThe time the event is going to end using the event'stimezone, e.g. 18:00facebook_share_messagetranslated*from_emailhappening_inEitherpast,now,futureorunknown(ifstart_dateis blank).hide_tax_typesinvoice_change_cutoff_daysinvoice_due_daysinvoice_extratranslated*invoice_form_messagetranslated*invoice_issue_methodinvoice_number_formatinvoice_number_offsetinvoice_payment_instructionstexttranslated*invoice_purchase_messagetranslated*invoice_tax_detailsitalian_checkoutThis requires theitalian_checkoutprivate beta feature.last_invoice_numberlivebooleanIs it visible to the public or not.localesArrayA list of locales supported for this eventlocationstringThe location the event is taking placelock_changes_when_ticket_not_completelogoobjectmap_latitudemap_linkmap_longitudemap_zoomlevelmax_tickets_per_personmax_tickets_per_registrationmeta_robotsmetadatajsonJSON that will appear in API requests for integration with external systemsmin_tickets_per_personmin_tickets_per_registrationnext_invoice_numberorganization_addressorganization_namepassbook_iconpayment_instructionstranslated*paypal_payment_option_idintegerThe reference for the payment option you are using for PayPal payments. This is unique to your account.paypal_payment_optionsobject 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.privatebooleanIs it to be listed on the event's account page or not.receipt_footer_messagetranslated*register_button_labeltranslated*register_interest_form_labeltranslated*registrations_countreleasesobject arrayread onlyA list of releases. This attribute is hidden by default but you can expand it using?expand=releases. See releases.releases_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.releases_countreply_to_emailrequires_billing_addressrequires_company_namerequires_countryrequires_vat_numbersecret_passwordsecurity_tokenstringread onlysend_registration_confirmation_emailsend_ticket_gifted_emailsend_ticket_updated_emailsetupbooleanread onlyshare_linkshareable_imageshow_additional_infoshow_bannerbooleanshow_company_fieldbooleanshow_datebooleanshow_descriptionbooleanshow_discount_code_fieldbooleanread onlyshow_email_addressbooleanshow_invoice_purchase_order_number_fieldbooleanshow_locationbooleanshow_logobooleanshow_next_ticketsbooleanshow_past_ticketsbooleanshow_phone_number_fieldbooleanshow_prices_ex_taxbooleanWhether to display prices inclusive or exclusive of tax. Default isfalse.show_register_interest_formbooleanshow_register_interest_form_tickets_not_on_salebooleanshow_register_interest_form_tickets_on_salebooleanshow_sharing_linksbooleanshow_tickets_remainingbooleanshow_tickets_remaining_thresholdbooleanshow_titlebooleanshow_venuebooleansnoozing_disabledbooleansocial_sharing_descriptionstringsocial_sharing_titlestringstart_attimestampThe time the event is going to start based on thestart_dateandstart_time, e.g. 2020-12-31T13:00:00.000+01:00start_datedateThe date the event is going to start, e.g. 2020-12-31start_timetimeThe time the event is going to start using the event's time zone, e.g. 13:00stripestripe_statement_descriptorteam_signofftranslated*test_modebooleanIs the event in test mode or not.themestringEithermcdonaghorclassic. Default ismcdonagh.ticket_cancelling_enabledbooleanWhether attendees can cancel their own tickets. Default isfalse.ticket_downloads_enabledbooleanWhether attendees can download a PDF of their ticket. Default istrue.ticket_fail_messagestringtranslated*ticket_gifting_disabledbooleanticket_gifting_disabled_atdatetimeticket_gifting_disabled_messagestringtranslated*ticket_gifting_disabled_nowbooleanticket_groupsticket_qr_codes_enabledbooleanWhether tickets show a QR code. Default istrue.ticket_success_messagetexttranslated*ticket_wallet_pass_enabledbooleanWhether attendees can add their ticket to their Apple Wallet. Default istrue.tickets_countintegerThe number of live tickets soldtickets_form_labeltranslated*timezonestringThe time zone for this event, e.g. "Pacific Time (US & Canada)". Default is "UTC".titlestringrequiredtranslated*The name of the eventtwitter_share_messagetexttranslated*typekit_idstringurlurlread onlyThe URL for the event homepage, based on the accountslugand eventslug.users_countintegerread only- Common attributes:
idintegerread onlyUnique record identifierslugstringA human friendly string used in the Event URLcreated_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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_optionsobject arrayA list of all possible currencies for this event.paypal_payment_optionsobject arrayA list of the PayPal payment options available on this account.releasesobject arrayread onlyA list of releases. See releases.releases_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.releases_slugsstring arrayOr usereleases_slugsand just get an array ofslugvalues.translationsA 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\" <[email protected]>",
"reply_to_email": "[email protected]",
"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": "[email protected]",
"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\" <[email protected]>",
"reply_to_email": "[email protected]",
"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": "[email protected]",
"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- theslugof 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- theslugof 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- theslugof 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\" <[email protected]>",
"reply_to_email": "[email protected]",
"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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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\" <[email protected]>",
"reply_to_email": "[email protected]",
"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": "[email protected]",
"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- theslugof theaccount.
Required attributes
email_addressstringThe 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.titlestringThe 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\" <[email protected]>",
"reply_to_email": "[email protected]",
"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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
email_addressstringThe 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.titlestringThe 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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
emailstringrequiredThe email of the interested user.namestringThe name of the interested user.- Common attributes:
idintegerread onlyUnique record identifiercreated_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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": "[email protected]",
"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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.interested_user_id- theidof 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]":"[email protected]"}'
{
"interested_user": {
"_type": "interested_user",
"id": 7,
"name": null,
"email": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
emailstringThe 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]":"[email protected]"}'
{
"interested_user": {
"_type": "interested_user",
"id": 1,
"name": "Darth Sidious",
"email": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.interested_user_id- theidof theinterested_user
Required attributes
emailstringThe 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- theslugof theaccount.event_slug- theslugof theevent.interested_user_id- theidof theinterested_user
Opt-ins
Opt-ins is a beta feature. Contact us to get it enabled.
Attributes
acceptance_countdescriptionstringtranslated*The description of this opt-in.namestringrequiredtranslated*The name of this opt-in.releasesobject 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_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyUnique string used in the URL to identify this record.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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.
releasesobject arrayA list of releases linked to this opt-in. See releases.releases_idsinteger arrayOr usereleases_idsand just get an array ofidvalues.translationsA 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
namestringThe 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- theslugof theaccount.event_slug- theslugof theevent.opt_in_slug- theslug(orid) of theopt_in.
Required attributes
namestringThe 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- theslugof theaccount.event_slug- theslugof theevent.opt_in_slug- theslug(orid) of theopt_in.
Questions
Attributes
activitiesobject 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_countintegerread onlyThe number of answers. See alsotickets_count.descriptionstringtranslated*A statement or tag line describing the questionfield_typestringrequiredCheckboxes,Country,File,Select,TextorTextarea.include_free_text_fieldbooleanShould an 'Other' text field be included alongside this question or not. Only applies toCheckboxesorSelectfield questions. Default isfalseoptionstextA line separated list of options for this question e.g.A\nB\nC. Only applies toCheckboxesorSelectfield questions.options_free_text_fieldstringA custom label for the 'Other' text field option if it's enabled. Only applies toCheckboxesorSelectfield questions.releasesobject arrayA list of releases linked to this question. This attribute is hidden by default but you can expand it using?expand=releases. See releases.requiredbooleanDoes this question require a response or not. Default isfalsetickets_countintegerread onlyThe number of tickets that have asked this question. Theanswers_countwill be less than or equal to this.titlestringrequiredtranslated*The question you would like to ask.- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyUnique string used in the URL to identify this record.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
field_typestringCheckboxes,Country,File,Select,TextorTextarea.titlestringThe 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- theslugof theaccount.event_slug- theslugof theevent.question_slug- theslug(orid) of thequestion.
Required attributes
field_typestringCheckboxes,Country,File,Select,TextorTextarea.titlestringThe 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- theslugof theaccount.event_slug- theslugof theevent.question_slug- theslug(orid) of thequestion.
Refunds
Attributes
amountdecimalrequiredHow much was refundedmanualbooleanread onlyTrue if the refund was not processed via the payment gateway.registrationobjectread onlyThe registration this refund relates to. This attribute is hidden by default but you can expand it using?expand=registration.- Common attributes:
idintegerread onlyUnique record identifiercreated_atdatetimeread onlyTimestamp of when this record was created.
Expansions
Append a comma separated list of expansions to pull back more information about this Refund.
registrationobjectread 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.refund_slug- theslug(orid) of therefund.
Registrations
Attributes
billing_addressobjectThe address entered during payment. This attribute is hidden by default but you can expand it using?expand=billing_address.cancelledbooleanread onlyWhether this registration has been cancelled.cancelled_atdatetimeread onlyThe date this registration was cancelled.cancelled_bystringread onlyThe name or email of who cancelled this registration.company_namecompleted_atconsented_atdiscount_codediscount_code_ideditable_total_and_pricesemaileventObjectread onlyThe event this registration belongs to, containing itsid,title,slugandpath.expires_atfreeimportedinvoiceip_addressjob_titleline_itemsobject arrayAn array ofLine Itemsattached to this registration. This attribute is hidden by default but you can expand it using?expand=line_items.localemanualmetadatanamepaidpartially_refundedpaymentpayment_completepayment_incompletepayment_option_namepayment_option_provider_namepayment_referencephone_numberquantitiesreceiptreceipt_idreceipt_numberreceipt_paidreceiptsobject arrayAn array ofReceiptsattached to this registration. This attribute is hidden by default but you can expand it using?expand=receipts.referencerefundablerefundedrefundsobject arrayAn array ofRefundsattached to this registration. This attribute is hidden by default but you can expand it using?expand=refunds. See refunds.registration_typesourcestateterms_acceptedtermset_idstest_modeticketsobject arrayAn array ofTicketsattached to this registration. This attribute is hidden by default but you can expand it using?expand=tickets. See tickets.tickets_counttotaltotal_less_tax- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyUnique string used in the URL to identify this record.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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_addressobjectThe address entered during payment.line_itemsobject arrayAn array ofLine Itemsattached to this registration.receiptsobject arrayAn array ofReceiptsattached to this registration.refundsobject arrayAn array ofRefundsattached to this registration. See refunds.ticketsobject arrayAn array ofTicketsattached 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": "[email protected]",
"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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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:
namecreated_atupdated_attotalreferencepayment_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:
cancelledcompleteconfirmedincompletepaidunpaid
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_atupdated_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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.registration_id- theidof 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]":"[email protected]","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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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]":"[email protected]"}'
{
"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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.registration_id- theidof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.registration_slug- theslug(orid) of theregistration.
This will cancel a registration and void any associated tickets.
Releases
Attributes
activitiesobject arrayread onlyActivities linked to this release. This attribute is hidden by default but you can expand it using?expand=activities. See activities.activity_questionsobject arrayread onlyQuestions linked by activities to this release. This attribute is hidden by default but you can expand it using?expand=activity_questions.allocatableintegerread onlyarchivedbooleancard_paymentsbooleanchanges_lockedbooleanread onlyWhether tickets of this release type can be changed. Depends onlock_changesand also the event settings.combo_releasesobject 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_quantityintegerThe number of tickets to add the payment form by default.deletablebooleanread onlyWhether this release can be safely deleted. Set to false if any tickets have been sold (even in test mode).descriptionstringtranslated*Describes this releasediscounted_tickets_countintegerread onlyHow many tickets of this release type that have been discounted.display_pricedecimalread onlyThe price to display. Could be including or excluding tax depending on the event settings.donationbooleanWhether donations are allowed for this release.enable_super_combo_summarybooleanend_atdatetimeWhen the release is available until (can be null). See alsostart_at.event_idintegerread onlyReferences the eventexpiredbooleanread onlyIf theend_atis set and it's in the pastfail_messagetexttranslated*Message to show on failure.free_tickets_countintegerread onlyThe number of free tickets of this release type.full_price_tickets_countintegerread onlyThe number of tickets of this release type for which full price was paid.gross_incomedecimalread onlyThe income generated including tax and feeshas_fail_messagebooleanread onlyWhether thefail_messageis present.has_success_messagebooleanread onlyWhether thesuccess_messageis present.invoicebooleanWhether people can pay by invoice. This requires theinvoicesprivate beta feature.lock_changesbooleanWhether tickets are locked for this release.lockedbooleanread 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_donationdecimalThe maximum allowable donation. See alsodonationandmin_donation.max_tickets_per_personintegerActually the maximum number tickets of this release type per registration (order) not per person. See alsomin_tickets_per_person.metadataobjectA hash of metadata.min_donationdecimalThe minimum allowable donation. See alsodonationandmax_donation.min_tickets_per_personintegerActually the minimum number tickets of this release type per registration (order) not per person. See alsomax_tickets_per_person.not_a_ticketbooleanWhether tickets of this release type appear as tickets to the attendee. Usually used in combination with supercombos.off_salebooleanread onlyWhether this release is currently available to buy. See alsostate_name.only_issue_combosbooleanUsed in connection with supercombos.payment_typestringread onlyEither "degressive", "donation", "paid", or "free".pending_waiting_listpositionintegerDefines sort order when displaying releases.pricedecimalHow much to sell this release for. See alsotax_exclusiveandprice_degressive.price_degressivestringComma separated list of prices to use with degressive (reducing) pricing.price_degressive_listdecimal arrayread onlyList ofprice_degressive, split by commas.price_ex_taxdecimalread onlyThe price excluding any tax. See alsopriceandtax_exclusive.pricing_typestringread onlyAlias forpayment_type.quantityintegerThe total number of tickets of this release type available.questionsobject arrayread onlyList of questions. This attribute is hidden by default but you can expand it using?expand=questions. See questions.request_company_namebooleanWhether the company name field is shown on the payment form. See alsorequire_company_name.request_vat_numberbooleanWhether the VAT number field is shown on the payment form. See alsorequire_vat_number.require_billing_addressbooleanWhether the billing address is required on the payment form.require_company_namebooleanWhether the company name is required. See alsorequest_company_name.require_credit_card_for_sold_out_waiting_listbooleanrequire_emailbooleanWhether an email is required. Default istrue.require_namebooleanWhether a name is required. Default istrue.require_vat_numberbooleanWhether the VAT number is required. See alsorequest_vat_number.secretbooleanA secret release is only shown if you use its shareable URL (share_url) or if it's revealed by using a discount code.share_urlurlread onlyA URL that will display just this release. Useful for giving people access tosecrettickets.show_company_namebooleanshow_discount_code_field_herebooleanshow_phone_numberbooleanshow_pricebooleanshow_qr_codebooleanshow_vat_numberbooleansold_outbooleanread onlyThere are no more tickets available. Could be because ofquantityor a linked activity.start_atdatetimeWhen the release is available until (can be null). See alsoend_at.state_namestringread onlyEither "on_sale" or "off_sale".success_messagetexttranslated*Message to show on success.suggested_donationdecimalThe suggested donation amount. See alsomin_donationandmax_donation.super_combo_releasesobject arrayread onlyA list of that shows the releaseidof all super combo releases and thequantityof each. See alsocombo_releases. This attribute is hidden by default but you can expand it using?expand=super_combo_releases.tax_componentsobject arrayread onlyTax components linked to this release. This attribute is hidden by default but you can expand it using?expand=tax_components.tax_descriptiontax_exclusivebooleanWhether thepriceis inclusive or exclusive of tax.tax_typesobject arrayread onlyTax types linked to this release. This attribute is hidden by default but you can expand it using?expand=tax_types.termsetobjectread onlyLink to termset This attribute is hidden by default but you can expand it using?expand=termset.ticket_groupobjectLink to ticket group This attribute is hidden by default but you can expand it using?expand=ticket_group.tickets_countintegerread onlyThe number of non-void tickets.titlestringrequiredtranslated*The title of this release.upcomingbooleanread onlyIf thestart_atis in the future. Set tofalseif there is nostart_at.voided_tickets_countintegerread onlyThe number of voided tickets.waiting_listwaiting_list_enabled_during_lockedbooleanWhether the waiting list is enabled because this release is locked.waiting_list_enabled_during_sold_outbooleanWhether the waiting list is enabled because this release is sold out.warningsobjectread onlyWarnings related to whether this release is limited because of activity limits or whether this release is locked.- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyUnique string used in the URL to identify this record.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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.
activitiesobject arrayread onlyActivities linked to this release. See activities.activity_questionsobject arrayread onlyQuestions linked by activities to this release.combo_releasesobject arrayread onlyA list of releases linked bysuper_combo_releases.questionsobject arrayread onlyList of questions. See questions.super_combo_releasesobject arrayread onlyA list of that shows the releaseidof all super combo releases and thequantityof each. See alsocombo_releases.tax_componentsobject arrayread onlyTax components linked to this release.tax_typesobject arrayread onlyTax types linked to this release.termsetobjectread onlyLink to termsetticket_groupobjectLink to ticket grouptranslationsA 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
titlestringThe 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- theslugof theaccount.event_slug- theslugof theevent.release_slug- theslug(orid) of therelease.
Required attributes
titlestringThe 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof 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_countintegerread onlyHow many people have responded "maybe".message_slugstringread onlyThe slug for the message that was used to send the invitation.nos_countintegerread onlyHow many people have responded "no".redeemed_countintegerread onlyHow many people have accepted the invitation.release_invitations_countintegerread onlyHow many people have been invited.titlestringrequiredA title for this list- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyUnique string used in the URL to identify this record.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.rsvp_list_id- theidof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
titlestringA 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- theslugof theaccount.event_slug- theslugof theevent.rsvp_list_id- theidof thersvp_list
Required attributes
titlestringA 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- theslugof theaccount.event_slug- theslugof theevent.rsvp_list_id- theidof 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
autobooleanAuto-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_codestringAuto-apply this discount code when the invitee orders the ticket.emailstringrequiredThe email of the person who is being invited. It must be unique within this RSVP list.expires_atdatetimeThe invitation must be redeemed before this time.first_namestringThe first name of the person who is being invited.guestbooleanAllow the person being invited to register a guest.importer_idintegerread onlyAn internal reference that links to the file that was used to import this invitation (if it was imported).last_namestringThe last name of the person who is being invited.message_delivery_idintegerread onlyAn internal reference that links to the message that was sent.namestringread onlySeefirst_nameandlast_name.redeemedbooleanread onlyWhether this invitation has been accepted. This means that it is linked to a registration and that registration is "finished".redirectbooleanWhat 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.registrationobjectread 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_idintegerread onlyLinks to the registration once this invitation has been redeemed.release_idintegerread onlyNot used.rsvp_list_idintegerrequiredLink to the RSVP list this invitation belongs to.statusstringEitheryes,noormaybe.unique_urlurlread onlyThe link that is emailed to the person who is being invited. Clicking this link allows them to redeem the invitation.- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyUnique string used in the URL to identify this record.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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.
registrationobjectread 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": "[email protected]",
"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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.release_invitation_id- theidof 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]":"[email protected]"}'
{
"release_invitation": {
"_type": "release_invitation",
"id": 14,
"slug": "rsvp_dNoZXmP78nE2NVTXtqn4Qyw",
"first_name": null,
"last_name": null,
"email": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
emailstringThe email of the person who is being invited. It must be unique within this RSVP list.rsvp_list_idintegerLink 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]":"[email protected]"}'
{
"release_invitation": {
"_type": "release_invitation",
"id": 4,
"slug": "rsvp_d36QcNmBdCeimd5cxx4ZQNA",
"first_name": "Watto",
"last_name": null,
"email": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.release_invitation_id- theidof therelease_invitation
Required attributes
emailstringThe email of the person who is being invited. It must be unique within this RSVP list.rsvp_list_idintegerLink 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- theslugof theaccount.event_slug- theslugof theevent.release_invitation_id- theidof therelease_invitation
Tickets
Attributes
activitiesobject 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_idsinteger arrayOr useactivities_idsand just get an array ofidvalues.answersobject arrayAn array ofAnswersto questions for this ticket. This attribute is hidden by default but you can expand it using?expand=answers. See answers.answers_idsinteger arrayOr useanswers_idsand just get an array ofidvalues.assignedbooleanread onlyWhether the ticket has been assigned to an individual's email addressavatar_urlurlThe ticket holders avatar.changes_lockedbooleanread onlyWhether changes are allowed on this ticket. Dependent onlock_changeson this ticket but also the release and the event settings.company_namestringThe company name of the attendee.consented_atdatetimeread onlyThe date the attendee consented to providing their information.delete_answersbooleanwrite onlyDelete all answers (useful if reassigning a ticket to someone else).discount_code_usedstringread onlyThe code ofDiscountCodeused when purchasing.emailstringThe email address of the attendee.first_namestringThe first name of the attendee.last_namestringThe last name of the attendee.lock_changesbooleanWhether to lock changes at ticket level.metadataobjectMetadata about the attendee.namestringread onlyThe full name of the attendee based on thefirst_nameandlast_name.numberintegerread onlyDefault: Starts at 1 and counts up with each ticket registered.opt_insobject 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_numberstringThe phone number of the attendee.pricedecimalThe price paid for this ticket without any upgrades.price_less_taxdecimalread onlyThe net price paid for this ticket minus any tax.qr_code_disabledbooleanWhether a QR code is shown on the ticket.qr_urlurlread onlyThe URL to show the QR code.referencestringread onlyDefault: The order reference plus the index of the ticket in that order e.g.AXBY-1.registrationobjectread onlyTheRegistrationattached to the ticket. This attribute is hidden by default but you can expand it using?expand=registration.registration_idintegerread onlyThe id of theRegistrationthis ticket was created from.registration_slugreleaseobjectread onlyTheReleaseattached to the ticket. This attribute is hidden by default but you can expand it using?expand=release.release_archivedbooleanread onlyWhether the release is archived.release_idintegerrequiredTheidof the release attached to the ticket.release_slugrelease_titleresellbooleanwrite onlyWhether a ticket can be resold after it's been voided if you have limited capacity.responsesobject arrayread onlyThe answer to eachQuestionattached to the ticket. Format: A hash of answers, keyed byQuestionslug e.g.{ "t-shirt-siz: "Medium" }This attribute is hidden by default but you can expand it using?expand=responses.show_qr_codebooleanSee alsoqr_code_disabled.statestringread onlyEitherunassigned,complete,incomplete, orvoid. Default isunassigned.tag_namesstring arrayA list of tag namestagsstringA comma separated list of tags for the ticket.temporarybooleanread 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_modebooleanread onlyDefault:trueif test mode is enabled for you or for your entire event, otherwisefalse.total_paiddecimalread onlyThe gross price paid for this ticket including any upgradestotal_paid_less_taxdecimalread onlyThe net price paid including upgrades.total_tax_paiddecimalread onlyThe tax paid for this ticket.unique_urlurlread onlyThe unique URL that the attendee can use to access this ticket.upgrade_idsinteger arrayAn array of the IDs ofUpgradeattached to the release. This requires theupgradesprivate beta feature. This attribute is hidden by default but you can expand it using?expand=upgrade_ids.voidbooleanread onlyWhether this ticket has been voided.- Common attributes:
idintegerread onlyUnique record identifierslugstringread onlyA human friendly string used in the URL.created_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread onlyTimestamp of when this record was last updated.
Expansions
Append a comma separated list of expansions to pull back more information about this Ticket.
activitiesobject arrayA list of the activities attached to this ticket. See activities.activities_idsinteger arrayOr useactivities_idsand just get an array ofidvalues.answersobject arrayAn array ofAnswersto questions for this ticket. See answers.answers_idsinteger arrayOr useanswers_idsand just get an array ofidvalues.opt_insobject arrayA list of all the opt-ins for this ticket. See opt_ins.registrationobjectread onlyTheRegistrationattached to the ticket.releaseobjectread onlyTheReleaseattached to the ticket.responsesobject arrayread onlyThe answer to eachQuestionattached to the ticket. Format: A hash of answers, keyed byQuestionslug e.g.{ "t-shirt-siz: "Medium" }upgrade_idsinteger arrayAn array of the IDs ofUpgradeattached to the release. This requires theupgradesprivate 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": "[email protected]",
"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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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_namelast_namecreated_atupdated_atpricereferencenumber
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:
completeincompleteunassignedvoid
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_atupdated_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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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]":"[email protected]"}'
{
"ticket": {
"_type": "ticket",
"id": 1,
"slug": "ti_dj8GKOodhY1PZK3VpFxVshw",
"unique_url": "https://ti.to/demo/awesomeconf/tickets/ti_dj8GKOodhY1PZK3VpFxVshw",
"company_name": null,
"email": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.ticket_slug- theslug(orid) of theticket.
Required attributes
release_idintegerTheidof 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":"[email protected]","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- theslugof theaccount.event_slug- theslugof theevent.ticket_slug- theslug(orid) of theticket.
Parameters
delete_answersbooleanDelete all answers (useful if reassigning a ticket to someone else).emailstringThe email address of the attendee.first_namestringThe first name of the attendee.last_namestringThe 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- theslugof theaccount.event_slug- theslugof theevent.ticket_slug- theslug(orid) of theticket.
Parameters
resellbooleanWhether 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
emailstringrequiredThe person's email.expiredbooleanread onlyTrue if thestateis "expired".expires_atdatetimeThe date and time the offer expires, if set.joinedbooleanread onlyTrue if thestateis "joined".joined_atdatetimeThe date and time the person was added to the list.messageThe custom message to send in the offer email. Leave blank to use the standard message.namestringThe person's name.offeredbooleanread onlyTrue if thestateis "offered".offered_atdatetimeThe date and time the person was offered a ticket.redeemedbooleanread onlyTrue if thestateis "redeemed".registrationobjectread onlyTheRegistrationcreated when the offer is redeemed. This attribute is hidden by default but you can expand it using?expand=registration.rejectedbooleanread onlyTrue if thestateis "rejected".releaseobjectread onlyTheReleaseattached to this person. This attribute is hidden by default but you can expand it using?expand=release.release_idintegerrequiredReferences the release that this person is waiting for.statestringread onlyOne ofjoined,offered,redeemedorrejected.statusstringread onlyOne of "Redeemed", "Expired", "Waiting", "Offered", or "Rejected".unique_offer_urlstringread onlyOnce the person has been offered a ticket, this contains the URL they need to use to redeem it.- Common attributes:
idintegerread onlyUnique record identifiercreated_atdatetimeread onlyTimestamp of when this record was created.updated_atdatetimeread 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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof 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": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.waitlisted_person_id- theidof 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]":"[email protected]","waitlisted_person[release_id]":1}'
{
"waitlisted_person": {
"_type": "waitlisted_person",
"id": 13,
"name": "Jane Doe",
"email": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
emailstringThe person's email.release_idintegerReferences 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]":"[email protected]"}'
{
"waitlisted_person": {
"_type": "waitlisted_person",
"id": 4,
"name": "Jane Smith",
"email": "[email protected]",
"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- theslugof theaccount.event_slug- theslugof theevent.waitlisted_person_id- theidof thewaitlisted_person
Required attributes
emailstringThe person's email.release_idintegerReferences 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- theslugof theaccount.event_slug- theslugof theevent.waitlisted_person_id- theidof thewaitlisted_person
Webhook Endpoints
See Webhooks for more information.
Attributes
custom_dataobjectA hash of custom data that will be passed along in the webhook payload.deprecatedbooleanread onlyWhether the URL is deprecated. We only support secure, https connections now.included_triggersstring arrayrequiredList of triggers that will be sent to this webhook endpoint.urlurlrequiredWhere to send the webhooks to. Must be a secure, https URL.- Common attributes:
idintegerread 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- theslugof theaccount.event_slug- theslugof 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- theslugof theaccount.event_slug- theslugof theevent.webhook_endpoint_id- theidof 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- theslugof theaccount.event_slug- theslugof theevent.
Required attributes
included_triggersstring arrayList of triggers that will be sent to this webhook endpoint.urlurlWhere 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- theslugof theaccount.event_slug- theslugof theevent.webhook_endpoint_id- theidof thewebhook_endpoint
Required attributes
included_triggersstring arrayList of triggers that will be sent to this webhook endpoint.urlurlWhere 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- theslugof theaccount.event_slug- theslugof theevent.webhook_endpoint_id- theidof 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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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/.