NAV Navbar

API Early Access Please note this API is under active development — view our Changelog for updates

Introduction

Admin API endpoint

https://api.tito.io/v3/

Examples in this documentation are written using curl.

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

curl --request GET \
  --url 'https://api.tito.io/v3/...' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \

The Admin API uses API tokens to allow users to authenticate without exposing their credentials.

Developers can find their API token by signing in at https://id.tito.io. API tokens are private tokens and should not be shared with unauthorized parties. API tokens can be regenerated by clicking on the Regenerate API Token button at https://id.tito.io.

Your API token needs to be included in the Authorization header so your requests can be authenticated.

The Admin API also provides detailed information about Authentication Errors.

Pagination

Endpoints which enumerate objects are paginated.

Pagination information is returned in the meta attribute in the response body.

A specific page can be retrieved by providing the page parameter:

https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id?page=2

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

Attribute Type Description
capacity integer The number of people who can attend. If not set then there is no limit.
date date The date of this activity
description text A statement or tag line describing the activity
end_time time The time the activity is going to start
name string The name of the activity
question_ids array A list of Question id attributes to be asked to those who register for this activity.
release_ids array A list of Release id attributes that are part of the activity.
show_to_attendee boolean You can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default: false
start_time time The time the activity is going to start

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": 1019150,
      "capacity": 20,
      "date": null,
      "description": "",
      "start_time": null,
      "end_time": null,
      "start_at": null,
      "end_at": null,
      "name": "Tea Making",
      "private": false,
      "question_ids": [],
      "venue_id": null,
      "accommodation": null,
      "allocation_count": 0,
      "sold_out": false,
      "show_to_attendee": false,
      "release_ids": [],
      "translations": {
        "en": {
          "name": "Tea Making"
        }
      },
      "venue": null,
      "questions": [],
      "releases": []
    }
  ],
  "meta": {
    "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": "name",
        "direction": "asc",
        "default": true
      },
      "Name Z-A": {
        "attr": "name",
        "direction": "desc"
      }
    },
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": []
    }
  }
}

Retrieves all Activities for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/activities

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": 1019150,
    "capacity": 20,
    "date": null,
    "description": "",
    "start_time": null,
    "end_time": null,
    "start_at": null,
    "end_at": null,
    "name": "Tea Making",
    "private": false,
    "question_ids": [],
    "venue_id": null,
    "accommodation": null,
    "allocation_count": 0,
    "sold_out": false,
    "show_to_attendee": false,
    "release_ids": [],
    "translations": {
      "en": {
        "name": "Tea Making"
      }
    },
    "venue": null,
    "questions": [],
    "releases": []
  }
}

Retrieves an Activity for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id

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":"Coffee Workshop"}}'
{
  "activity": {
    "_type": "activity",
    "id": 1019152,
    "capacity": null,
    "date": null,
    "description": null,
    "start_time": null,
    "end_time": null,
    "start_at": null,
    "end_at": null,
    "name": "Coffee Workshop",
    "private": true,
    "question_ids": [],
    "venue_id": null,
    "accommodation": null,
    "allocation_count": 0,
    "sold_out": false,
    "show_to_attendee": true,
    "release_ids": [],
    "translations": {
      "en": {
        "name": "Coffee Workshop"
      }
    },
    "venue": null,
    "questions": [],
    "releases": []
  }
}

Create a new Activity belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/activities

Parameters

Parameter Type Description
name Required string The name of the activity
capacity integer The number of people who can attend. If not set then there is no limit.
date date The date of this activity
description text A statement or tag line describing the activity
end_time time The time the activity is going to start
question_ids array A list of Question id attributes to be asked to those who register for this activity.
release_ids array A list of Release id attributes that are part of the activity.
show_to_attendee boolean You can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default: false
start_time time The time the activity is going to start

Update an Activity

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_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": 1019150,
    "capacity": 100,
    "date": null,
    "description": "",
    "start_time": null,
    "end_time": null,
    "start_at": null,
    "end_at": null,
    "name": "Tea Making",
    "private": false,
    "question_ids": [],
    "venue_id": null,
    "accommodation": null,
    "allocation_count": 0,
    "sold_out": false,
    "show_to_attendee": false,
    "release_ids": [],
    "translations": {
      "en": {
        "name": "Tea Making"
      }
    },
    "venue": null,
    "questions": [],
    "releases": []
  }
}

Update an Activity belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id

Parameters

Parameter Type Description
name Required string The name of the activity
capacity integer The number of people who can attend. If not set then there is no limit.
date date The date of this activity
description text A statement or tag line describing the activity
end_time time The time the activity is going to start
question_ids array A list of Question id attributes to be asked to those who register for this activity.
release_ids array A list of Release id attributes that are part of the activity.
show_to_attendee boolean You can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default: false
start_time time The time the activity is going to start

Delete an Activity

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Delete an Activity belonging to the given Event.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id

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' \

Duplicate an Activity belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id/duplication

Answers

Attributes

Attribute Type Description
alternate_response string The response to the question's free text field if it's included e.g. 'If other, please specify'.
download_url url For file field questions, the URL where the uploaded file can be downloaded.
primary_response string/array The response to the question, Note, this can be a string but it also can be an array if it's for a checkboxes question with multiple responses.
question_id integer The id of the Question the answer is attached to.
response Read only string A human friendly response to the question, a comma separated string containing the primary_response and alternate_response if present.
ticket_id object The id of the Ticket the answer is attached to.

Get all Answers

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": 1001,
      "alternate_response": "A small t-shirt is ok too.",
      "download_url": null,
      "primary_response": "Medium",
      "question_id": 2001,
      "response": "Medium, A small t-shirt is ok too.",
      "ticket_id": 3001
    }
  ],
  "meta": { ... }
}

Retrieves all Answers for the given Question on an Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug/answers

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.

Attributes

Attribute Type Description
activity_ids array The Activities the check-in list is for. Format: An array of Activity IDs.
expires_at datetime The time at which the check-in list should no longer be accessible or null for no expiry.
question_ids array The Questions to show attendees' answers to on the check-in list. Format: An array of Question IDs.
release_ids array The Releases the check-in list is for. Format: An array of Release IDs.
show_company_name boolean Show the attendees' company name on the check-in list.
show_email boolean Show the attendees' email address on the check-in list.
show_phone_number boolean Show the attendees' phone number on the check-in list.
slug Read only string A human friendly string used in the URL.
title string The name of the check-in list.

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",
      "slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
      "activity_ids": [],
      "expires_at": null,
      "question_ids": [],
      "release_ids": [],
      "show_company_name": true,
      "show_email": true,
      "show_phone_number": true,
      "title": "Bowling Attendee List",
      "activities": [],
      "checkins": [],
      "questions": [],
      "releases": [],
      "tickets": []
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": []
    }
  }
}

Retrieves all CheckinLists for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists

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",
    "slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
    "activity_ids": [],
    "expires_at": null,
    "question_ids": [],
    "release_ids": [],
    "show_company_name": true,
    "show_email": true,
    "show_phone_number": true,
    "title": "Bowling Attendee List",
    "activities": [],
    "checkins": [],
    "questions": [],
    "releases": [],
    "tickets": []
  }
}

Retrieves a CheckinList for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug

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":"Bowling Attendee List"}}'
{
  "checkin_list": {
    "_type": "checkin_list",
    "slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
    "activity_ids": [],
    "expires_at": null,
    "question_ids": [],
    "release_ids": [],
    "show_company_name": true,
    "show_email": true,
    "show_phone_number": true,
    "title": "Bowling Attendee List",
    "activities": [],
    "checkins": [],
    "questions": [],
    "releases": [],
    "tickets": []
  }
}

Create a new CheckinList belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists

Parameters

Parameter Type Description
title Required string The name of the check-in list.
activity_ids array The Activities the check-in list is for. Format: An array of Activity IDs.
expires_at datetime The time at which the check-in list should no longer be accessible or null for no expiry.
question_ids array The Questions to show attendees' answers to on the check-in list. Format: An array of Question IDs.
release_ids array The Releases the check-in list is for. Format: An array of Release IDs.
show_company_name boolean Show the attendees' company name on the check-in list.
show_email boolean Show the attendees' email address on the check-in list.
show_phone_number boolean Show the attendees' phone number on 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_list_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"checkin_list":{"title":"Conference Dinner List"}}'
{
  "checkin_list": {
    "_type": "checkin_list",
    "slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
    "activity_ids": [],
    "expires_at": null,
    "question_ids": [],
    "release_ids": [],
    "show_company_name": true,
    "show_email": true,
    "show_phone_number": true,
    "title": "Conference Dinner List",
    "activities": [],
    "checkins": [],
    "questions": [],
    "releases": [],
    "tickets": []
  }
}

Update a CheckinList belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug

Parameters

Parameter Type Description
title Required string The name of the check-in list.
activity_ids array The Activities the check-in list is for. Format: An array of Activity IDs.
expires_at datetime The time at which the check-in list should no longer be accessible or null for no expiry.
question_ids array The Questions to show attendees' answers to on the check-in list. Format: An array of Question IDs.
release_ids array The Releases the check-in list is for. Format: An array of Release IDs.
show_company_name boolean Show the attendees' company name on the check-in list.
show_email boolean Show the attendees' email address on the check-in list.
show_phone_number boolean Show the attendees' phone number on 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_list_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Delete an Activity belonging to the given Event.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug

Discount Codes

Attributes

Attribute Type Description
code string The code that will be distributed to provide a discount.
end_at datetime The time when the discount code becomes unavailable.
max_quantity_per_release integer Discount only applies to a maximum of this number.
min_quantity_per_release integer Discount only applies if this many tickets are selected.
only_show_attached boolean Only display tickets attached to this discount code when it is displayed or not e.g. display all publicly visible tickets. Default false
quantity integer The number of tickets that can avail of this discount code.
quantity_used Read only integer The number of tickets this discount code has been applied to.
release_ids array An array of the IDs of Releases the discount code can be applied to.
reveal_secret boolean Should secret tickets be revealed if this discount code is applied or not. Default false
start_at datetime The time when the discount code becomes available.
type string The kind of discount to apply. MoneyOffDiscountCode applies a flat discount. PercentOffDiscountCode applies a percentage discount.
value decimal The amount off per ticket. A percentage or flat amount depending on the discount code type.

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": 5319076,
      "code": "SAVE10",
      "end_at": null,
      "max_quantity_per_release": null,
      "min_quantity_per_release": null,
      "only_show_attached": null,
      "quantity": null,
      "quantity_used": 0,
      "release_ids": [],
      "reveal_secret": null,
      "start_at": null,
      "type": "PercentOffDiscountCode",
      "value": "10.0",
      "source": null
    }
  ],
  "meta": {
    "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": [
      "past"
    ],
    "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"
      ]
    }
  }
}

Retrieves all DiscountCodes for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/discount_codes

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": 5319076,
    "code": "SAVE10",
    "end_at": null,
    "max_quantity_per_release": null,
    "min_quantity_per_release": null,
    "only_show_attached": null,
    "quantity": null,
    "quantity_used": 0,
    "release_ids": [],
    "reveal_secret": null,
    "start_at": null,
    "type": "PercentOffDiscountCode",
    "value": "10.0",
    "source": null
  }
}

Retrieves a DiscountCode for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id

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":"SAVE50","type":"PercentOffDiscountCode","value":"50.0"}}'
{
  "discount_code": {
    "_type": "discount_code",
    "id": 5319079,
    "code": "SAVE50",
    "end_at": null,
    "max_quantity_per_release": null,
    "min_quantity_per_release": null,
    "only_show_attached": false,
    "quantity": null,
    "quantity_used": 0,
    "release_ids": [],
    "reveal_secret": false,
    "start_at": null,
    "type": "PercentOffDiscountCode",
    "value": "50.0",
    "source": null
  }
}

Create a new DiscountCode belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/discount_codes

Parameters

Parameter Type Description
code Required string The code that will be distributed to provide a discount.
type Required string The kind of discount to apply. MoneyOffDiscountCode applies a flat discount. PercentOffDiscountCode applies a percentage discount.
value Required decimal The amount off per ticket. A percentage or flat amount depending on the discount code type.
end_at datetime The time when the discount code becomes unavailable.
max_quantity_per_release integer Discount only applies to a maximum of this number.
min_quantity_per_release integer Discount only applies if this many tickets are selected.
only_show_attached boolean Only display tickets attached to this discount code when it is displayed or not e.g. display all publicly visible tickets. Default false
quantity integer The number of tickets that can avail of this discount code.
release_ids array An array of the IDs of Releases the discount code can be applied to.
reveal_secret boolean Should secret tickets be revealed if this discount code is applied or not. Default false
start_at datetime The time when the discount code becomes available.

Update a Discount Code

curl --request PATCH \
  --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' \
  --header 'Content-type: application/json' \
  --data '{"discount_code":{"code":"SUPERSAVER"}}'
{
  "discount_code": {
    "_type": "discount_code",
    "id": 5319079,
    "code": "SUPERSAVER",
    "end_at": null,
    "max_quantity_per_release": null,
    "min_quantity_per_release": null,
    "only_show_attached": false,
    "quantity": null,
    "quantity_used": 0,
    "release_ids": [],
    "reveal_secret": false,
    "start_at": null,
    "type": "PercentOffDiscountCode",
    "value": "50.0",
    "source": null
  }
}

Update a DiscountCode belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id

Parameters

Parameter Type Description
code Required string The code that will be distributed to provide a discount.
type Required string The kind of discount to apply. MoneyOffDiscountCode applies a flat discount. PercentOffDiscountCode applies a percentage discount.
value Required decimal The amount off per ticket. A percentage or flat amount depending on the discount code type.
end_at datetime The time when the discount code becomes unavailable.
max_quantity_per_release integer Discount only applies to a maximum of this number.
min_quantity_per_release integer Discount only applies if this many tickets are selected.
only_show_attached boolean Only display tickets attached to this discount code when it is displayed or not e.g. display all publicly visible tickets. Default false
quantity integer The number of tickets that can avail of this discount code.
release_ids array An array of the IDs of Releases the discount code can be applied to.
reveal_secret boolean Should secret tickets be revealed if this discount code is applied or not. Default false
start_at datetime The time when the discount code becomes available.

Delete a Discount Code

curl --request DELETE \
  --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'

Delete a DiscountCode belonging to the given Event.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id

Events

Events are planned social occasions that tickets will be sold for and people will attend.

An Event belongs to an Account and most other resources belong to an event.

An event URL is comprised of the combination of the account_slug and the event_slug.

For example https://ti.to/ultimateconf/2019 is composed:

The equivalent event can be looked up using a similar URL structure with the API base URL:

https://api.tito.io/v3/ultimateconf/2019

Attributes

Attribute Type Description
account_id Read only integer
account_slug Read only string
banner object
banner_url Read only url A link to the event's banner image.
currency string 3 letter ISO 4217 currency code e.g. USD
date_or_range Read only string
default_locale string The default locale of the event
description markdown A statement or tag line describing the event
discount_codes_count Read only integer
end_date date The date the event is going to end
live boolean Is it visible to the public or not.
locales Array A list of locales supported for this event
location string The location the event is taking place
logo object
metadata json JSON that will appear in API requests for integration with external systems
private boolean Is it to be listed on the event's account page or not.
releases Read only array
security_token Read only string
setup Read only boolean
show_discount_code_field Read only boolean
slug string A human friendly string used in the Event URL
start_date date The date the event is going to start
test_mode boolean Is the event in test mode or not.
title string The name of the event
url Read only string
users_count Read only integer

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": [
    {
      "_type": "event",
      "id": 1058586,
      "created_at": "2018-11-01T11:55:45.000+00:00",
      "updated_at": "2018-11-01T11:55:45.000+00:00",
      "title": "2018",
      "description": null,
      "banner": {
        "url": null,
        "thumb": {
          "url": null
        }
      },
      "banner_url": "https://www.example.com",
      "currency": "USD",
      "default_locale": "en",
      "live": false,
      "test_mode": true,
      "locales": [
        "en"
      ],
      "location": null,
      "logo": {
        "url": null,
        "thumb": {
          "url": null
        },
        "display": {
          "url": null
        }
      },
      "private": false,
      "slug": "2018",
      "account_id": 410,
      "start_date": null,
      "end_date": null,
      "date_or_range": "",
      "security_token": null,
      "metadata": {},
      "url": "https://ti.to/biscuit-box/2018",
      "setup": true,
      "show_discount_code_field": false,
      "discount_codes_count": 0,
      "account_slug": "biscuit-box",
      "users_count": 1,
      "releases": []
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "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"
      ]
    }
  }
}

Retrieves all upcoming Events for the given Account.

GET https://api.tito.io/v3/:account_slug/events

Get all past Events

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/events/past' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Retrieves all past Events for the given Account.

GET https://api.tito.io/v3/:account_slug/events/past

Get all archived Events

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/events/archived' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Retrieves all archived Events for the given Account.

GET https://api.tito.io/v3/:account_slug/events/archived

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": {
    "_type": "event",
    "id": 1058586,
    "created_at": "2018-11-01T11:55:45.000+00:00",
    "updated_at": "2018-11-01T11:55:45.000+00:00",
    "title": "2018",
    "description": null,
    "banner": {
      "url": null,
      "thumb": {
        "url": null
      }
    },
    "banner_url": "https://www.example.com",
    "currency": "USD",
    "default_locale": "en",
    "live": false,
    "test_mode": true,
    "locales": [
      "en"
    ],
    "location": null,
    "logo": {
      "url": null,
      "thumb": {
        "url": null
      },
      "display": {
        "url": null
      }
    },
    "private": false,
    "slug": "2018",
    "account_id": 410,
    "start_date": null,
    "end_date": null,
    "date_or_range": "",
    "security_token": null,
    "metadata": {},
    "url": "https://ti.to/biscuit-box/2018",
    "setup": true,
    "show_discount_code_field": false,
    "discount_codes_count": 0,
    "account_slug": "biscuit-box",
    "users_count": 1,
    "releases": []
  }
}

Retrieve an Event for the given Account.

GET https://api.tito.io/v3/:account_slug/:event_slug

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":"Awesome Conf"}}'
{
   "event":{
      "_type":"event",
      "id":1058592,
      "created_at":"2018-11-02T10:44:27.000+00:00",
      "updated_at":"2018-11-02T10:44:27.000+00:00",
      "title":"Awesome Conf",
      "description":null,
      "banner":{
         "url":null,
         "thumb":{
            "url":null
         }
      },
      "banner_url":"https://www.example.com/",
      "currency":"USD",
      "default_locale":"en",
      "live":false,
      "test_mode":true,
      "locales":[
         "en"
      ],
      "location":null,
      "logo":{
         "url":null,
         "thumb":{
            "url":null
         },
         "display":{
            "url":null
         }
      },
      "private":false,
      "slug":"awesome-conf",
      "account_id":410,
      "start_date":null,
      "end_date":null,
      "date_or_range":"",
      "security_token":null,
      "metadata":null,
      "url":"https://ti.to/biscuit-box/awesome-conf",
      "setup":true,
      "show_discount_code_field":false,
      "discount_codes_count":0,
      "account_slug":"biscuit-box",
      "users_count":1,
      "releases":[

      ]
   }
}

Create a new Event belonging to the given Account.

POST https://api.tito.io/v3/:account_slug/events

Parameters

Parameter Type Description
title Required string The name of the event
banner object
currency string 3 letter ISO 4217 currency code e.g. USD
default_locale string The default locale of the event
description markdown A statement or tag line describing the event
end_date date The date the event is going to end
live boolean Is it visible to the public or not.
locales Array A list of locales supported for this event
location string The location the event is taking place
logo object
metadata json JSON that will appear in API requests for integration with external systems
private boolean Is it to be listed on the event's account page or not.
slug string A human friendly string used in the Event URL
start_date date The date the event is going to start
test_mode boolean Is the event in test mode or not.

Update an Event

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"event":{"location":"Dublin, Ireland"}}'

Update an Event belonging to the given Account.

PATCH https://api.tito.io/v3/:account_slug/:event_slug

Delete an Event

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Delete an Event belonging to the given Account.

DELETE https://api.tito.io/v3/:account_slug/:event_slug

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
   }
}

Duplicate an existing Event belonging to the given Account.

POST https://api.tito.io/v3/:account_slug/:event_slug/duplication

As duplicating an Event happens asynchronously the Tito API provides a response indicating the current status of the duplication:

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"
   }
}

The latest status of the Event duplication.

GET https://api.tito.io/v3/:account_slug/:event_slug/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:

Once the duplication completes the Event slug and title will be assigned.

Questions

Attributes

Attribute Type Description
description string A statement or tag line describing the question
field_type string Checkboxes, Country, File, Select, Text or Textarea.
include_free_text_field boolean Should an 'Other' text field be included alongside this question or not. Only applies to Checkboxes or Select field questions. Default false
options text A line separated list of options for this question e.g. A\nB\nC. Only applies to Checkboxes or Select field questions.
options_free_text_field string A custom label for the 'Other' text field option if it's enabled. Only applies to Checkboxes or Select field questions.
required boolean Does this question require a response or not. Default false
slug Read only string A human friendly string used in the Question URL
title string The question you would like to ask.

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": 1041930,
      "title": "Do you have any dietary requirements?",
      "field_type": "Text",
      "include_free_text_field": false,
      "required": null,
      "slug": "dietary",
      "answers_count": 0,
      "created_at": "2018-11-06T13:12:17.000+00:00",
      "updated_at": "2018-11-06T14:55:32.000+00:00"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": []
    }
  }
}

Retrieves all Questions for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/questions

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": 1041930,
    "title": "Do you have any dietary requirements?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": null,
    "slug": "dietary",
    "answers_count": 0,
    "created_at": "2018-11-06T13:12:17.000+00:00",
    "updated_at": "2018-11-06T14:55:32.000+00:00"
  }
}

Retrieves a Question for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug

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":"What is your industry?","field_type":"Text"}}'
{
  "question": {
    "_type": "question",
    "id": 1041932,
    "title": "What is your industry?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": false,
    "slug": "what-is-your-industry-a6d40827-6423-4a60-bc1d-5e90cd02cae9",
    "answers_count": 0,
    "created_at": "2018-11-06T16:08:46.000+00:00",
    "updated_at": "2018-11-06T16:08:46.000+00:00"
  }
}

Create a new Question belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/questions

Parameters

Parameter Type Description
field_type Required string Checkboxes, Country, File, Select, Text or Textarea.
title Required string The question you would like to ask.
description string A statement or tag line describing the question
include_free_text_field boolean Should an 'Other' text field be included alongside this question or not. Only applies to Checkboxes or Select field questions. Default false
options text A line separated list of options for this question e.g. A\nB\nC. Only applies to Checkboxes or Select field questions.
options_free_text_field string A custom label for the 'Other' text field option if it's enabled. Only applies to Checkboxes or Select field questions.
required boolean Does this question require a response or not. Default false

Update a Question

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"question":{"required":true}}'
{
  "question": {
    "_type": "question",
    "id": 1041931,
    "title": "What is your industry?",
    "field_type": "Text",
    "include_free_text_field": false,
    "required": true,
    "slug": "what-is-your-industry",
    "answers_count": 0,
    "created_at": "2018-11-06T16:06:52.000+00:00",
    "updated_at": "2018-11-06T16:10:23.000+00:00"
  }
}

Update a Question belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug

Parameters

Parameter Type Description
field_type Required string Checkboxes, Country, File, Select, Text or Textarea.
title Required string The question you would like to ask.
description string A statement or tag line describing the question
include_free_text_field boolean Should an 'Other' text field be included alongside this question or not. Only applies to Checkboxes or Select field questions. Default false
options text A line separated list of options for this question e.g. A\nB\nC. Only applies to Checkboxes or Select field questions.
options_free_text_field string A custom label for the 'Other' text field option if it's enabled. Only applies to Checkboxes or Select field questions.
required boolean Does this question require a response or not. Default false

Delete a Question

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Delete a Question belonging to the given Event.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug

Refunds

Attributes

Attribute Type Description
amount Read only decimal The monetary amount of the refund.
created_at Read only datetime When the refund was recorded.
id Read only integer The identifer of the refund
manual Read only boolean true if it was logged in Tito after it was already processed. Default false
registration Read only object The Registration attached to the refund.

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": 123456,
      "amount": "100.0",
      "created_at": "2018-02-09T13:14:26.000+00:00",
      "manual": null,
      "registration": {
        ...
      }
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1,
    "per_page": 100,
    "overall_total": 1,
    "filter_options": {
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        }
      },
      "collection": false,
      "states": []
    }
  }
}

Retrieves all Refunds for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/refunds

Get a Refund

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/refunds/:refund_id' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "refund":{
    "_type": "refund",
    "id": 123456,
    "amount": "100.0",
    "created_at": "2018-02-09T13:14:26.000+00:00",
    "manual": null,
    "registration":{
      ...
    }
  }
}

Retrieves a Refund for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/refunds/:refund_id

Registrations

Attributes

Attribute Type Description
billing_address Read only object The address given for billing.
billing_address_attributes object A hash of billing address attributes used to update address, city, country, state_province_region, vat_number and zip_postal_code
company_name string The company name of the person who registered
completed_at Read only datetime The time at which the registration was completed and tickets were created for it.
consented_at Read only datetime The date the person consented to providing their information during registration.
created_at Read only datetime The date the registration was created. This is when the checkout process was started, not when payment was made.
discount_code Read only string The discount code used when registering.
email string The email address of the registration.
expires_at Read only datetime The time at which the registration will expire if it has not been completed. Only registrations containing tickets for locked releases can expire. A release is locked when all of its available tickets are in the process of being registered.
id Read only integer The identifer of the Registration
ip_address Read only string The IP address when the registration was created.
line_items Read only array A list of LineItems for this registration: release_id and quantity.
locale Read only string The locale of the registration.
metadata object Metadata about the registration.
name string The full name of the person who registered
notify boolean Set this to true to send emails to the person registering and the organisers (if they have chosen to receive notifications). Default is false (no emails).
paid Read only boolean Whether the registration is free (false) or paid (true). This doesn't indicate whether an registration paid by invoice is paid or not - see the receipt_paid attribute for that.
payment Read only object Payment information
payment_reference string The purchase order number of the registration.
phone_number string The phone number of the person who registered
quantities Read only object The number of Tickets for each Release that were registered.
receipt_paid Read only integer Whether the registration has been paid or not. False would indicate that either this is a free ticket or the customer has been invoiced but that they haven't paid yet.
receipts Read only array A list of Receipts for this registration.
reference Read only string A randomly generated 4 character string unique to the event.
refunded Read only boolean Whether the registration has been refunded.
refunds Read only array A list of Refunds for this registration.
registration_type Read only integer standard, manual or imported.
slug Read only string A human friendly string used in the URL
source string The Source Tracking code that the person registered under.
state Read only string It's new…
new
ready
filling
redirected

It's being processed…
ready_to_process
processing
payment_details_stored
payment_charged

It's finished…
complete
incomplete
cancelled
confirmed
customer_cancelled

Something went wrong…
errored
payment_declined
not_fulfilled
test_mode Read only boolean Default: true if test mode is enabled for you or for your entire event, otherwise false.
tickets Read only array A list of Tickets for this registration.
tickets_count Read only integer The number of tickets purchased when registering.
total decimal The gross monetary amount.
total_less_tax Read only decimal The net monetary amount.
updated_at Read only datetime The date the registration was last updated.

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": 3509397,
      "slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
      "billing_address": null,
      "created_at": "2018-11-12T13:35:44.000+00:00",
      "updated_at": "2018-11-12T13:35:44.000+00:00",
      "company_name": "",
      "completed_at": "2018-11-12T13:35:44.000+00:00",
      "discount_code": null,
      "email": "john@example.com",
      "expires_at": "2018-11-12 13:50:44 +0000",
      "ip_address": "127.0.0.1",
      "locale": "en",
      "metadata": {},
      "name": "John Smith",
      "payment_reference": null,
      "phone_number": "",
      "registration_type": "manual",
      "reference": "ZBRE",
      "source": null,
      "state": "complete",
      "test_mode": true,
      "total": "0.0",
      "consented_at": null,
      "paid": null,
      "payment": null,
      "refunded": false,
      "total_less_tax": "0.0",
      "tickets_count": 1,
      "quantities": {
        "coffee-brewing": {
          "release": "Coffee Brewing",
          "quantity": 1
        }
      },
      "receipts": [ ... ],
      "refunds": [ ... ],
      "tickets": [ ... ],
      "line_items": [ ... ]
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 3,
    "per_page": 100,
    "overall_total": 10,
    "resources_hidden_by_default_count": 0,
    "search_states_hidden_by_default": [
      "cancelled"
    ],
    "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"
      ]
    }
  }
}

Retrieves all Registrations for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/registrations

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:

Filtering

You can filter which registrations you get back too. For instance, to only get unpaid or incomplete registrations:

?search[states][]=unpaid&search[states][]=incomplete

Possible states are:

Or 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:

And you can do that on the following attributes

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.

Get a 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'
{
  "registration": {
    "_type": "registration",
    "id": 3509397,
    "slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
    "billing_address": null,
    "created_at": "2018-11-12T13:35:44.000+00:00",
    "updated_at": "2018-11-12T13:35:44.000+00:00",
    "company_name": "",
    "completed_at": "2018-11-12T13:35:44.000+00:00",
    "discount_code": null,
    "email": "john@example.com",
    "expires_at": "2018-11-12 13:50:44 +0000",
    "ip_address": "127.0.0.1",
    "locale": "en",
    "metadata": {},
    "name": "John Smith",
    "payment_reference": null,
    "phone_number": "",
    "registration_type": "manual",
    "reference": "ZBRE",
    "source": null,
    "state": "complete",
    "test_mode": true,
    "total": "0.0",
    "consented_at": null,
    "paid": null,
    "payment": null,
    "refunded": false,
    "total_less_tax": "0.0",
    "tickets_count": 1,
    "quantities": {
      "coffee-brewing": {
        "release": "Coffee Brewing",
        "quantity": 1
      }
    },
    "receipts": [ ... ],
    "refunds": [],
    "tickets": [ ... ],
    "line_items": [ ... ]
  }
}

Retrieves a Registration for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug

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":"jane@example.com","name":"John Smith","discount_code":"","source":"","line_items":[{"release_id":123,"quantity":1}]}}'
{
  "registration": {
    "_type": "registration",
    "id": 3509397,
    "slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
    "billing_address": null,
    "created_at": "2018-11-12T13:35:44.000+00:00",
    "updated_at": "2018-11-12T13:35:44.000+00:00",
    "company_name": "",
    "completed_at": "2018-11-12T13:35:44.000+00:00",
    "discount_code": null,
    "email": "john@example.com",
    "expires_at": "2018-11-12 13:50:44 +0000",
    "ip_address": "127.0.0.1",
    "locale": "en",
    "metadata": {},
    "name": "John Smith",
    "payment_reference": null,
    "phone_number": "",
    "registration_type": "manual",
    "reference": "ZBRE",
    "source": null,
    "state": "complete",
    "test_mode": true,
    "total": "0.0",
    "consented_at": null,
    "paid": null,
    "payment": null,
    "refunded": false,
    "total_less_tax": "0.0",
    "tickets_count": 1,
    "quantities": {
      "coffee-brewing": {
        "release": "Coffee Brewing",
        "quantity": 1
      }
    },
    "receipts": [ ... ],
    "refunds": [],
    "tickets": [ ... ],
    "line_items": [ ... ]
  }
}

Create a registration with one or more tickets.

POST https://api.tito.io/v3/:account_slug/:event_slug/registrations

Parameters

Parameter Type Description
discount_code string The discount code used when registering.
email string The email address of the registration.
line_items array A list of LineItems for this registration: release_id and quantity.
name string The full name of the person who registered
notify boolean Set this to true to send emails to the person registering and the organisers (if they have chosen to receive notifications). Default is false (no emails).
source string The Source Tracking code that the person registered under.

Update a Registration

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"registration":{"email":"john@example.com"}}'
  {
    "email":"john@example.com",
    "metadata":null,
    "name":"John Smith",
    "payment_reference":null,
    "phone_number":"",
    "source":"",
    "registration":{
      "event_id":1058586,
      "id":3509397,
      "name":"John Smith",
      "email":"john@example.com",
      "slug":"reg_test_ds7qNqJ4s4doDMeh1VogTrw",
      "created_at":"2018-11-12T13:35:44.000+00:00",
      "updated_at":"2018-11-19T14:28:11.000+00:00",
      "discount_code":null,
      "user_id":null,
      "ip_address":"127.0.0.1",
      "payment_option_id":null,
      "expires_at":"2018-11-12T13:50:44.000+00:00",
      "reference":"ZBRE",
      "payment_reference":null,
      "cached_total":"0.0",
      "processing_job_id":null,
      "completed_at":"2018-11-12T13:35:44.000+00:00",
      "state":"complete",
      "registration_type":"manual",
      "billing_address_id":null,
      "company_name":null,
      "source":"",
      "receipt_paid":true,
      "payment_option_name":null,
      "locale":"en",
      "phone_number":"",
      "metadata":null,
      "prefill_id":null,
      "test_mode":true,
      "consented_at":null,
      "data_security_consent_id":null,
      "data_security_terms_and_condition_id":null
    },
    "total":"0.0",
    "update_receipt":true,
    "billing_address_attributes":{

    },
    "receipt_lines_attributes":[

    ]
  }

Update a Registration belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug

Parameters

Parameter Type Description
billing_address_attributes object A hash of billing address attributes used to update address, city, country, state_province_region, vat_number and zip_postal_code
company_name string The company name of the person who registered
email string The email address of the registration.
metadata object Metadata about the registration.
name string The full name of the person who registered
payment_reference string The purchase order number of the registration.
phone_number string The phone number of the person who registered
source string The Source Tracking code that the person registered under.
total decimal The gross monetary amount.

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' \
  {
    "email":"john@example.com",
    "metadata":null,
    "name":"John Smith",
    "payment_reference":null,
    "phone_number":"",
    "source":"",
    "registration":{
      "event_id":1058586,
      "id":3509397,
      "name":"John Smith",
      "email":"john@example.com",
      "slug":"reg_test_ds7qNqJ4s4doDMeh1VogTrw",
      "created_at":"2018-11-12T13:35:44.000+00:00",
      "updated_at":"2018-11-19T14:28:11.000+00:00",
      "discount_code":null,
      "user_id":null,
      "ip_address":"127.0.0.1",
      "payment_option_id":null,
      "expires_at":"2018-11-12T13:50:44.000+00:00",
      "reference":"ZBRE",
      "payment_reference":null,
      "cached_total":"0.0",
      "processing_job_id":null,
      "completed_at":"2018-11-12T13:35:44.000+00:00",
      "state":"complete",
      "registration_type":"manual",
      "billing_address_id":null,
      "company_name":null,
      "source":"",
      "receipt_paid":true,
      "payment_option_name":null,
      "locale":"en",
      "phone_number":"",
      "metadata":null,
      "prefill_id":null,
      "test_mode":true,
      "consented_at":null,
      "data_security_consent_id":null,
      "data_security_terms_and_condition_id":null
    },
    "total":"0.0",
    "update_receipt":true,
    "billing_address_attributes":{

    },
    "receipt_lines_attributes":[

    ]
  }

Pay by Invoice is a beta feature. Contact us to get it enabled.

Show that a Registration has been paid. Useful if you are allowing your customers to pay by invoice.

POST https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations

Changes the receipt_paid attribute to true.

Mark a Registration as Unpaid

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' \
  {
    "email":"john@example.com",
    "metadata":null,
    "name":"John Smith",
    "payment_reference":null,
    "phone_number":"",
    "source":"",
    "registration":{
      "event_id":1058586,
      "id":3509397,
      "name":"John Smith",
      "email":"john@example.com",
      "slug":"reg_test_ds7qNqJ4s4doDMeh1VogTrw",
      "created_at":"2018-11-12T13:35:44.000+00:00",
      "updated_at":"2018-11-19T14:28:11.000+00:00",
      "discount_code":null,
      "user_id":null,
      "ip_address":"127.0.0.1",
      "payment_option_id":null,
      "expires_at":"2018-11-12T13:50:44.000+00:00",
      "reference":"ZBRE",
      "payment_reference":null,
      "cached_total":"0.0",
      "processing_job_id":null,
      "completed_at":"2018-11-12T13:35:44.000+00:00",
      "state":"complete",
      "registration_type":"manual",
      "billing_address_id":null,
      "company_name":null,
      "source":"",
      "receipt_paid":false,
      "payment_option_name":null,
      "locale":"en",
      "phone_number":"",
      "metadata":null,
      "prefill_id":null,
      "test_mode":true,
      "consented_at":null,
      "data_security_consent_id":null,
      "data_security_terms_and_condition_id":null
    },
    "total":"0.0",
    "update_receipt":true,
    "billing_address_attributes":{

    },
    "receipt_lines_attributes":[

    ]
  }

Pay by Invoice is a beta feature. Contact us to get it enabled.

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.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations

Changes the receipt_paid attribute to false.

Releases

Attributes

Attribute Type Description
activities Read only array A list of activities associated with this Release.
allocatable Read only boolean Whether there is still sufficient quantity to be sold.
archived Read only boolean Is the release archived or not. Default: false
card_payments boolean Whether to allow customers to pay by card.
combo_releases Read only array A list of combo releases.
created_at Read only datetime The date the release was created.
default_quantity integer The default number of tickets selected for this release on the event page. Default: 0
description text A statement or tag line describing the event
discounted_tickets_count Read only integer The number of discounted tickets.
donation Read only boolean
enable_super_combo_summary boolean For combo releases only. Include a summary of a combo in the order summary or not. Default: true
end_at datetime The time when the release will go off sale.
expired Read only boolean Whether the release is no longer on sale as the end_at has passed.
free_tickets_count Read only integer The number of free tickets.
full_price_tickets_count Read only integer The number of full price tickets.
gross_income Read only decimal The gross income for this release.
has_fail_message Read only boolean
has_success_message Read only boolean Display the custom success message or not. Default: false
id Read only integer The identifier of the release.
invoice boolean Allow customers to pay by requesting an invoice rather than using a card. Customers will be able to request to pay-by-invoice when purchasing this ticket.
lock_changes boolean Whether attendees can make changes to their tickets.
locked Read only boolean Whether the release is locked.
max_donation decimal
max_tickets_per_person integer The maximum number of tickets per registration.
metadata object Metadata about the release.
min_donation decimal The minimum monetary amount that can be donated when purchasing this release.
min_tickets_per_person integer The minimum number of tickets per registration.
not_a_ticket boolean Disable issuing of PDF/Apple Wallet tickets or not. For example if this release is for merchandise rather than an actual ticket. Default false
off_sale Read only boolean Whether the release is on sale or not.
payment_type Read only string The type of pricing for this releases e.g. free, paid, donation and degressive.
position Read only integer The position of the release in the list of all releases for the event.
price decimal The monetary amount the release should be sold for.
price_degressive string The degressive pricing structure e.g. 100, 75, 25
price_ex_tax Read only decimal The net price of the release.
quantity integer The number of tickets available.
quantity_sold Read only integer The number of tickets registered.
question_ids array An array of the IDs of Questions attached to the release. The order of the IDs represents the order in which the questions will be asked.
questions Read only array A list of questions that ticketholders should be asked.
request_company_name boolean Do registrations which include this release require a company name.
request_vat_number boolean Do registrations which include this release require a VAT number.
require_billing_address boolean Do registrations which include this release require a billing address.
require_company_name boolean
require_credit_card_for_sold_out_waiting_list boolean
require_email boolean Do tickets for this release require an email. Default: true
require_name boolean Do tickets for this release require a name. Default: false
require_vat_number boolean
secret boolean Is it only accessible via a secret link or is it visible to everyone on the event page. Default: false
share_url Read only string A sharable URL of a direct link to purchasing this release.
show_company_name Read only boolean
show_discount_code_field_here Read only boolean
show_phone_number Read only boolean
show_price boolean Whether to show the price on the event homepage.
show_vat_number Read only boolean
slug Read only string A human friendly string used in the URL.
sold_out Read only boolean Whether the release is sold out.
start_at datetime The time when the release will go on sale.
state integer 100 : On sale
404 : Off sale. Default: 100
state_name Read only string
success_message text A custom message to be displayed to customers after a successful order of this release.
suggested_donation decimal The suggested monetary amount that can be donated when purchasing this release.
tax_components Read only array A list of tax components that apply to this release.
tax_description Read only string A formatted description of the tax for this release.
tax_exclusive Read only boolean Whether the price is exclusive of tax.
tax_types Read only array A list of tax types that apply to this release.
termset Read only object The Termset that needs to be consented to for this release.
termset_id integer The identifier of the Termset that is associated with this release.
ticket_group Read only object Similar types of releases can be grouped together with a TicketGroup
ticket_group_id integer The identifier of the TicketGroup that is associated with this release.
tickets_count Read only integer The number of tickets sold for this release.
title string The name of the release.
translations object The values of translated attributes.
upcoming Read only boolean Whether the release is not on sale yet as the start_at has not passed.
updated_at Read only datetime The date the release was last updated.
voided_tickets_count Read only integer The number of voided tickets.
waiting_list Read only boolean Whether there is a waiting list.
waiting_list_enabled_during_locked boolean
waiting_list_enabled_during_sold_out boolean Enable waiting list when this release sells out or not. Default: false

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": 1105525,
      "created_at": "2018-11-08T22:40:45.000+00:00",
      "updated_at": "2018-11-09T09:57:08.000+00:00",
      "slug": "coffee-brewing",
      "title": "Coffee Brewing",
      "description": null,
      "archived": false,
      "card_payments": true,
      "default_quantity": null,
      "donation": false,
      "enable_super_combo_summary": true,
      "end_at": null,
      "has_success_message": false,
      "has_fail_message": false,
      "invoice": null,
      "max_donation": null,
      "max_tickets_per_person": null,
      "metadata": {},
      "min_tickets_per_person": null,
      "min_donation": null,
      "not_a_ticket": false,
      "payment_type": "paid",
      "position": 0,
      "price": "100.0",
      "price_ex_tax": "100.0",
      "tax_exclusive": false,
      "price_degressive": null,
      "quantity": null,
      "request_company_name": false,
      "request_vat_number": true,
      "require_vat_number": false,
      "require_billing_address": null,
      "require_credit_card_for_sold_out_waiting_list": false,
      "require_email": false,
      "require_name": false,
      "secret": false,
      "show_price": null,
      "suggested_donation": "100.0",
      "lock_changes": false,
      "state_name": null,
      "start_at": null,
      "waiting_list_enabled_during_locked": false,
      "waiting_list_enabled_during_sold_out": false,
      "share_url": "https://ti.to/biscuit-box/2018/with/coffee-brewing",
      "tickets_count": 0,
      "locked": false,
      "waiting_list": false,
      "sold_out": false,
      "off_sale": false,
      "expired": false,
      "upcoming": false,
      "allocatable": true,
      "question_ids": [],
      "gross_income": null,
      "full_price_tickets_count": 0,
      "free_tickets_count": 0,
      "discounted_tickets_count": 0,
      "voided_tickets_count": 0,
      "show_company_name": false,
      "require_company_name": false,
      "show_vat_number": true,
      "show_discount_code_field_here": false,
      "show_phone_number": false,
      "tax_description": null,
      "translations": {
        "en": {
          "description": "",
          "fail_message": null,
          "success_message": "",
          "title": "Coffee Brewing"
        }
      },
      "termset_id": null,
      "ticket_group_id": null,
      "activities": [],
      "combo_releases": [],
      "questions": [],
      "tax_types": [],
      "tax_components": [],
      "termset": null,
      "ticket_group": null
    }
  ],
  "meta": {
    "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": [
      "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"
      ]
    }
  }
}```

Retrieves all Releases for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/releases

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": 1105525,
    "created_at": "2018-11-08T22:40:45.000+00:00",
    "updated_at": "2018-11-09T09:57:08.000+00:00",
    "slug": "coffee-brewing",
    "title": "Coffee Brewing",
    "description": null,
    "archived": false,
    "card_payments": true,
    "default_quantity": null,
    "donation": false,
    "enable_super_combo_summary": true,
    "end_at": null,
    "has_success_message": false,
    "has_fail_message": false,
    "invoice": null,
    "max_donation": null,
    "max_tickets_per_person": null,
    "metadata": {},
    "min_tickets_per_person": null,
    "min_donation": null,
    "not_a_ticket": false,
    "payment_type": "paid",
    "position": 0,
    "price": "100.0",
    "price_ex_tax": "100.0",
    "tax_exclusive": false,
    "price_degressive": null,
    "quantity": null,
    "request_company_name": false,
    "request_vat_number": true,
    "require_vat_number": false,
    "require_billing_address": null,
    "require_credit_card_for_sold_out_waiting_list": false,
    "require_email": false,
    "require_name": false,
    "secret": false,
    "show_price": null,
    "suggested_donation": "100.0",
    "lock_changes": false,
    "state_name": null,
    "start_at": null,
    "waiting_list_enabled_during_locked": false,
    "waiting_list_enabled_during_sold_out": false,
    "share_url": "https://ti.to/biscuit-box/2018/with/coffee-brewing",
    "tickets_count": 0,
    "locked": false,
    "waiting_list": false,
    "sold_out": false,
    "off_sale": false,
    "expired": false,
    "upcoming": false,
    "allocatable": true,
    "question_ids": [],
    "gross_income": null,
    "full_price_tickets_count": 0,
    "free_tickets_count": 0,
    "discounted_tickets_count": 0,
    "voided_tickets_count": 0,
    "show_company_name": false,
    "require_company_name": false,
    "show_vat_number": true,
    "show_discount_code_field_here": false,
    "show_phone_number": false,
    "tax_description": null,
    "translations": {
      "en": {
        "description": "",
        "fail_message": null,
        "success_message": "",
        "title": "Coffee Brewing"
      }
    },
    "termset_id": null,
    "ticket_group_id": null,
    "activities": [],
    "combo_releases": [],
    "questions": [],
    "tax_types": [],
    "tax_components": [],
    "termset": null,
    "ticket_group": null
  }
}

Retrieves a Release for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug

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":"Tea Brewing"}}'
{
  "release": {
    "_type": "release",
    "id": 1105528,
    "created_at": "2018-11-09T15:02:31.000+00:00",
    "updated_at": "2018-11-09T15:02:31.000+00:00",
    "slug": "tea-brewing",
    "title": "Tea Brewing",
    "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": {},
    "min_tickets_per_person": null,
    "min_donation": null,
    "not_a_ticket": false,
    "payment_type": "free",
    "position": 0,
    "price": null,
    "price_ex_tax": "0.0",
    "tax_exclusive": false,
    "price_degressive": null,
    "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": null,
    "start_at": null,
    "waiting_list_enabled_during_locked": false,
    "waiting_list_enabled_during_sold_out": false,
    "share_url": "https://ti.to/biscuit-box/2018/with/tea-brewing",
    "tickets_count": 0,
    "locked": false,
    "waiting_list": false,
    "sold_out": false,
    "off_sale": true,
    "expired": false,
    "upcoming": false,
    "allocatable": false,
    "question_ids": [],
    "gross_income": null,
    "full_price_tickets_count": 0,
    "free_tickets_count": 0,
    "discounted_tickets_count": 0,
    "voided_tickets_count": 0,
    "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,
    "translations": {
      "en": {
        "description": null,
        "fail_message": null,
        "success_message": null,
        "title": "Tea Brewing"
      }
    },
    "termset_id": null,
    "ticket_group_id": null,
    "activities": [],
    "combo_releases": [],
    "questions": [],
    "tax_types": [],
    "tax_components": [],
    "termset": null,
    "ticket_group": null
  }
}

Create a new Release belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/releases

Parameters

Parameter Type Description
title Required string The name of the release.
card_payments boolean Whether to allow customers to pay by card.
default_quantity integer The default number of tickets selected for this release on the event page. Default: 0
description text A statement or tag line describing the event
enable_super_combo_summary boolean For combo releases only. Include a summary of a combo in the order summary or not. Default: true
end_at datetime The time when the release will go off sale.
invoice boolean Allow customers to pay by requesting an invoice rather than using a card. Customers will be able to request to pay-by-invoice when purchasing this ticket.
lock_changes boolean Whether attendees can make changes to their tickets.
max_donation decimal
max_tickets_per_person integer The maximum number of tickets per registration.
metadata object Metadata about the release.
min_donation decimal The minimum monetary amount that can be donated when purchasing this release.
min_tickets_per_person integer The minimum number of tickets per registration.
not_a_ticket boolean Disable issuing of PDF/Apple Wallet tickets or not. For example if this release is for merchandise rather than an actual ticket. Default false
price decimal The monetary amount the release should be sold for.
price_degressive string The degressive pricing structure e.g. 100, 75, 25
quantity integer The number of tickets available.
question_ids array An array of the IDs of Questions attached to the release. The order of the IDs represents the order in which the questions will be asked.
request_company_name boolean Do registrations which include this release require a company name.
request_vat_number boolean Do registrations which include this release require a VAT number.
require_billing_address boolean Do registrations which include this release require a billing address.
require_company_name boolean
require_credit_card_for_sold_out_waiting_list boolean
require_email boolean Do tickets for this release require an email. Default: true
require_name boolean Do tickets for this release require a name. Default: false
require_vat_number boolean
secret boolean Is it only accessible via a secret link or is it visible to everyone on the event page. Default: false
show_price boolean Whether to show the price on the event homepage.
start_at datetime The time when the release will go on sale.
state integer 100 : On sale
404 : Off sale. Default: 100
success_message text A custom message to be displayed to customers after a successful order of this release.
suggested_donation decimal The suggested monetary amount that can be donated when purchasing this release.
termset_id integer The identifier of the Termset that is associated with this release.
ticket_group_id integer The identifier of the TicketGroup that is associated with this release.
translations object The values of translated attributes.
waiting_list_enabled_during_locked boolean
waiting_list_enabled_during_sold_out boolean Enable waiting list when this release sells out or not. Default: false

Update a Release

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"release":{"quantity":20}}'
{
  "release": {
    "_type": "release",
    "id": 1105525,
    "created_at": "2018-11-08T22:40:45.000+00:00",
    "updated_at": "2018-11-09T15:05:40.000+00:00",
    "slug": "coffee-brewing",
    "title": "Coffee Brewing",
    "description": null,
    "archived": false,
    "card_payments": true,
    "default_quantity": null,
    "donation": false,
    "enable_super_combo_summary": true,
    "end_at": null,
    "has_success_message": false,
    "has_fail_message": false,
    "invoice": null,
    "max_donation": null,
    "max_tickets_per_person": null,
    "metadata": {},
    "min_tickets_per_person": null,
    "min_donation": null,
    "not_a_ticket": false,
    "payment_type": "paid",
    "position": 0,
    "price": "100.0",
    "price_ex_tax": "100.0",
    "tax_exclusive": false,
    "price_degressive": null,
    "quantity": 20,
    "request_company_name": false,
    "request_vat_number": true,
    "require_vat_number": false,
    "require_billing_address": null,
    "require_credit_card_for_sold_out_waiting_list": false,
    "require_email": false,
    "require_name": false,
    "secret": false,
    "show_price": null,
    "suggested_donation": "100.0",
    "lock_changes": false,
    "state_name": null,
    "start_at": null,
    "waiting_list_enabled_during_locked": false,
    "waiting_list_enabled_during_sold_out": false,
    "share_url": "https://ti.to/biscuit-box/2018/with/coffee-brewing",
    "tickets_count": 0,
    "locked": false,
    "waiting_list": false,
    "sold_out": false,
    "off_sale": false,
    "expired": false,
    "upcoming": false,
    "allocatable": true,
    "question_ids": [],
    "gross_income": null,
    "full_price_tickets_count": 0,
    "free_tickets_count": 0,
    "discounted_tickets_count": 0,
    "voided_tickets_count": 0,
    "show_company_name": false,
    "require_company_name": false,
    "show_vat_number": true,
    "show_discount_code_field_here": false,
    "show_phone_number": false,
    "tax_description": null,
    "translations": {
      "en": {
        "description": "",
        "fail_message": null,
        "success_message": "",
        "title": "Coffee Brewing"
      }
    },
    "termset_id": null,
    "ticket_group_id": null,
    "activities": [],
    "combo_releases": [],
    "questions": [],
    "tax_types": [],
    "tax_components": [],
    "termset": null,
    "ticket_group": null
  }
}

Update a Release belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug

Parameters

Parameter Type Description
title Required string The name of the release.
card_payments boolean Whether to allow customers to pay by card.
default_quantity integer The default number of tickets selected for this release on the event page. Default: 0
description text A statement or tag line describing the event
enable_super_combo_summary boolean For combo releases only. Include a summary of a combo in the order summary or not. Default: true
end_at datetime The time when the release will go off sale.
invoice boolean Allow customers to pay by requesting an invoice rather than using a card. Customers will be able to request to pay-by-invoice when purchasing this ticket.
lock_changes boolean Whether attendees can make changes to their tickets.
max_donation decimal
max_tickets_per_person integer The maximum number of tickets per registration.
metadata object Metadata about the release.
min_donation decimal The minimum monetary amount that can be donated when purchasing this release.
min_tickets_per_person integer The minimum number of tickets per registration.
not_a_ticket boolean Disable issuing of PDF/Apple Wallet tickets or not. For example if this release is for merchandise rather than an actual ticket. Default false
price decimal The monetary amount the release should be sold for.
price_degressive string The degressive pricing structure e.g. 100, 75, 25
quantity integer The number of tickets available.
question_ids array An array of the IDs of Questions attached to the release. The order of the IDs represents the order in which the questions will be asked.
request_company_name boolean Do registrations which include this release require a company name.
request_vat_number boolean Do registrations which include this release require a VAT number.
require_billing_address boolean Do registrations which include this release require a billing address.
require_company_name boolean
require_credit_card_for_sold_out_waiting_list boolean
require_email boolean Do tickets for this release require an email. Default: true
require_name boolean Do tickets for this release require a name. Default: false
require_vat_number boolean
secret boolean Is it only accessible via a secret link or is it visible to everyone on the event page. Default: false
show_price boolean Whether to show the price on the event homepage.
start_at datetime The time when the release will go on sale.
state integer 100 : On sale
404 : Off sale. Default: 100
success_message text A custom message to be displayed to customers after a successful order of this release.
suggested_donation decimal The suggested monetary amount that can be donated when purchasing this release.
termset_id integer The identifier of the Termset that is associated with this release.
ticket_group_id integer The identifier of the TicketGroup that is associated with this release.
translations object The values of translated attributes.
waiting_list_enabled_during_locked boolean
waiting_list_enabled_during_sold_out boolean Enable waiting list when this release sells out or not. Default: false

Delete a Release

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Delete a Release belonging to the given Event.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug

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' \

Archive a Release belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival

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'

Unarchive a Release belonging to the given Event.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival

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' \

Duplicate a Release belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/duplication

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 '{}'

Put a Release belonging to the given Event on sale.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/activation

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 '{}'

Pause the sale of a Release belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/deactivation

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' \

Make an on sale Release publicily available for purchase on your event page.

POST https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication

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'

Make an on sale Release secret. A secret Release won't appear on your event page and can only be purchased through the sharable URL.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication

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

Attribute Type Description
created_at Read only datetime The date the list was created.
id Read only integer The identifer of the RSVP List
slug Read only string A human friendly string used in the URL.
title string a title for this list
updated_at Read only datetime The date the list was last updated.

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": 123,
      "slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
      "created_at": "2019-01-01T09:00:00.000+00:00",
      "updated_at": "2019-01-01T09:00:00.000+00:00",
      "title": "Introduction"
    }
  ],
  "meta": {
    "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": []
    }
  }
}

Retrieves all RSVP Lists for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists

Get an RSVP List

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "rsvp_list": {
    "_type": "rsvp_list",
    "id": 123,
    "slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
    "created_at": "2019-01-01T09:00:00.000+00:00",
    "updated_at": "2019-01-01T09:00:00.000+00:00",
    "title": "Introduction"
  }
}

Retrieves an RSVP List for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug

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":"Introduction"}}'
{
  "rsvp_list": {
    "_type": "rsvp_list",
    "id": 123,
    "slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
    "created_at": "2019-01-01T09:00:00.000+00:00",
    "updated_at": "2019-01-01T09:00:00.000+00:00",
    "title": "Introduction"
  }
}

Create a new RSVP List belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists

Parameters

Parameter Type Description
title Required string a title for this list

Update an RSVP List

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"rsvp_list":{"title":"New Introduction"}}'
{
  "rsvp_list": {
    "_type": "rsvp_list",
    "id": 123,
    "slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
    "created_at": "2019-01-01T09:00:00.000+00:00",
    "updated_at": "2019-01-01T09:00:00.000+00:00",
    "title": "New Introduction"
  }
}

Update an RSVP List belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug

Parameters

Parameter Type Description
title Required string a title for this list

Delete an RSVP List

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Delete an RSVP List belonging to the given Event.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug

RSVP Release Invitations

RSVP is a beta feature. Contact us to get it enabled.

An RSVP Release Invitation belongs to an RSVP List

Attributes

Attribute Type Description
created_at Read only datetime The date this invitation was created.
discount_code string Auto-apply this discount code when the invitee orders the ticket (optional)
email email The email of the person invited
expires_at datetime When this invitation should expire (optional)
first_name string The first name of the person invited (optional)
last_name string The last name of the person invited (optional)
redirect boolean What 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 to false.
release_ids array An array of IDs representing the releases that are offered
slug Read only string A human friendly string used in the URL.
updated_at Read only datetime The date this invitation was last updated.

Get all RSVP Release Invitations

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": 123,
      "slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
      "first_name": "Tony",
      "last_name": "Tiger",
      "email": "grr@tito.io",
      "name": "Tony Tiger",
      "unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dsC6YWbMou0lABn4sZegEOA",
      "status": null,
      "redeemed": false,
      "registration_id": null,
      "registration_slug": null,
      "registration_url": null,
      "registration_reference": null,
      "releases": [
        {
          "id": 123,
          "title": "Coffee Brewing",
          "slug": "coffee-brewing"
        }
      ]
    }
  ]
}

Retrieves all RSVP Lists for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations

Get an RSVP Release Invitation

curl --request GET \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'
{
  "release_invitation": {
    "_type": "release_invitation",
    "id": 123,
    "first_name": "Tony",
    "last_name": "Tiger",
    "email": "grr@tito.io",
    "release_id": null,
    "registration_id": null,
    "slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
    "created_at": "2019-01-01T09:00:00.000+00:00",
    "updated_at": "2019-01-01T09:00:00.000+00:00",
    "event_id": 123,
    "importer_id": null,
    "expires_at": null,
    "rsvp_list_id": 123,
    "redirect": null,
    "discount_code": "",
    "auto": null,
    "guest": null,
    "status": null,
    "message_delivery_id": null,
    "name": "Tony Tiger",
    "unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dWyIx6CdyH9130Uj254k42Q",
    "redeemed": false,
    "registration_slug": null,
    "registration_url": null,
    "releases": [
      {
        "_type": "release",
        "id": 123,
        "event_id": 123,
        "created_at": "2019-01-01T09:00:00.000+00:00",
        "updated_at": "2019-01-01T09:00:00.000+00:00",
        "slug": "coffee-brewing",
        "title": "Coffee Brewing",
        "description": null,
        "archived": false,
        "card_payments": true,
        "default_quantity": null,
        "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,
        "payment_type": "free",
        "position": 0,
        "price": null,
        "price_ex_tax": "0.0",
        "tax_exclusive": false,
        "price_degressive": null,
        "quantity": null,
        "request_company_name": false,
        "request_vat_number": false,
        "require_vat_number": false,
        "require_billing_address": null,
        "require_credit_card_for_sold_out_waiting_list": false,
        "require_email": false,
        "require_name": false,
        "secret": false,
        "show_price": true,
        "suggested_donation": null,
        "lock_changes": false,
        "state_name": null,
        "start_at": null,
        "waiting_list_enabled_during_locked": false,
        "waiting_list_enabled_during_sold_out": false,
        "share_url": "https://ti.to/biscuit-box/2018/with/5k-stretch",
        "tickets_count": 1,
        "locked": false,
        "waiting_list": false,
        "sold_out": false,
        "off_sale": false,
        "expired": false,
        "upcoming": false,
        "allocatable": true,
        "question_ids": [],
        "gross_income": null,
        "full_price_tickets_count": 0,
        "free_tickets_count": 1,
        "discounted_tickets_count": 0,
        "voided_tickets_count": 0,
        "show_company_name": false,
        "require_company_name": false,
        "show_vat_number": false,
        "show_discount_code_field_here": false,
        "show_phone_number": false,
        "tax_description": null,
        "translations": {
          "en": {
            "description": "",
            "fail_message": null,
            "success_message": "",
            "title": "Coffee Brewing"
          }
        },
        "termset_id": null,
        "ticket_group_id": null
      }
    ]
  }
}

Retrieves a Release Invitation for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug

Create an RSVP Release Invitation

curl --request POST \
  --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' \
  --header 'Content-Type: application/json' \
  --data '{"release_invitation":{"email":"grr@tito.io","first_name":"Tony","last_name":"Tiger","release_ids":[1,2,3]}}'
{
  "release_invitation": {
    "_type": "release_invitation",
    "id": 123,
    "first_name": "Tony",
    "last_name": "Tiger",
    "email": "grr@tito.io",
    "release_id": null,
    "registration_id": null,
    "slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
    "created_at": "2019-01-01T09:00:00.000+00:00",
    "updated_at": "2019-01-01T09:00:00.000+00:00",
    "event_id": 123,
    "importer_id": null,
    "expires_at": null,
    "rsvp_list_id": 123,
    "redirect": null,
    "discount_code": "",
    "auto": null,
    "guest": null,
    "status": null,
    "message_delivery_id": null,
    "name": "Tony Tiger",
    "unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dWyIx6CdyH9130Uj254k42Q",
    "redeemed": false,
    "registration_slug": null,
    "registration_url": null,
    "releases": [
      {
        "_type": "release",
        "id": 123,
        "event_id": 123,
        "created_at": "2019-01-01T09:00:00.000+00:00",
        "updated_at": "2019-01-01T09:00:00.000+00:00",
        "slug": "coffee-brewing",
        "title": "Coffee Brewing",
        "description": null,
        "archived": false,
        "card_payments": true,
        "default_quantity": null,
        "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,
        "payment_type": "free",
        "position": 0,
        "price": null,
        "price_ex_tax": "0.0",
        "tax_exclusive": false,
        "price_degressive": null,
        "quantity": null,
        "request_company_name": false,
        "request_vat_number": false,
        "require_vat_number": false,
        "require_billing_address": null,
        "require_credit_card_for_sold_out_waiting_list": false,
        "require_email": false,
        "require_name": false,
        "secret": false,
        "show_price": true,
        "suggested_donation": null,
        "lock_changes": false,
        "state_name": null,
        "start_at": null,
        "waiting_list_enabled_during_locked": false,
        "waiting_list_enabled_during_sold_out": false,
        "share_url": "https://ti.to/biscuit-box/2018/with/5k-stretch",
        "tickets_count": 1,
        "locked": false,
        "waiting_list": false,
        "sold_out": false,
        "off_sale": false,
        "expired": false,
        "upcoming": false,
        "allocatable": true,
        "question_ids": [],
        "gross_income": null,
        "full_price_tickets_count": 0,
        "free_tickets_count": 1,
        "discounted_tickets_count": 0,
        "voided_tickets_count": 0,
        "show_company_name": false,
        "require_company_name": false,
        "show_vat_number": false,
        "show_discount_code_field_here": false,
        "show_phone_number": false,
        "tax_description": null,
        "translations": {
          "en": {
            "description": "",
            "fail_message": null,
            "success_message": "",
            "title": "Coffee Brewing"
          }
        },
        "termset_id": null,
        "ticket_group_id": null
      }
    ]
  }
}

Create a new RSVP List belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists

Parameters

Parameter Type Description
email Required email The email of the person invited
release_ids Required array An array of IDs representing the releases that are offered
discount_code string Auto-apply this discount code when the invitee orders the ticket (optional)
expires_at datetime When this invitation should expire (optional)
first_name string The first name of the person invited (optional)
last_name string The last name of the person invited (optional)
redirect boolean What 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 to false.

Update an RSVP Release Invitation

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"release_invitation":{"first_name":"Anthony"}}'
{
  "release_invitation": {
    "_type": "release_invitation",
    "id": 123,
    "first_name": "Tony",
    "last_name": "Tiger",
    "email": "grr@tito.io",
    "release_id": null,
    "registration_id": null,
    "slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
    "created_at": "2019-01-01T09:00:00.000+00:00",
    "updated_at": "2019-01-01T09:00:00.000+00:00",
    "event_id": 123,
    "importer_id": null,
    "expires_at": null,
    "rsvp_list_id": 123,
    "redirect": null,
    "discount_code": "",
    "auto": null,
    "guest": null,
    "status": null,
    "message_delivery_id": null,
    "name": "Tony Tiger",
    "unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dWyIx6CdyH9130Uj254k42Q",
    "redeemed": false,
    "registration_slug": null,
    "registration_url": null,
    "releases": [
      {
        "_type": "release",
        "id": 123,
        "event_id": 123,
        "created_at": "2019-01-01T09:00:00.000+00:00",
        "updated_at": "2019-01-01T09:00:00.000+00:00",
        "slug": "coffee-brewing",
        "title": "Coffee Brewing",
        "description": null,
        "archived": false,
        "card_payments": true,
        "default_quantity": null,
        "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,
        "payment_type": "free",
        "position": 0,
        "price": null,
        "price_ex_tax": "0.0",
        "tax_exclusive": false,
        "price_degressive": null,
        "quantity": null,
        "request_company_name": false,
        "request_vat_number": false,
        "require_vat_number": false,
        "require_billing_address": null,
        "require_credit_card_for_sold_out_waiting_list": false,
        "require_email": false,
        "require_name": false,
        "secret": false,
        "show_price": true,
        "suggested_donation": null,
        "lock_changes": false,
        "state_name": null,
        "start_at": null,
        "waiting_list_enabled_during_locked": false,
        "waiting_list_enabled_during_sold_out": false,
        "share_url": "https://ti.to/biscuit-box/2018/with/5k-stretch",
        "tickets_count": 1,
        "locked": false,
        "waiting_list": false,
        "sold_out": false,
        "off_sale": false,
        "expired": false,
        "upcoming": false,
        "allocatable": true,
        "question_ids": [],
        "gross_income": null,
        "full_price_tickets_count": 0,
        "free_tickets_count": 1,
        "discounted_tickets_count": 0,
        "voided_tickets_count": 0,
        "show_company_name": false,
        "require_company_name": false,
        "show_vat_number": false,
        "show_discount_code_field_here": false,
        "show_phone_number": false,
        "tax_description": null,
        "translations": {
          "en": {
            "description": "",
            "fail_message": null,
            "success_message": "",
            "title": "Coffee Brewing"
          }
        },
        "termset_id": null,
        "ticket_group_id": null
      }
    ]
  }
}

Update an Release Invitation belonging to the given RSVP List.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug

Parameters

Parameter Type Description
email Required email The email of the person invited
release_ids Required array An array of IDs representing the releases that are offered
discount_code string Auto-apply this discount code when the invitee orders the ticket (optional)
expires_at datetime When this invitation should expire (optional)
first_name string The first name of the person invited (optional)
last_name string The last name of the person invited (optional)
redirect boolean What 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 to false.

Delete an RSVP Release Invitation

curl --request DELETE \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json'

Delete an RSVP Release Invitation belonging to the given RSVP List.

DELETE https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug

Tickets

Attributes

Attribute Type Description
answers array An array of Answers to questions for this ticket.
assigned Read only boolean Whether the ticket has been assigned to an individual's email address
company_name string The company name of the attendee.
consented_at Read only datetime The date the attendee consented to providing their information.
created_at Read only datetime The date the ticket was created.
discount_code_used Read only string The code of DiscountCode used when purchasing.
email string The email address of the attendee.
first_name string The first name of the attendee.
id Read only integer The identifier of the ticket.
last_name string The last name of the attendee.
metadata object Metadata about the attendee.
name Read only string The full name of the attendee.
number Read only integer Default: Starts at 1 and counts up with each ticket registered.
phone_number string The phone number of the attendee.
price decimal The price paid for this ticket without any upgrades.
price_less_tax Read only decimal The net price paid for this ticket minus any tax.
reference Read only string Default: The order reference plus the index of the ticket in that order e.g. AXBY-1.
registration Read only object The Registration attached to the ticket.
registration_id Read only integer The id of the Registration this ticket was created from.
registration_slug Read only string The slug attribute of the attached Registration
release Read only object The Release attached to the ticket.
release_id string The id of the Release attached to the ticket.
release_slug Read only string The slug of the attached Release.
release_title Read only string The title of the attached Release.
responses Read only object The answer to each Question attached to the ticket. Format: A hash of answers, keyed by Question slug e.g.
{ "t-shirt-size": "Medium" }
slug Read only string A human friendly string used in the URL.
state Read only integer new, complete, incomplete, reminder, void. Default: new.
tags string A comma separated list of tags for the ticket.
temporary Read only boolean Is 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: false.
test_mode Read only boolean Default: true if test mode is enabled for you or for your entire event, otherwise false.
total_paid Read only decimal The gross price paid for this ticket including any upgrades
total_paid_less_tax Read only decimal The net price paid including upgrades.
total_tax_paid Read only decimal The tax paid for this ticket.
updated_at Read only datetime The date the ticket was last updated.
upgrade_ids array An array of the IDs of Upgrade attached to the release.
upgrade_summary Read only object

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": 3068931,
      "slug": "ti_dhlR2CSzh59ZLht5ELPkxjg",
      "company_name": "",
      "email": "john@example.com",
      "metadata": {},
      "first_name": "John",
      "last_name": "Smith",
      "name": "John Smith",
      "number": null,
      "phone_number": "",
      "price": "0.0",
      "reference": "ZBRE-1",
      "state": "complete",
      "test_mode": true,
      "registration_id": 3509397,
      "release_id": 1105525,
      "consented_at": null,
      "discount_code_used": null,
      "created_at": "2018-11-12T13:35:44.000+00:00",
      "updated_at": "2018-11-12T13:35:44.000+00:00",
      "responses": null,
      "assigned": true,
      "price_less_tax": "0.0",
      "total_paid": "0.0",
      "total_tax_paid": "0.0",
      "total_paid_less_tax": "0.0",
      "tags": null,
      "upgrade_ids": [],
      "upgrade_summary": {},
      "registration_slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
      "release_slug": "coffee-brewing",
      "release_title": "Coffee Brewing",
      "registration": {
        ...
      },
      "release": {
        ...
      }
    }
  ],
  "meta": {
    "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": [
      "void"
    ],
    "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"
      }
    },
    "filter_options": {
      "types": [
        {
          "label": "Added manually",
          "value": "manual"
        },
        {
          "label": "Ordered by customer",
          "value": "standard"
        }
      ],
      "release_ids": [
        {
          "label": "Coffee Brewing",
          "value": "coffee-brewing"
        },
        {
          "label": "Tea Brewing",
          "value": "tea-brewing"
        }
      ],
      "activity_ids": [
        {
          "label": "Blah",
          "value": "1019160"
        },
        {
          "label": "Blah Copy",
          "value": "1019161"
        }
      ],
      "upgrade_ids": [],
      "sections": {
        "states": {
          "label": "Status",
          "open": false
        },
        "types": {
          "label": "Type",
          "open": false
        },
        "release_ids": {
          "label": "Tickets",
          "open": false
        },
        "activity_ids": {
          "label": "Activities",
          "open": false
        },
        "upgrade_ids": {
          "label": "Upgrades",
          "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"
        }
      ],
      "selected_states": [
        "complete",
        "incomplete",
        "unassigned",
        "changes_locked",
        "changes_allowed"
      ]
    }
  }
}

Retrieves all Tickets for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/tickets

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:

Filtering

You can filter which tickets you get back too. For instance, to only get incomplete or unassigned tickets:

?search[states][]=incomplete&search[states][]=unassigned

Possible states are:

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.

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.

The list excludes archived tickets by default. If you select this state then it also includes archived tickets as well as non-archived tickets.

Or you can filter by type of ticket:

?search[types][]=manual

Possible types are:

Or by release:

?search[release_ids][]=early-bird

where "early-bird" is the release slug.

Or by activity:

?search[activity_ids][]=1025351

where "1025351" is the activity id.

Or 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:

And you can do that on the following attributes

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.

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": 3068931,
    "slug": "ti_dhlR2CSzh59ZLht5ELPkxjg",
    "company_name": "",
    "email": "john@example.com",
    "metadata": {},
    "first_name": "John",
    "last_name": "Smith",
    "name": "John Smith",
    "number": null,
    "phone_number": "",
    "price": "0.0",
    "reference": "ZBRE-1",
    "state": "complete",
    "test_mode": true,
    "registration_id": 3509397,
    "release_id": 1105525,
    "consented_at": null,
    "discount_code_used": null,
    "created_at": "2018-11-12T13:35:44.000+00:00",
    "updated_at": "2018-11-12T13:35:44.000+00:00",
    "responses": null,
    "assigned": true,
    "price_less_tax": "0.0",
    "total_paid": "0.0",
    "total_tax_paid": "0.0",
    "total_paid_less_tax": "0.0",
    "tags": null,
    "upgrade_ids": [],
    "upgrade_summary": {},
    "registration_slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
    "release_slug": "coffee-brewing",
    "release_title": "Coffee Brewing",
    "registration": {
      ...
    },
    "release": {
      ...
    },
    "answers": []
  }
}

Retrieves a Ticket for the given Event.

GET https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug

Create a Ticket

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"ticket":{"release_id":"coffee-brewing","first_name":"Jane","last_name":"Doe"}}'
{
  "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": [],
    "upgrade_summary": {},
    "registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
    "release_slug": "coffee-brewing",
    "release_title": "Coffee Brewing",
    "registration": {
      ...
    },
    "release": {
      ...
    },
    "answers": []
  }
}

Create a new Ticket belonging to the given Event.

POST https://api.tito.io/v3/:account_slug/:event_slug/tickets

Parameters

Parameter Type Description
release_id Required string The id of the Release attached to the ticket.
answers array An array of Answers to questions for this ticket.
company_name string The company name of the attendee.
email string The email address of the attendee.
first_name string The first name of the attendee.
last_name string The last name of the attendee.
metadata object Metadata about the attendee.
phone_number string The phone number of the attendee.
price decimal The price paid for this ticket without any upgrades.
tags string A comma separated list of tags for the ticket.
upgrade_ids array An array of the IDs of Upgrade attached to the release.

Update a Ticket

curl --request PATCH \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-type: application/json' \
  --data '{"ticket":{"last_name":"Smith"}}'
{
  "ticket": {
    "_type": "ticket",
    "id": 3068931,
    "slug": "ti_dhlR2CSzh59ZLht5ELPkxjg",
    "company_name": "",
    "email": "john@example.com",
    "metadata": {},
    "first_name": "John",
    "last_name": "Smith",
    "name": "John Smith",
    "number": null,
    "phone_number": "",
    "price": "0.0",
    "reference": "ZBRE-1",
    "state": "complete",
    "test_mode": true,
    "registration_id": 3509397,
    "release_id": 1105525,
    "consented_at": null,
    "discount_code_used": null,
    "created_at": "2018-11-12T13:35:44.000+00:00",
    "updated_at": "2018-11-12T13:35:44.000+00:00",
    "responses": null,
    "assigned": true,
    "price_less_tax": "0.0",
    "total_paid": "0.0",
    "total_tax_paid": "0.0",
    "total_paid_less_tax": "0.0",
    "tags": null,
    "upgrade_ids": [],
    "upgrade_summary": {},
    "registration_slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
    "release_slug": "coffee-brewing",
    "release_title": "Coffee Brewing",
    "registration": {
      ...
    },
    "release": {
      ...
    },
    "answers": []
  }
}

Update a Ticket belonging to the given Event.

PATCH https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug

Parameters

Parameter Type Description
release_id Required string The id of the Release attached to the ticket.
answers array An array of Answers to questions for this ticket.
company_name string The company name of the attendee.
email string The email address of the attendee.
first_name string The first name of the attendee.
last_name string The last name of the attendee.
metadata object Metadata about the attendee.
phone_number string The phone number of the attendee.
price decimal The price paid for this ticket without any upgrades.
tags string A comma separated list of tags for the ticket.
upgrade_ids array An array of the IDs of Upgrade attached to the release.

Reassign a Ticket

curl --request POST \
  --url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/reassignments' \
  --header 'Authorization: Token token=YOUR-API-TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"reassignment":{"email":"jane@example.com","first_name":"Jane","last_name":"Smith","delete_answers":true}}'
{
  "ticket": {
    "_type": "ticket",
    "id": 3068932,
    "slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
    "company_name": null,
    "email": null,
    "metadata": {},
    "first_name": "Jane",
    "last_name": "Doe",
    "name": "Jane Doe",
    "number": null,
    "phone_number": null,
    "price": "0.0",
    "reference": "PNGU-1",
    "state": "complete",
    "test_mode": true,
    "registration_id": 3509398,
    "release_id": 1105525,
    "consented_at": null,
    "discount_code_used": null,
    "created_at": "2018-11-12T13:54:00.000+00:00",
    "updated_at": "2018-11-12T13:54:00.000+00:00",
    "responses": null,
    "assigned": false,
    "price_less_tax": "0.0",
    "total_paid": "0.0",
    "total_tax_paid": "0.0",
    "total_paid_less_tax": "0.0",
    "tags": null,
    "upgrade_ids": [],
    "upgrade_summary": {},
    "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 https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/reassignments

Parameters

Parameter Type Description
email Required string The email of the attendee.
delete_answers boolean Whether to delete the answers made by the original attendee. Defaults to false.
first_name string The first name of the attendee.
last_name string The last name of the attendee.

Emails Sent

The following people receive an email after a reassignment:

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": [],
      "upgrade_summary": {},
      "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 https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/void

Parameters

Parameter Type Description
resell boolean Whether the ticket will become available for sale after it is voided

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.

Errors

{
  "errors": {
    "title": [
      "can't be blank"
    ]
  }
}

The Tito API uses conventional HTTP response codes to indicate errors, and includes more detailed information on the exact nature of an error in the HTTP response.

For example, if a resource requires the title attribute to be present there will be an errors key in the response with subkey of title containing an array of errors.

HTTP Status Codes

Code Meaning
200 OK All is well.
201 Created Your request has been fulfilled and has resulted in one or more new resources being created.
204 No Content Your request has been fulfilled and that there is no additional content to send in the response payload body. e.g. deleting a resource.
401 Unauthorized Your request is not authenticated. See the Authentication Errors section for more information.
404 Page Not Found The endpoint requested does not exist.
422 Unprocessable Entity The resource couldn't be created or updated due to a validation error. Please see the response body for more information.
429 Too Many Requests Your application is exceeding its rate limit. Slow down, pal!
500 Internal Server Error Something is wrong on our end.
504 Gateway Timeout Something has timed out on our end.

Authentication Errors

{
  "errors": {
    "api_token": [
      "is blank"
    ]
  },
  "hint": "You can retrieve your API token at https://id.tito.io. Please see the API docs for further information."
}

If a request cannot be authenticated the Tito API returns the standard 401 unauthorized HTTP status code and includes more detailed information on the exact nature of the authentication error in the HTTP response.

The Tito API includes a machine readable errors key. It also has a hint key containing human friendly information on how to resolve your authentication error.

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.

Types

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.started Fired when a registration is started e.g. after they have selected tickets but before they have filled in any details.
registration.filling Fired as soon as the person registering starts filling in details like name, email, etc.
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": 3068966,
  "name": "John Smith",
  "first_name": "John",
  "last_name": "Smith",
  "email": "john@example.com",
  "phone_number": null,
  "company_name": "",
  "reference": "E9IM-1",
  "price": "0.0",
  "tax": "0.0",
  "price_less_tax": "0.0",
  "slug": "d01jGQ3RInVjEh6Imhwg9MA",
  "state_name": null,
  "gender": "male",
  "total_paid": "0.0",
  "total_paid_less_tax": "0.0",
  "updated_at": "2019-08-05T10:23:24.000Z",
  "release_price": null,
  "discount_code_used": "",
  "url": "https://ti.to/biscuit-box/caramel/tickets/d01jGQ3RInVjEh6Imhwg9MA",
  "admin_url": "https://ti.to/biscuit-box/caramel/admin/tickets/d01jGQ3RInVjEh6Imhwg9MA",
  "release_title": "Early Bird",
  "release_slug": "early-bird",
  "release_id": 1105634,
  "release": {
    "id": 1105634,
    "title": "Early Bird",
    "slug": "early-bird",
    "metadata": ""
  },
  "custom": null,
  "registration_id": 3509443,
  "registration_slug": "dp6I7t2upnnXrka6GsXlw4A",
  "metadata": null,
  "answers": [
    {
      "id": 8147728,
      "question_id": 1041973,
      "ticket_id": 3068966,
      "response": "Vegan",
      "created_at": "2019-08-05T10:23:24.000Z",
      "updated_at": "2019-08-05T10:23:24.000Z",
      "position": 1,
      "temporary_ticket_id": null,
      "survey_response_id": null,
      "file": {
        "url": null
      },
      "test_mode": true
    }
  ],
  "responses": {
    "do-you-have-any-dietary-requirements": "Vegan"
  },
  "upgrades": [

  ],
  "upgrade_ids": [

  ],
  "registration": {
    "id": 3509443,
    "slug": "dp6I7t2upnnXrka6GsXlw4A",
    "url": "https://ti.to/registrations/dp6I7t2upnnXrka6GsXlw4A",
    "admin_url": "https://ti.to/biscuit-box/caramel/admin/registrations/dp6I7t2upnnXrka6GsXlw4A",
    "total": "0.0",
    "currency": "USD",
    "payment_reference": null,
    "source": null,
    "name": "John Smith",
    "email": "john@example.com",
    "receipt": {
      "total": "0.0",
      "tax": 0,
      "payment_provider": null,
      "paid": true,
      "receipt_lines": [
        {
          "total": "0.0",
          "quantity": 1,
          "tax": 0
        }
      ]
    }
  },
  "event": {
    "_type": "event",
    "id": 1058621,
    "title": "caramel",
    "url": "https://ti.to/biscuit-box/caramel",
    "account_slug": "biscuit-box",
    "slug": "caramel",
    "start_date": null,
    "end_date": null,
    "metadata": null
  }
}

For webhooks that have the webhook type of ticket.* the following JSON payload will be sent.

Registration Payload

{
  "_type": "registration",
  "id": 3509443,
  "webhook_text": "John Smith <john@example.com> registered 1 ticket https://ti.to/biscuit-box/caramel/registrations/dp6I7t2upnnXrka6GsXlw4A",
  "slug": "dp6I7t2upnnXrka6GsXlw4A",
  "reference": "E9IM",
  "total": "0.0",
  "total_less_tax": "0.0",
  "name": "John Smith",
  "first_name": "John",
  "last_name": "Smith",
  "email": "john@example.com",
  "phone_number": "",
  "company_name": null,
  "discount_code": null,
  "payment_reference": null,
  "created_at": "2019-08-05T10:22:10.000Z",
  "completed_at": "2019-08-05T10:23:09.000Z",
  "completed_date": "2019-08-05",
  "metadata": null,
  "updated_at": "2019-08-05T10:23:26.000Z",
  "locale": "en",
  "created_date": "2019-08-05",
  "currency": "USD",
  "custom": null,
  "paid": true,
  "line_items": [
    {
      "id": 3800660,
      "release_slug": "early-bird",
      "release_id": 1105634,
      "release_title": "Early Bird",
      "release_price": null,
      "release": {
        "slug": "early-bird",
        "title": "Early Bird",
        "price": null,
        "metadata": ""
      },
      "price": "0.0",
      "title": "Early Bird",
      "quantity": 1,
      "total": "0.0",
      "currency": "USD"
    }
  ],
  "quantities": {
    "early-bird": {
      "release": "Early Bird",
      "quantity": 1
    }
  },
  "tickets": [
    {
      "reference": "E9IM-1",
      "slug": "d01jGQ3RInVjEh6Imhwg9MA",
      "price": "0.0",
      "price_less_tax": "0.0",
      "total_paid": "0.0",
      "total_paid_less_tax": "0.0",
      "release_id": 1105634,
      "release_slug": "early-bird",
      "release_title": "Early Bird",
      "release": {
        "id": 1105634,
        "slug": "early-bird",
        "title": "Early Bird",
        "price": null,
        "metadata": ""
      },
      "name": "John Smith",
      "first_name": "John",
      "last_name": "Smith",
      "company_name": "",
      "email": "john@example.com",
      "url": "https://ti,to/biscuit-box/caramel/tickets/d01jGQ3RInVjEh6Imhwg9MA",
      "admin_url": "https://ti.to/biscuit-box/caramel/admin/tickets/d01jGQ3RInVjEh6Imhwg9MA",
      "responses": {
        "do-you-have-any-dietary-requirements": "Vegan"
      },
      "answers": [
        {
          "question": {
            "id": 1041973,
            "title": "Do you have any dietary requirements?",
            "description": null
          },
          "humanized_response": "Vegan",
          "response": "Vegan",
          "file": null
        }
      ]
    }
  ],
  "source": null,
  "payment": null,
  "receipt": {
    "number": "0000001",
    "total": "0.0",
    "tax": 0,
    "total_less_tax": "0.0",
    "payment_provider": null,
    "payment_reference": null,
    "paid": true
  },
  "billing_address": null,
  "event": {
    "_type": "event",
    "id": 1058621,
    "title": "caramel",
    "url": "https://ti.to/biscuit-box/caramel",
    "account_slug": "biscuit-box",
    "slug": "caramel",
    "start_date": null,
    "end_date": null,
    "metadata": null
  }
}

For webhooks that have the webhook type of registration.* the following JSON payload will be sent.

Checkin Payload

{
  "id": 3068963,
  "slug": "ti_eZaOm33Y1rnICcLIpeTuESg",
  "name": "John Smith",
  "company_name": "Beanster Ltd",
  "first_name": "John",
  "last_name": "Smith",
  "release_title": "Coffee Brewing",
  "email": "john.smith@example.com",
  "reference": "FITD-1",
  "registration_reference": "FITD",
  "checked_in": true,
  "checked_in_at": "2019-08-16T14:14:21.000Z",
  "checkin_list": {
    "slug": "chk_el1ClfZxL8We2DHKtUzzoeg",
    "title": "Brew Master Check-In List"
  },
  "checkin_uuid": "4521459e-1cec-49e8-90fe-afadcc364f02",
  "custom": null,
  "event": {
    "slug": "2018",
    "title": "2018-2"
  },
  "answers": [
    {
      "question": "What is your favourite coffee?",
      "response": "Latte"
    }
  ]
}

For webhooks that have the webhook type of checkin.* the following JSON payload will be sent.

Verifying the payload

key = 'YOUR EVENT SECURITY TOKEN'
hash = OpenSSL::Digest.new('sha256')
data = 'THE WEBHOOK REQUEST'

Base64.encode64(OpenSSL::HMAC.digest(hash, key, data)).strip

Each payload comes with a signed HMAC signature so that you can verify the origin of the webhook request.

In Customize / Webhooks, you’ll find a shared security token. This is used to sign the payload.

The security token is used as a key to sign the payload data with an HMAC key.

The HMAC key is your security token, the HMAC digest is SHA2, and the data is the raw payload JSON that is sent. The key is sent Base64 encoded via the Tito-Signature HTTP header.

If you’re using Ruby, for example, you can verify the authenticity of your payload with the code opposite.

Developing Locally

When you are developing your application locally you'll need to expose your local development environment to the Internet, so that Tito can send you webhooks and your application can process them.

Using Serveo

You can expose your local environment to the internet using Serveo

To expose your local environment to the internet:

ssh -R 80:localhost:4567 serveo.net where 4567 is the port number your application is running on.

You should see a line that looks something like this:

Forwarding HTTP traffic from https://duncan.serveo.net

Copy and paste that *.serveo.net URL into your browser. Notice you can now access your application using that URL.

If your application listens for webhooks from Tito on http://localhost:4567/webhooks/ you can create a webhook endpoint within Tito with the url https://duncan.serveo.net/webhooks/.